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

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