add switch map logic

This commit is contained in:
wangcongtao
2020-06-17 17:56:43 +08:00
parent a725526c2e
commit 96a7af2ca2
25 changed files with 218 additions and 66 deletions

2
.idea/misc.xml generated
View File

@@ -6,7 +6,7 @@
<option name="priority" value="Medium" />
<option name="excludeFilter" value="" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="SuppressionsComponent">

View File

@@ -89,6 +89,7 @@ ext {
mogoutils : "com.mogo.commons:mogo-utils:${MOGO_UTILS_VERSION}",
mapamap : "com.mogo.map:map-amap:${MAP_AMAP_VERSION}",
mapautomap : "com.mogo.map:map-autonavi:${MAP_AUTONAVI_VERSION}",
mapcustom : "com.mogo.map:map-custom:${MAP_CUSTOM_VERSION}",
mogomap : "com.mogo.map:mogo-map:${MOGO_MAP_VERSION}",
mogomapapi : "com.mogo.map:mogo-map-api:${MOGO_MAP_API_VERSION}",
modulecommon : "com.mogo.module:module-common:${MOGO_MODULE_COMMON_VERSION}",

View File

@@ -22,6 +22,7 @@ import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.NetConfig;
import com.mogo.utils.storage.SharedPrefsMgr;
import com.zhidao.account.sdk.AccountClientManager;
import com.zhidao.account.sdk.callback.TicketInfoCallback;
import com.zhidao.account.sdk.network.NetEnvironManager;
@@ -80,6 +81,7 @@ public class AbsMogoApplication extends Application {
txt.setText( message );
return contentView;
} ) );
DebugConfig.setUseCustomMap( SharedPrefsMgr.getInstance( this ).getBoolean( "useCustomMap", false ) );
}
/**

View File

@@ -151,4 +151,14 @@ public class DebugConfig {
public static void setRequestOnlineCarData( boolean sRequestOnlineCarData ) {
DebugConfig.sRequestOnlineCarData = sRequestOnlineCarData;
}
public static boolean sUseCustomMap = true;
public static boolean isUseCustomMap() {
return sUseCustomMap;
}
public static void setUseCustomMap( boolean sUseCustomMap ) {
DebugConfig.sUseCustomMap = sUseCustomMap;
}
}

View File

@@ -30,6 +30,7 @@ RELEASE=false
MOGO_COMMONS_VERSION=1.2.1
MOGO_UTILS_VERSION=1.2.1
MAP_AMAP_VERSION=1.2.1
MAP_CUSTOM_VERSION=1.2.1
MAP_AUTONAVI_VERSION=1.2.1
MOGO_MAP_VERSION=1.2.1
MOGO_MAP_API_VERSION=1.2.1

View File

@@ -39,13 +39,10 @@ dependencies {
implementation rootProject.ext.dependencies.mogoutils
implementation rootProject.ext.dependencies.mogomapapi
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogomapapi
} else {
implementation project(':foudations:mogo-utils')
implementation project(':libraries:mogo-map-api')
implementation project(':foudations:mogo-commons')
implementation project(':services:mogo-service-api')
}
}

View File

@@ -7,6 +7,7 @@ import androidx.annotation.Nullable;
import com.amap.api.navi.AMapNaviView;
import com.mogo.map.IMogoMapView;
import com.mogo.map.IMogoMapViewCreator;
import com.mogo.map.MogoBaseMapView;
/**
@@ -15,22 +16,10 @@ import com.mogo.map.MogoBaseMapView;
* <p>
* 描述
*/
public class AMapBaseMapView extends MogoBaseMapView {
public AMapBaseMapView( Context context ) {
super( context );
}
public AMapBaseMapView( Context context, @Nullable AttributeSet attrs ) {
super( context, attrs );
}
public AMapBaseMapView( Context context, @Nullable AttributeSet attrs, int defStyleAttr ) {
super( context, attrs, defStyleAttr );
}
public class AMapBaseMapView implements IMogoMapViewCreator {
@Override
protected IMogoMapView createMapView( Context context ) {
public IMogoMapView create( Context context ) {
return new AMapNaviViewWrapper( new AMapNaviView( context ) );
}
}

View File

@@ -44,13 +44,10 @@ dependencies {
implementation rootProject.ext.dependencies.mogoutils
implementation rootProject.ext.dependencies.mogomapapi
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogomapapi
} else {
implementation project(':foudations:mogo-utils')
implementation project(':libraries:mogo-map-api')
implementation project(':foudations:mogo-commons')
implementation project(':services:mogo-service-api')
}
api 'com.zhidaoauto.machine:map:1.0.0-SNAPSHOT-54'

View File

@@ -1,3 +1,3 @@
GROUP=com.mogo.map
POM_ARTIFACT_ID=map-amap
POM_ARTIFACT_ID=map-custom
VERSION_CODE=1

View File

@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.map.impl.amap">
package="com.mogo.map.impl.custom">
<application>

View File

@@ -1,13 +1,10 @@
package com.mogo.map.impl.custom;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import androidx.annotation.Nullable;
import com.mogo.map.IMogoMapView;
import com.mogo.map.MogoBaseMapView;
import com.mogo.map.IMogoMapViewCreator;
import com.zhidaoauto.map.sdk.open.MapAutoApi;
import com.zhidaoauto.map.sdk.open.MapParams;
import com.zhidaoauto.map.sdk.open.view.MapAutoView;
@@ -18,35 +15,23 @@ import com.zhidaoauto.map.sdk.open.view.MapAutoView;
* <p>
* 描述
*/
public class AMapBaseMapView extends MogoBaseMapView {
public class AMapBaseMapView implements IMogoMapViewCreator {
private static final String TAG = "AMapBaseMapView";
public AMapBaseMapView( Context context ) {
super( context );
}
public AMapBaseMapView( Context context, @Nullable AttributeSet attrs ) {
super( context, attrs );
}
public AMapBaseMapView( Context context, @Nullable AttributeSet attrs, int defStyleAttr ) {
super( context, attrs, defStyleAttr );
}
private MapAutoView mapAutoView;
@Override
protected IMogoMapView createMapView( Context context ) {
Log.i(TAG, "autoop--createMapView: ");
if(mapAutoView == null){
Log.i(TAG, "autoop--createMapView: mapAutoView is null create");
MapAutoApi.INSTANCE.init(MapParams.Companion.init().setDebugMode(false)
.setCoordinateType(MapParams.COORDINATETYPE_GCJ02)
.setPerspectiveMode(MapParams.MAP_PERSPECTIVE_2D)
.setStyleMode(MapParams.MAP_STYLE_NIGHT));
mapAutoView = new MapAutoView( context );
public IMogoMapView create( Context context ) {
Log.i( TAG, "autoop--createMapView: " );
if ( mapAutoView == null ) {
Log.i( TAG, "autoop--createMapView: mapAutoView is null create" );
MapAutoApi.INSTANCE.init( MapParams.Companion.init().setDebugMode( false )
.setCoordinateType( MapParams.COORDINATETYPE_GCJ02 )
.setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D )
.setStyleMode( MapParams.MAP_STYLE_NIGHT ) );
mapAutoView = new MapAutoView( context );
}
return new AMapViewWrapper(mapAutoView);
return new AMapViewWrapper( mapAutoView );
}
}

View File

@@ -180,7 +180,7 @@ public class AMapViewWrapper implements IMogoMapView, IMogoMapUIController, Loca
if (mMapView != null) {
mMapView.onCreate(bundle);
Logger.d(TAG, "map onCreate");
// initMapView();
initMapView();
initListeners();
// initMyLocation();
}

View File

@@ -0,0 +1,45 @@
package com.mogo.map.impl.custom.search;
import android.content.Context;
import com.mogo.map.MogoLatLng;
import com.mogo.map.search.drive.IMogoRoadSearch;
import com.mogo.map.search.drive.IMogoRoadSearchListener;
import com.mogo.map.search.drive.MogoRoadSearchQuery;
import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
* @since 2020/6/1
* <p>
* 描述
*/
public class RoadSearchClient implements IMogoRoadSearch {
private static final String TAG = "DriveSearchClient";
private IMogoRoadSearchListener mListener;
@Override
public void searchRoadPath( Context context,
MogoRoadSearchQuery query ) {
}
private boolean checkPoint( MogoLatLng latLng, String msg ) {
if ( latLng == null ) {
Logger.e( TAG, msg + " is null" );
return false;
}
if ( latLng.lat <= 0d || latLng.lon <= 0d ) {
Logger.e( TAG, msg + " is not a valid " );
return false;
}
return true;
}
@Override
public void setRoadPathSearchListener( IMogoRoadSearchListener listener ) {
mListener = listener;
}
}

View File

@@ -0,0 +1,14 @@
package com.mogo.map;
import android.content.Context;
/**
* @author congtaowang
* @since 2019-12-18
* <p>
* 地图抽象
*/
public interface IMogoMapViewCreator {
IMogoMapView create( Context context);
}

View File

@@ -29,12 +29,14 @@ dependencies {
implementation rootProject.ext.dependencies.mogoutils
implementation rootProject.ext.dependencies.mogomapapi
api rootProject.ext.dependencies.mapamap
api rootProject.ext.dependencies.mapcustom
api rootProject.ext.dependencies.mapautomap
implementation rootProject.ext.dependencies.mogocommons
} else {
implementation project(':foudations:mogo-utils')
implementation project(':libraries:mogo-map-api')
api project(':libraries:map-amap')
api project(':libraries:map-custom')
api project(':libraries:map-autonavi')
implementation project(':foudations:mogo-commons')
}

View File

@@ -24,7 +24,7 @@ public class MogoGeoSearch implements IMogoGeoSearch {
private IMogoGeoSearch mDelegate;
public MogoGeoSearch( Context context ) {
mDelegate = new GeocodeSearchClient( context );
mDelegate = MogoMapDelegateFactory.getGeoSearchDelegate( context );
}
@Override

View File

@@ -18,7 +18,7 @@ public class MogoInputtipsSearch implements IMogoInputtipsSearch {
private IMogoInputtipsSearch mDelegate;
public MogoInputtipsSearch( Context context, MogoInputtipsQuery query ) {
mDelegate = new InputtipsSearch( context, query );
mDelegate = MogoMapDelegateFactory.getInputtipsSearchDelegate( context, query );
}
@Override

View File

@@ -17,7 +17,7 @@ public class MogoLocationClient implements IMogoLocationClient {
private static volatile MogoLocationClient sInstance;
public MogoLocationClient( Context context ) {
mDelegate = new ALocationClient( context );
mDelegate = MogoMapDelegateFactory.getLocationClientDelegate( context );
}
public static MogoLocationClient getInstance( Context context ) {

View File

@@ -0,0 +1,104 @@
package com.mogo.map;
import android.content.Context;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.impl.amap.AMapBaseMapView;
import com.mogo.map.impl.amap.location.ALocationClient;
import com.mogo.map.impl.amap.navi.NaviClient;
import com.mogo.map.impl.amap.search.GeocodeSearchClient;
import com.mogo.map.impl.amap.search.InputtipsSearch;
import com.mogo.map.impl.amap.search.PoiSearchClient;
import com.mogo.map.impl.amap.search.RoadSearchClient;
import com.mogo.map.impl.amap.uicontroller.AMapUIController;
import com.mogo.map.impl.automap.navi.AutoNaviClient;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.search.drive.IMogoRoadSearch;
import com.mogo.map.search.geo.IMogoGeoSearch;
import com.mogo.map.search.inputtips.IMogoInputtipsSearch;
import com.mogo.map.search.inputtips.query.MogoInputtipsQuery;
import com.mogo.map.search.poisearch.IMogoPoiSearch;
import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.utils.AppUtils;
import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
* @since 2020/6/17
* <p>
* 描述
*/
class MogoMapDelegateFactory {
private static final String TAG = "MogoMapDelegateFactory";
public static IMogoGeoSearch getGeoSearchDelegate( Context context ) {
if ( DebugConfig.isUseCustomMap() ) {
Logger.d( TAG, "use custom IMogoGeoSearch" );
return new com.mogo.map.impl.custom.search.GeocodeSearchClient( context );
}
return new GeocodeSearchClient( context );
}
public static IMogoInputtipsSearch getInputtipsSearchDelegate( Context context, MogoInputtipsQuery query ) {
if ( DebugConfig.isUseCustomMap() ) {
Logger.d( TAG, "use custom IMogoInputtipsSearch" );
return new com.mogo.map.impl.custom.search.InputtipsSearch( context, query );
}
return new InputtipsSearch( context, query );
}
public static IMogoLocationClient getLocationClientDelegate( Context context ) {
if ( DebugConfig.isUseCustomMap() ) {
Logger.d( TAG, "use custom IMogoLocationClient" );
return new com.mogo.map.impl.custom.location.ALocationClient( context );
}
return new ALocationClient( context );
}
public static IMogoMapUIController getMapUIControllerDelegate() {
if ( DebugConfig.isUseCustomMap() ) {
Logger.d( TAG, "use custom IMogoMapUIController" );
return com.mogo.map.impl.custom.uicontroller.AMapUIController.getInstance();
}
return AMapUIController.getInstance();
}
public static IMogoMapViewCreator getMapViewCreatorDelegate() {
if ( DebugConfig.isUseCustomMap() ) {
Logger.d( TAG, "use custom IMogoMapViewCreator" );
return new com.mogo.map.impl.custom.AMapBaseMapView();
}
return new AMapBaseMapView();
}
public static IMogoNavi getNaviDelegate( Context context ) {
if ( AppUtils.isAppInstalled( context, "com.autonavi.amapauto" ) ) {
return AutoNaviClient.getInstance( context );
} else {
if ( DebugConfig.isUseCustomMap() ) {
Logger.d( TAG, "use custom IMogoNavi" );
return com.mogo.map.impl.custom.navi.NaviClient.getInstance( context );
}
return NaviClient.getInstance( context );
}
}
public static IMogoPoiSearch getPoiSearchClientDelegate( Context context, MogoPoiSearchQuery query ) {
if ( DebugConfig.isUseCustomMap() ) {
Logger.d( TAG, "use custom IMogoPoiSearch" );
return new com.mogo.map.impl.custom.search.PoiSearchClient( context, query );
}
return new PoiSearchClient( context, query );
}
public static IMogoRoadSearch getRoadSearchDelegate() {
if ( DebugConfig.isUseCustomMap() ) {
Logger.d( TAG, "use custom IMogoRoadSearch" );
return new com.mogo.map.impl.custom.search.RoadSearchClient();
}
return new RoadSearchClient();
}
}

View File

@@ -29,7 +29,7 @@ public class MogoMapUIController implements IMogoMapUIController {
private static volatile MogoMapUIController sInstance;
private MogoMapUIController() {
mDelegate = AMapUIController.getInstance();
mDelegate = MogoMapDelegateFactory.getMapUIControllerDelegate();
}
public static MogoMapUIController getInstance() {

View File

@@ -15,7 +15,7 @@ import com.mogo.utils.logger.Logger;
* <p>
* 地图实例
*/
public class MogoMapView extends AMapBaseMapView implements ILifeCycle {
public class MogoMapView extends MogoBaseMapView implements ILifeCycle {
private static final String TAG = "MogoMapView";
public MogoMapView( Context context ) {
@@ -30,6 +30,11 @@ public class MogoMapView extends AMapBaseMapView implements ILifeCycle {
super( context, attrs, defStyleAttr );
}
@Override
protected IMogoMapView createMapView( Context context ) {
return MogoMapDelegateFactory.getMapViewCreatorDelegate().create( context );
}
@Override
public IMogoMap getMap() {
return super.getMap();

View File

@@ -30,11 +30,7 @@ public class MogoNavi implements IMogoNavi {
private static volatile MogoNavi sInstance;
private MogoNavi( Context context ) {
if ( AppUtils.isAppInstalled( context, "com.autonavi.amapauto" ) ) {
mDelegate = AutoNaviClient.getInstance( context );
} else {
mDelegate = NaviClient.getInstance( context );
}
mDelegate = MogoMapDelegateFactory.getNaviDelegate( context );
}
public static MogoNavi getInstance( Context context ) {

View File

@@ -22,7 +22,7 @@ public class MogoPoiSearch implements IMogoPoiSearch {
private IMogoPoiSearch mDelegate;
public MogoPoiSearch( Context context, MogoPoiSearchQuery query ) {
mDelegate = new PoiSearchClient( context, query );
mDelegate = MogoMapDelegateFactory.getPoiSearchClientDelegate( context, query );
}
@Override

View File

@@ -2,7 +2,6 @@ package com.mogo.map;
import android.content.Context;
import com.mogo.map.impl.amap.search.RoadSearchClient;
import com.mogo.map.search.drive.IMogoRoadSearch;
import com.mogo.map.search.drive.IMogoRoadSearchListener;
import com.mogo.map.search.drive.MogoRoadSearchQuery;
@@ -15,10 +14,10 @@ import com.mogo.map.search.drive.MogoRoadSearchQuery;
*/
public class MogoRoadSearch implements IMogoRoadSearch {
private RoadSearchClient mDelegate;
private IMogoRoadSearch mDelegate;
public MogoRoadSearch() {
mDelegate = new RoadSearchClient();
mDelegate = MogoMapDelegateFactory.getRoadSearchDelegate();
}
@Override

View File

@@ -29,6 +29,7 @@ import com.mogo.utils.TipToast;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import com.mogo.utils.storage.SharedPrefsMgr;
import java.util.ArrayList;
import java.util.List;
@@ -289,6 +290,10 @@ public class MockIntentHandler implements IntentHandler {
case 17:
DebugConfig.setRequestOnlineCarData( intent.getBooleanExtra( "status", true ) );
break;
case 18:
TipToast.shortTip( "设置完成,下次启动生效" );
SharedPrefsMgr.getInstance( context ).putBoolean( "useCustomMap", intent.getBooleanExtra( "useCustomMap", false ) );
break;
}
}