地图依赖重构

This commit is contained in:
wangcongtao
2020-12-13 11:04:44 +08:00
parent 6fee5deaca
commit 564b1356a1
59 changed files with 1033 additions and 626 deletions

View File

@@ -2,9 +2,7 @@ package com.mogo.map;
import android.content.Context;
import com.mogo.map.impl.amap.navi.AimlessClient;
import com.mogo.map.navi.IMogoAimless;
import com.mogo.map.navi.IMogoNavi;
/**
* @author donghongyu
@@ -18,15 +16,15 @@ public class MogoAimless implements IMogoAimless {
private static volatile MogoAimless sInstance;
private MogoAimless(Context context) {
mDelegate = AimlessClient.getInstance(context);
private MogoAimless( Context context ) {
mDelegate = MogoMapDelegateFactory.getAimless( context );
}
public static MogoAimless getInstance(Context context) {
if (sInstance == null) {
synchronized (MogoAimless.class) {
if (sInstance == null) {
sInstance = new MogoAimless(context);
public static MogoAimless getInstance( Context context ) {
if ( sInstance == null ) {
synchronized ( MogoAimless.class ) {
if ( sInstance == null ) {
sInstance = new MogoAimless( context );
}
}
}
@@ -39,22 +37,22 @@ public class MogoAimless implements IMogoAimless {
@Override
public void startAimlessMode() {
if (mDelegate != null) {
if ( mDelegate != null ) {
mDelegate.startAimlessMode();
}
}
@Override
public void stopAimlessMode() {
if (mDelegate != null) {
if ( mDelegate != null ) {
mDelegate.stopAimlessMode();
}
}
@Override
public void setAimlessModeStatus(boolean open) {
if (mDelegate != null) {
mDelegate.setAimlessModeStatus(open);
public void setAimlessModeStatus( boolean open ) {
if ( mDelegate != null ) {
mDelegate.setAimlessModeStatus( open );
}
}
}

View File

@@ -3,7 +3,6 @@ package com.mogo.map;
import android.content.Context;
import com.mogo.map.exception.MogoMapException;
import com.mogo.map.impl.amap.search.GeocodeSearchClient;
import com.mogo.map.search.geo.IMogoGeoSearch;
import com.mogo.map.search.geo.IMogoGeoSearchListener;
import com.mogo.map.search.geo.MogoGeocodeAddress;

View File

@@ -2,7 +2,6 @@ package com.mogo.map;
import android.content.Context;
import com.mogo.map.impl.amap.search.InputtipsSearch;
import com.mogo.map.search.inputtips.IMogoInputtipsListener;
import com.mogo.map.search.inputtips.IMogoInputtipsSearch;
import com.mogo.map.search.inputtips.query.MogoInputtipsQuery;

View File

@@ -2,8 +2,6 @@ package com.mogo.map;
import android.content.Context;
import com.mogo.map.impl.amap.location.ALocationClient;
import com.mogo.map.listener.MogoHosListenerRegister;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.location.MogoLocation;

View File

@@ -1,18 +1,12 @@
package com.mogo.map;
import android.content.Context;
import android.opengl.Visibility;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.debug.DebugConfig;
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.IMogoAimless;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.search.drive.IMogoRoadSearch;
import com.mogo.map.search.geo.IMogoGeoSearch;
@@ -20,9 +14,9 @@ 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.search.traffic.IMogoTrafficSearch;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.utils.AppUtils;
import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
@@ -34,72 +28,109 @@ class MogoMapDelegateFactory {
private static final String TAG = "MogoMapDelegateFactory";
private static boolean useCustom = false;
// private static boolean useCustom = false;
//
// public static boolean isUseCustom() {
// return useCustom;
// }
public static boolean isUseCustom() {
return useCustom;
private static IMogoMapApiBuilder sApiBuilder;
private static IMogoMapApiBuilder getApiBuilder() {
if ( sApiBuilder == null ) {
synchronized ( MogoMapDelegateFactory.class ) {
if ( sApiBuilder == null ) {
sApiBuilder = ARouter.getInstance().navigation( IMogoMapApiBuilder.class );
}
}
}
return sApiBuilder;
}
public static IMogoGeoSearch getGeoSearchDelegate( Context context ) {
if ( useCustom ) {
Logger.d( TAG, "use custom IMogoGeoSearch" );
return new com.mogo.map.impl.custom.search.GeocodeSearchClient( context );
}
return new GeocodeSearchClient( context );
return getApiBuilder().getGeoSearch( context );
// if ( useCustom ) {
// Logger.d( TAG, "use custom IMogoGeoSearch" );
// return new com.mogo.map.impl.custom.search.GeocodeSearchClient( context );
// }
// return new com.mogo.map.impl.amap.search.GeocodeSearchClient( context );
}
public static IMogoInputtipsSearch getInputtipsSearchDelegate( Context context, MogoInputtipsQuery query ) {
if ( useCustom ) {
Logger.d( TAG, "use custom IMogoInputtipsSearch" );
return new com.mogo.map.impl.custom.search.InputtipsSearch( context, query );
}
return new InputtipsSearch( context, query );
return getApiBuilder().getInputtipsSearch( context, query );
// if ( useCustom ) {
// Logger.d( TAG, "use custom IMogoInputtipsSearch" );
// return new com.mogo.map.impl.custom.search.InputtipsSearch( context, query );
// }
// return new com.mogo.map.impl.amap.search.InputtipsSearch( context, query );
}
public static IMogoLocationClient getLocationClientDelegate( Context context ) {
if ( useCustom ) {
Logger.d( TAG, "use custom IMogoLocationClient" );
return new com.mogo.map.impl.custom.location.ALocationClient( context );
}
return new ALocationClient( context );
return getApiBuilder().getLocationClient( context );
// if ( useCustom ) {
// Logger.d( TAG, "use custom IMogoLocationClient" );
// return new com.mogo.map.impl.custom.location.ALocationClient( context );
// }
// return new com.mogo.map.impl.amap.location.ALocationClient( context );
}
public static IMogoMapUIController getMapUIControllerDelegate() {
if ( useCustom ) {
Logger.d( TAG, "use custom IMogoMapUIController" );
return com.mogo.map.impl.custom.uicontroller.AMapUIController.getInstance();
}
return AMapUIController.getInstance();
return getApiBuilder().getMapUIController();
// if ( useCustom ) {
// Logger.d( TAG, "use custom IMogoMapUIController" );
// return com.mogo.map.impl.custom.uicontroller.AMapUIController.getInstance();
// }
// return com.mogo.map.impl.amap.uicontroller.AMapUIController.getInstance();
}
public static IMogoNavi getNaviDelegate( Context context ) {
if ( DebugConfig.isUseCustomNavi() ) {
return NaviClient.getInstance( context );
return getApiBuilder().getNavi( context );
// return com.mogo.map.impl.amap.navi.NaviClient.getInstance( context );
} else if ( AppUtils.isAppInstalled( context, "com.autonavi.amapauto" ) ) {
return AutoNaviClient.getInstance( context );
} else {
if ( useCustom ) {
Logger.d( TAG, "use custom IMogoNavi" );
return com.mogo.map.impl.custom.navi.NaviClient.getInstance( context );
}
}
return NaviClient.getInstance( context );
return getApiBuilder().getNavi( context );
// return com.mogo.map.impl.amap.navi.NaviClient.getInstance( context );
}
public static IMogoPoiSearch getPoiSearchClientDelegate( Context context, MogoPoiSearchQuery query ) {
if ( useCustom ) {
Logger.d( TAG, "use custom IMogoPoiSearch" );
return new com.mogo.map.impl.custom.search.PoiSearchClient( context, query );
}
return new PoiSearchClient( context, query );
return getApiBuilder().getPoiSearchClient( context, query );
// if ( useCustom ) {
// Logger.d( TAG, "use custom IMogoPoiSearch" );
// return new com.mogo.map.impl.custom.search.PoiSearchClient( context, query );
// }
// return new com.mogo.map.impl.amap.search.PoiSearchClient( context, query );
}
public static IMogoRoadSearch getRoadSearchDelegate() {
if ( useCustom ) {
Logger.d( TAG, "use custom IMogoRoadSearch" );
return new com.mogo.map.impl.custom.search.RoadSearchClient();
}
return new RoadSearchClient();
return getApiBuilder().getRoadSearch();
// if ( useCustom ) {
// Logger.d( TAG, "use custom IMogoRoadSearch" );
// return new com.mogo.map.impl.custom.search.RoadSearchClient();
// }
// return new com.mogo.map.impl.amap.search.RoadSearchClient();
}
public static IMogoAimless getAimless( Context context ) {
return getApiBuilder().getAimless( context );
}
public static void createMapViewInstance( Context context ) {
getApiBuilder().createMapView( context );
}
public static void destroy() {
getApiBuilder().destroy();
}
public static IMogoMapView getMapView( Context context ) {
return getApiBuilder().getMapView( context );
}
public static IMogoTrafficSearch getTrafficSearch() {
return getApiBuilder().getTrafficSearch();
}
}

View File

@@ -6,7 +6,6 @@ import android.location.Location;
import android.view.View;
import android.view.animation.Interpolator;
import com.mogo.map.impl.amap.uicontroller.AMapUIController;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.uicontroller.CarCursorOption;
import com.mogo.map.uicontroller.EnumMapUI;

View File

@@ -9,9 +9,6 @@ import android.widget.FrameLayout;
import androidx.annotation.Nullable;
import com.mogo.map.impl.amap.AMapBaseMapView;
import com.mogo.map.impl.amap.uicontroller.AMapUIController;
import com.mogo.map.impl.custom.CustomMapView;
import com.mogo.utils.logger.Logger;
/**
@@ -39,15 +36,10 @@ public class MogoMapView extends MogoBaseMapView implements ILifeCycle {
private boolean mIsVrMode = false;
@Override
protected void addDleMaps() {
display2DMap( true, true );
}
private void addAMapView(){
mAMapView = new AMapBaseMapView().create( getContext() );
if ( mAMapView != null ) {
final View mapView = mAMapView.getMapView();
protected void addMapView( Context context ) {
mMapView = MogoMapDelegateFactory.getMapView( context );
if ( mMapView != null ) {
final View mapView = mMapView.getMapView();
if ( mapView != null ) {
addView( mapView, new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT ) );
} else {
@@ -58,73 +50,6 @@ public class MogoMapView extends MogoBaseMapView implements ILifeCycle {
}
}
private void addVrMapView(){
mCustomMapView = new CustomMapView().create( getContext() );
if ( mCustomMapView != null ) {
final View mapView = mCustomMapView.getMapView();
if ( mapView != null ) {
addView( mapView, new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT ) );
} else {
Logger.e( TAG, "create MapView instance failed." );
}
} else {
Logger.e( TAG, "create IMogoMapView instance failed." );
}
mCustomMapView.onCreate( null );
}
private void removeVrMapView(){
try {
mCustomMapView.onDestroy();
removeView( mCustomMapView.getMapView() );
} catch ( Exception e ) {
e.printStackTrace();
}
}
private void removeAMapView(){
try {
mAMapView.onPause();
removeView( mAMapView.getMapView() );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Override
public void display2DMap( boolean invokeCreateAuto, boolean invokeResumeAuto ) {
mIsVrMode = false;
MogoMarkerManager.getInstance( getContext() ).removeMarkers();
removeVrMapView();
addAMapView();
mMapView = mAMapView;
MogoMap.getInstance().init( getContext(), mMapView.getMap() );
MogoMapUIController.getInstance().setDelegate( AMapUIController.getInstance() );
mAMapView.onResume();
}
@Override
public void displayVRMap( boolean invokeCreateAuto, boolean invokeResumeAuto ) {
mIsVrMode = true;
MogoMarkerManager.getInstance( getContext() ).removeMarkers();
removeAMapView();
addVrMapView();
mMapView = mCustomMapView;
MogoMap.getInstance().init( getContext(), mMapView.getMap() );
MogoMapUIController.getInstance().setDelegate( com.mogo.map.impl.custom.uicontroller.AMapUIController.getInstance() );
mCustomMapView.onResume();
post( new Runnable() {
@Override
public void run() {
try {
getMap().getUIController().showMyLocation( true );
} catch ( Exception e ) {
e.printStackTrace();
}
}
} );
}
public boolean isVrMode() {
return mIsVrMode;
}

View File

@@ -2,8 +2,6 @@ package com.mogo.map;
import android.content.Context;
import com.mogo.map.impl.amap.AMapViewHandler;
public
/**
* @author congtaowang
@@ -39,11 +37,11 @@ class MogoMapViewInstanceHandler implements IMogoMapViewInstanceHandler {
@Override
public void createMapViewInstance( Context context ) {
AMapViewHandler.createMapView( context );
MogoMapDelegateFactory.createMapViewInstance( context );
}
@Override
public void destroy() {
AMapViewHandler.destroy();
MogoMapDelegateFactory.destroy();
}
}

View File

@@ -1,14 +1,11 @@
package com.mogo.map;
import android.content.Context;
import android.util.Log;
import com.mogo.map.impl.amap.overlay.RouteOverlayHelper;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.map.marker.MogoMarkersHandler;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
import java.util.List;
@@ -94,11 +91,11 @@ public class MogoMarkerManager implements IMogoMarkerManager {
@Override
public void addRouteWay( Context context, MogoLatLng startPoint, MogoLatLng endPoint, List< MogoLatLng > wayPoints ) {
RouteOverlayHelper.getInstance().addRouteWay( context, startPoint, endPoint, wayPoints );
// RouteOverlayHelper.getInstance().addRouteWay( context, startPoint, endPoint, wayPoints );
}
@Override
public void removeRouteWayOverlay() {
RouteOverlayHelper.getInstance().removeAll();
// RouteOverlayHelper.getInstance().removeAll();
}
}

View File

@@ -4,9 +4,6 @@ import android.content.Context;
import android.graphics.Rect;
import android.location.Location;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.impl.amap.navi.NaviClient;
import com.mogo.map.impl.automap.navi.AutoNaviClient;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.navi.MogoCalculatePath;
@@ -14,7 +11,6 @@ import com.mogo.map.navi.MogoCarLocationChangedListenerRegister;
import com.mogo.map.navi.MogoNaviConfig;
import com.mogo.map.navi.MogoOperationListenerRegister;
import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
import com.mogo.utils.AppUtils;
import java.util.List;

View File

@@ -3,7 +3,6 @@ package com.mogo.map;
import android.content.Context;
import com.mogo.map.exception.MogoMapException;
import com.mogo.map.impl.amap.search.PoiSearchClient;
import com.mogo.map.search.geo.MogoPoiItem;
import com.mogo.map.search.poisearch.IMogoPoiSearch;
import com.mogo.map.search.poisearch.IMogoPoiSearchListener;

View File

@@ -1,6 +1,5 @@
package com.mogo.map;
import com.mogo.map.impl.amap.search.TrafficSearchClient;
import com.mogo.map.search.traffic.IMogoTrafficSearch;
import com.mogo.map.search.traffic.IMogoTrafficSearchListener;
@@ -9,7 +8,7 @@ public class MogoTrafficSearch implements IMogoTrafficSearch {
private IMogoTrafficSearch mDelegate;
public MogoTrafficSearch() {
mDelegate = new TrafficSearchClient();
mDelegate = MogoMapDelegateFactory.getTrafficSearch();
}
@Override