opt
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -3,9 +3,11 @@ 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;
|
||||
import com.mogo.map.location.MogoLocationListenerRegister;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -17,7 +19,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 ) {
|
||||
@@ -56,16 +58,12 @@ public class MogoLocationClient implements IMogoLocationClient {
|
||||
|
||||
@Override
|
||||
public void addLocationListener( IMogoLocationListener listener ) {
|
||||
if ( mDelegate != null ) {
|
||||
mDelegate.addLocationListener( listener );
|
||||
}
|
||||
MogoLocationListenerRegister.getInstance().addLocationListener( listener );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeLocationListener( IMogoLocationListener listener ) {
|
||||
if ( mDelegate != null ) {
|
||||
mDelegate.removeLocationListener( listener );
|
||||
}
|
||||
MogoLocationListenerRegister.getInstance().removeLocationListener( listener );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
package com.mogo.map;
|
||||
|
||||
import android.content.Context;
|
||||
import android.opengl.Visibility;
|
||||
|
||||
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.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";
|
||||
|
||||
private static boolean useCustom = false;
|
||||
|
||||
public static boolean isUseCustom() {
|
||||
return useCustom;
|
||||
}
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
public static IMogoMapUIController getMapUIControllerDelegate() {
|
||||
if ( useCustom ) {
|
||||
Logger.d( TAG, "use custom IMogoMapUIController" );
|
||||
return com.mogo.map.impl.custom.uicontroller.AMapUIController.getInstance();
|
||||
}
|
||||
return AMapUIController.getInstance();
|
||||
}
|
||||
|
||||
public static IMogoNavi getNaviDelegate( Context context ) {
|
||||
|
||||
if ( DebugConfig.isUseCustomNavi() ) {
|
||||
return 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 );
|
||||
}
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
public static IMogoRoadSearch getRoadSearchDelegate() {
|
||||
if ( useCustom ) {
|
||||
Logger.d( TAG, "use custom IMogoRoadSearch" );
|
||||
return new com.mogo.map.impl.custom.search.RoadSearchClient();
|
||||
}
|
||||
return new RoadSearchClient();
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import com.mogo.map.uicontroller.EnumMapUI;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.map.uicontroller.MapCameraPosition;
|
||||
import com.mogo.map.uicontroller.MapControlResult;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -23,13 +24,15 @@ import java.util.List;
|
||||
* 描述
|
||||
*/
|
||||
public class MogoMapUIController implements IMogoMapUIController {
|
||||
|
||||
private static final String TAG = "MogoMapUIController";
|
||||
|
||||
private IMogoMapUIController mDelegate;
|
||||
|
||||
private static volatile MogoMapUIController sInstance;
|
||||
|
||||
private MogoMapUIController() {
|
||||
mDelegate = AMapUIController.getInstance();
|
||||
mDelegate = MogoMapDelegateFactory.getMapUIControllerDelegate();
|
||||
}
|
||||
|
||||
public static MogoMapUIController getInstance() {
|
||||
@@ -43,6 +46,10 @@ public class MogoMapUIController implements IMogoMapUIController {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
public void setDelegate( IMogoMapUIController mDelegate ) {
|
||||
this.mDelegate = mDelegate;
|
||||
}
|
||||
|
||||
public synchronized void release() {
|
||||
sInstance = null;
|
||||
}
|
||||
@@ -73,6 +80,7 @@ public class MogoMapUIController implements IMogoMapUIController {
|
||||
@Override
|
||||
public void changeMapMode(EnumMapUI mode) {
|
||||
if (mDelegate != null) {
|
||||
Logger.d( TAG, "set type: %s", mode.name() );
|
||||
mDelegate.changeMapMode(mode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,11 +5,13 @@ import android.os.Bundle;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.amap.api.col.n3.lg;
|
||||
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;
|
||||
|
||||
/**
|
||||
@@ -18,9 +20,10 @@ 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 ) {
|
||||
super( context );
|
||||
}
|
||||
@@ -33,41 +36,121 @@ public class MogoMapView extends AMapBaseMapView implements ILifeCycle {
|
||||
super( context, attrs, defStyleAttr );
|
||||
}
|
||||
|
||||
private boolean mIsVrMode = false;
|
||||
|
||||
@Override
|
||||
protected void init( Context context ) {
|
||||
super.init( context );
|
||||
protected void addDleMaps() {
|
||||
|
||||
display2DMap( true, true );
|
||||
}
|
||||
|
||||
private void addAMapView(){
|
||||
mAMapView = new AMapBaseMapView().create( getContext() );
|
||||
if ( mAMapView != null ) {
|
||||
final View mapView = mAMapView.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." );
|
||||
}
|
||||
}
|
||||
|
||||
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 IMogoMap getMap() {
|
||||
return super.getMap();
|
||||
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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate( Bundle bundle ) {
|
||||
super.onCreate( bundle );
|
||||
Logger.d(TAG,"onCreate");
|
||||
Logger.d( TAG, "onCreate" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
Logger.d(TAG,"onResume");
|
||||
|
||||
Logger.d( TAG, "onResume" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
Logger.d(TAG,"onPause");
|
||||
|
||||
Logger.d( TAG, "onPause" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
Logger.d(TAG,"onDestroy");
|
||||
|
||||
Logger.d( TAG, "onDestroy" );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,9 +162,4 @@ public class MogoMapView extends AMapBaseMapView implements ILifeCycle {
|
||||
public void onLowMemory() {
|
||||
super.onLowMemory();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMogoMapView getMapView() {
|
||||
return super.getMapView();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,9 @@ 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;
|
||||
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;
|
||||
|
||||
@@ -29,13 +31,7 @@ public class MogoNavi implements IMogoNavi {
|
||||
private static volatile MogoNavi sInstance;
|
||||
|
||||
private MogoNavi( Context context ) {
|
||||
if ( DebugConfig.isUseCustomNavi() ) {
|
||||
mDelegate = NaviClient.getInstance( context );
|
||||
} else 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 ) {
|
||||
@@ -136,9 +132,7 @@ public class MogoNavi implements IMogoNavi {
|
||||
|
||||
@Override
|
||||
public void setLineClickInteraction( OnCalculatePathItemClickInteraction itemClickInteraction ) {
|
||||
if ( mDelegate != null ) {
|
||||
mDelegate.setLineClickInteraction( itemClickInteraction );
|
||||
}
|
||||
MogoOperationListenerRegister.getInstance().setLineClickInteraction( itemClickInteraction );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -197,9 +191,7 @@ public class MogoNavi implements IMogoNavi {
|
||||
|
||||
@Override
|
||||
public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) {
|
||||
if ( mDelegate != null ) {
|
||||
mDelegate.registerCarLocationChangedListener( listener );
|
||||
}
|
||||
MogoCarLocationChangedListenerRegister.getInstance().registerCarLocationChangedListener( listener );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user