This commit is contained in:
wangcongtao
2020-12-08 14:08:53 +08:00
840 changed files with 31903 additions and 11168 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

@@ -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

View File

@@ -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();
}
}

View File

@@ -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);
}
}

View File

@@ -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();
}
}

View File

@@ -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

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