切换地图的逻辑修改

This commit is contained in:
wangcongtao
2020-10-25 11:08:46 +08:00
parent aafd2cd5db
commit 771e5eed13
44 changed files with 740 additions and 231 deletions

View File

@@ -157,8 +157,14 @@ public class EventDispatchCenter implements
this.mMapLoadedCallback = callback;
}
private boolean mIsMapLoaded = false;
@Override
public void onMapLoaded() {
if ( mIsMapLoaded ) {
return;
}
mIsMapLoaded = true;
if ( mMapLoadedCallback != null ) {
mMapLoadedCallback.run();
mMapLoadedCallback = null;

View File

@@ -1,5 +1,6 @@
package com.mogo.module.map;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -12,7 +13,9 @@ import com.mogo.map.IMogoUiSettings;
import com.mogo.map.MogoMapView;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.map.IMogoMapFrameController;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
@@ -24,7 +27,7 @@ import com.mogo.utils.logger.Logger;
* <p>
* 地图图层,地图操作都在这个图层完成
*/
public class MapFragment extends MvpFragment< MapView, MapPresenter > implements MapView {
public class MapFragment extends MvpFragment< MapView, MapPresenter > implements MapView, IMogoMapFrameController {
private static final String TAG = "MapFragment";
@@ -33,6 +36,8 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
private boolean mIsControllerByOthersStatus = false;
private boolean mIsFirstLoadCustomMap = true;
@Override
protected int getLayoutId() {
return R.layout.module_map_fragment_map;
@@ -40,6 +45,30 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
@Override
protected void initViews() {
MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().initDelegate( this );
}
@Override
public void initDelegate( IMogoMapFrameController controller ) {
// do not implement
}
@Override
public void changeTo2dMode() {
mMogoMapView.display2DMap( false, true );
}
@Override
public void changeToVRMode() {
mMogoMapView.displayVRMap( mIsFirstLoadCustomMap, true );
if ( mIsFirstLoadCustomMap ) {
mIsFirstLoadCustomMap = false;
}
}
@Override
public void init( Context context ) {
// do not implement
}
@Override
@@ -48,8 +77,10 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
mMogoMapView = findViewById( R.id.module_map_id_map );
mMogoMapView.onCreate( savedInstanceState );
mMogoMap = mMogoMapView.getMap();
mMogoMap.getUIController().showMyLocation( true );
mMogoMap.getUIController().recoverLockMode();// 启动锁车
if ( mMogoMap.getUIController() != null ) {
mMogoMap.getUIController().showMyLocation( true );
mMogoMap.getUIController().recoverLockMode();// 启动锁车
}
}
@NonNull
@@ -129,11 +160,18 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
uiSettings.setZoomControlsEnabled( false );
//设置双指缩放手势是否可用。
uiSettings.setZoomGesturesEnabled( true );
mMogoMap.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
if ( mMogoMap.getUIController() != null ) {
mMogoMap.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
}
}
}
}
@Override
public void destroy() {
MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().destroy();
}
@Override
public IMogoMapUIController getUIController() {
return mMogoMap.getUIController();
@@ -146,5 +184,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
mMogoMapView.onDestroy();
}
MapBroadCastHelper.getInstance( getContext() ).release();
destroy();
}
}

View File

@@ -0,0 +1,51 @@
package com.mogo.module.map;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.google.gson.internal.$Gson$Preconditions;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.map.IMogoMapFrameController;
public
/**
* @author congtaowang
* @since 2020/10/23
*
* 描述
*/
@Route( path = MogoServicePaths.PATH_MAP_FRAME_CONTROLLER )
class MapFrameController implements IMogoMapFrameController {
private IMogoMapFrameController mController;
@Override
public void initDelegate( IMogoMapFrameController controller ) {
mController = controller;
}
@Override
public void changeTo2dMode() {
if ( mController != null ) {
mController.changeTo2dMode();
}
}
@Override
public void changeToVRMode() {
if ( mController != null ) {
mController.changeToVRMode();
}
}
@Override
public void init( Context context ) {
}
@Override
public void destroy() {
mController = null;
}
}

View File

@@ -1,23 +0,0 @@
package com.mogo.module.service.autopilot;
import java.util.List;
public
/**
* @author congtaowang
* @since 2020/10/16
*
* 自动驾驶参数
*/
class AutoPilotParameters {
public AutoPilotLonLat startLatLon;
public List< AutoPilotLonLat > wayLatLons;
public AutoPilotLonLat endLatLon;
public float speedLimit;
public static class AutoPilotLonLat {
public double lat;
public double lon;
}
}

View File

@@ -2,6 +2,7 @@ package com.mogo.module.service.autopilot;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.service.adas.RemoteControlAutoPilotParameters;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.utils.logger.Logger;
@@ -22,21 +23,21 @@ class AutoPilotRemoteController {
private IMogoSocketManager mMogoSocketManager;
private IMogoOnMessageListener< AutoPilotParameters > mParametersListener = new IMogoOnMessageListener< AutoPilotParameters >() {
private IMogoOnMessageListener< RemoteControlAutoPilotParameters > mParametersListener = new IMogoOnMessageListener< RemoteControlAutoPilotParameters >() {
@Override
public Class< AutoPilotParameters > target() {
return AutoPilotParameters.class;
public Class< RemoteControlAutoPilotParameters > target() {
return RemoteControlAutoPilotParameters.class;
}
@Override
public void onMsgReceived( AutoPilotParameters obj ) {
public void onMsgReceived( RemoteControlAutoPilotParameters obj ) {
if ( obj == null ) {
Logger.e( TAG, "远端控制参数为null", new NullPointerException() );
return;
}
String json = GsonUtil.jsonFromObject( obj );
Logger.d( TAG, json );
MogoApisHandler.getInstance().getApis().getAdasControllerApi().aiCloudToAdasData( json );
MogoApisHandler.getInstance().getApis().getAdasControllerApi().aiCloudToAdasData( obj );
}
};

View File

@@ -24,6 +24,7 @@ import com.mogo.map.search.geo.IMogoGeoSearchListener;
import com.mogo.map.search.geo.MogoGeocodeResult;
import com.mogo.map.search.geo.MogoRegeocodeResult;
import com.mogo.map.search.geo.query.MogoRegeocodeQuery;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.dialog.WMDialog;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.MogoServiceProvider;
@@ -357,6 +358,14 @@ public class MockIntentHandler implements IntentHandler {
case 33:
AIAssist.getInstance( context ).speakTTSVoice( "庞帆说这个是一个 hard coding." );
break;
case 34:
int type = intent.getIntExtra( "type", 0 );
if ( type != 0 ) {
MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().changeToVRMode();
} else {
MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().changeTo2dMode();
}
break;
}
}