切换地图的逻辑修改

This commit is contained in:
wangcongtao
2020-10-25 11:08:46 +08:00
parent aafd2cd5db
commit 771e5eed13
44 changed files with 740 additions and 231 deletions

View File

@@ -19,11 +19,7 @@ class AMapViewHandler {
private static IMogoMapView sMapView;
public static void createMapView( Context context ) {
if ( DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE ) {
sMapView = new AMapNaviViewWrapper( new AMapNaviView( context ) );
} else {
sMapView = new AMapNaviViewWrapper( new AMapNaviView( context ) );
}
sMapView = new AMapNaviViewWrapper( new AMapNaviView( context ) );
}
public static IMogoMapView getMapView() {

View File

@@ -11,6 +11,7 @@ import com.mogo.map.impl.amap.utils.ObjectUtils;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.location.MogoLocationListenerRegister;
import com.mogo.utils.logger.Logger;
import java.util.HashSet;
@@ -28,7 +29,6 @@ public class ALocationClient implements IMogoLocationClient {
private static final String TAG = "LocationClient";
private final Context mContext;
private Set< IMogoLocationListener > sListeners = new HashSet<>( 10 );
private MogoLocation mLastLocation;
private AMapLocationListener mListener = new InternalLocationListener();
@@ -76,28 +76,12 @@ public class ALocationClient implements IMogoLocationClient {
@Override
public void addLocationListener( IMogoLocationListener listener ) {
if ( mIsDestroyed ) {
destroyWarming();
return;
}
if ( listener != null ) {
synchronized ( sListeners ) {
sListeners.add( listener );
}
}
// do not impl.
}
@Override
public void removeLocationListener( IMogoLocationListener listener ) {
if ( mIsDestroyed ) {
destroyWarming();
return;
}
if ( listener != null ) {
synchronized ( sListeners ) {
sListeners.remove( listener );
}
}
// do not impl.
}
@Override
@@ -115,10 +99,6 @@ public class ALocationClient implements IMogoLocationClient {
@Override
public synchronized void destroy() {
mIsDestroyed = true;
if ( sListeners != null ) {
sListeners.clear();
}
sListeners = null;
if ( mClient != null ) {
mClient.unRegisterLocationListener( mListener );
mClient.stopLocation();
@@ -142,8 +122,9 @@ public class ALocationClient implements IMogoLocationClient {
}
Trace.beginSection( "timer.onLocationChanged" );
mLastLocation = ObjectUtils.fromAMap( aMapLocation );
synchronized ( sListeners ) {
Iterator< IMogoLocationListener > listenerIterator = sListeners.iterator();
Set<IMogoLocationListener> listeners = MogoLocationListenerRegister.getInstance().getListeners();
synchronized ( listeners ) {
Iterator< IMogoLocationListener > listenerIterator = listeners.iterator();
while ( listenerIterator.hasNext() ) {
listenerIterator.next().onLocationChanged( mLastLocation );
}

View File

@@ -22,6 +22,7 @@ import com.mogo.map.navi.IMogoCarLocationChangedListener;
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.MogoNaviListenerHandler;
import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
@@ -64,7 +65,6 @@ public class NaviClient implements IMogoNavi {
private boolean mIsRealNavi;
private Location mCarLocation;
private IMogoCarLocationChangedListener2 mCarLocationChangedListener;
private LocationSource.OnLocationChangedListener mOnLocationChangedListener;
/**
* 巡航模式配置状态
@@ -249,9 +249,7 @@ public class NaviClient implements IMogoNavi {
@Override
public void setLineClickInteraction( OnCalculatePathItemClickInteraction lineClickInteraction ) {
if ( mAMapNaviListener != null ) {
mAMapNaviListener.setLineClickInteraction( lineClickInteraction );
}
// do not impl
}
@Override
@@ -303,15 +301,16 @@ public class NaviClient implements IMogoNavi {
@Override
public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) {
mCarLocationChangedListener = listener;
// do not impl.
}
// -- end
public void syncCarLocation( Location location ) {
mCarLocation = location;
if ( mCarLocationChangedListener != null ) {
mCarLocationChangedListener.onCarLocationChanged2( mCarLocation );
mCarLocation = location;
if ( MogoCarLocationChangedListenerRegister.getInstance().getListener() != null ) {
MogoCarLocationChangedListenerRegister.getInstance().getListener().onCarLocationChanged2( location );
}
}

View File

@@ -267,12 +267,6 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
return null;
}
public void setLineClickInteraction( OnCalculatePathItemClickInteraction lineClickInteraction ) {
if ( mNaviOverlayHelper != null ) {
mNaviOverlayHelper.setLineClickInteraction( lineClickInteraction );
}
}
public void clearCalculatePaths() {
if ( mNaviOverlayHelper != null ) {
mNaviOverlayHelper.clearCalculatedOverlay();

View File

@@ -24,6 +24,7 @@ import com.mogo.map.impl.amap.R;
import com.mogo.map.impl.amap.overlay.RouteOverLayWrapper;
import com.mogo.map.marker.MogoMarkersHandler;
import com.mogo.map.navi.MogoCalculatePath;
import com.mogo.map.navi.MogoOperationListenerRegister;
import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
@@ -64,7 +65,6 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
private int mSelectedPathId;
private CalculatePathItem mSelectedCalculatePathItem;
private OnCalculatePathItemClickInteraction mLineClickInteraction;
/**
* 起点终点marker
@@ -299,8 +299,8 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
if ( mPaths != null && !mPaths.isEmpty() ) {
for ( MogoCalculatePath path : mPaths ) {
if ( TextUtils.equals( path.getTagId(), polyline.getId() ) ) {
if ( mLineClickInteraction != null ) {
mLineClickInteraction.onItemClicked( path.getTagId() );
if ( MogoOperationListenerRegister.getInstance().getItemClickInteraction() != null ) {
MogoOperationListenerRegister.getInstance().getItemClickInteraction().onItemClicked( path.getTagId() );
break;
}
}
@@ -440,10 +440,6 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
return this;
}
public void setLineClickInteraction( OnCalculatePathItemClickInteraction lineClickInteraction ) {
mLineClickInteraction = lineClickInteraction;
}
public void setCalculatePathDisplayBounds( Rect bounds ) {
if ( bounds != null ) {
mBoundRect = bounds;

View File

@@ -10,6 +10,7 @@ import com.mogo.map.impl.amap.navi.NaviClient;
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.OnCalculatePathItemClickInteraction;
import com.mogo.utils.logger.Logger;
@@ -195,7 +196,7 @@ public class AutoNaviClient implements IMogoNavi {
@Override
public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) {
NaviClient.getInstance( mContext ).registerCarLocationChangedListener( listener );
//do not impl
}
@Override

View File

@@ -55,7 +55,7 @@ dependencies {
implementation project(':foudations:mogo-commons')
}
implementation 'com.zhidaoauto.machine:map:1.0.0-online-9'
implementation 'com.zhidaoauto.machine:map:1.0.0-online-12'
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()

View File

@@ -203,7 +203,7 @@ public class AMapViewWrapper implements IMogoMapView, IMogoMapUIController, Loca
@Override
public void onResume() {
if (mMapView != null) {
// mMapView.onResume();
mMapView.onResume();
Logger.d(TAG, "map onResume");
}
}
@@ -211,7 +211,7 @@ public class AMapViewWrapper implements IMogoMapView, IMogoMapUIController, Loca
@Override
public void onPause() {
if (mMapView != null) {
// mMapView.onPause();
mMapView.onPause();
Logger.d(TAG, "map onPause");
}
}
@@ -240,7 +240,7 @@ public class AMapViewWrapper implements IMogoMapView, IMogoMapUIController, Loca
@Override
public void setTrafficEnabled(boolean visible) {
if (checkAMapView()) {
mMapView.getMapAutoViewHelper().setTraffic(visible);
//mMapView.getMapAutoViewHelper().setTraffic(visible);
}
}

View File

@@ -2,6 +2,7 @@ package com.mogo.map.impl.custom;
import android.content.Context;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.IMogoMapView;
import com.mogo.map.IMogoMapViewCreator;
import com.zhidaoauto.map.sdk.open.MapAutoApi;
@@ -14,21 +15,22 @@ import com.zhidaoauto.map.sdk.open.view.MapAutoView;
* <p>
* 描述
*/
public class AMapBaseMapView implements IMogoMapViewCreator {
public class CustomMapView implements IMogoMapViewCreator {
private static final String TAG = "AMapBaseMapView";
private MapAutoView mapAutoView;
private static IMogoMapView mapView;
@Override
public IMogoMapView create( Context context ) {
MapAutoApi.INSTANCE.init( context, MapParams.Companion.init().setDebugMode( false )
MapAutoApi.INSTANCE.init( context, MapParams.Companion.init().setDebugMode( DebugConfig.isDebug() )
.setCoordinateType( MapParams.COORDINATETYPE_GCJ02 )
.setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D )
.setZoom( 16 )
.setPointToCenter( 0.5f, 0.5f )
.setStyleMode( MapParams.MAP_STYLE_NIGHT ) );
mapAutoView = new MapAutoView( context );
return new AMapViewWrapper( mapAutoView );
MapAutoView mapAutoView = new MapAutoView( context );
mapView = new AMapViewWrapper( mapAutoView );
return mapView;
}
}

View File

@@ -7,6 +7,7 @@ import com.mogo.map.impl.custom.utils.ObjectUtils;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.location.MogoLocationListenerRegister;
import com.mogo.utils.logger.Logger;
import com.zhidaoauto.map.sdk.open.location.LocationClient;
import com.zhidaoauto.map.sdk.open.location.LocationListener;
@@ -27,7 +28,6 @@ public class ALocationClient implements IMogoLocationClient {
private static final String TAG = "LocationClient";
private Set< IMogoLocationListener > sListeners = new HashSet<>( 10 );
private MogoLocation mLastLocation;
private LocationListener mListener = new InternalLocationListener();
@@ -79,28 +79,12 @@ public class ALocationClient implements IMogoLocationClient {
@Override
public void addLocationListener( IMogoLocationListener listener ) {
if ( mIsDestroyed ) {
destroyWarming();
return;
}
if ( listener != null ) {
synchronized ( sListeners ) {
sListeners.add( listener );
}
}
// do not impl.
}
@Override
public void removeLocationListener( IMogoLocationListener listener ) {
if ( mIsDestroyed ) {
destroyWarming();
return;
}
if ( listener != null ) {
synchronized ( sListeners ) {
sListeners.remove( listener );
}
}
// do not impl.
}
@Override
@@ -115,10 +99,6 @@ public class ALocationClient implements IMogoLocationClient {
@Override
public synchronized void destroy() {
mIsDestroyed = true;
if ( sListeners != null ) {
sListeners.clear();
}
sListeners = null;
if ( mClient != null ) {
mClient.unRegisterListener( mListener );
mClient.destory();
@@ -130,7 +110,7 @@ public class ALocationClient implements IMogoLocationClient {
private class InternalLocationListener implements LocationListener {
@Override
public void onLocationChanged(@NotNull com.zhidaoauto.map.sdk.open.location.MogoLocation location) {
public void onLocationChanged( @NotNull com.zhidaoauto.map.sdk.open.location.MogoLocation location ) {
if ( mIsDestroyed ) {
destroyWarming();
return;
@@ -140,10 +120,11 @@ public class ALocationClient implements IMogoLocationClient {
location.getLon() == 0.0D ) {
return;
}
Trace.beginSection("timer.onLocationChanged");
Trace.beginSection( "timer.onLocationChanged" );
mLastLocation = ObjectUtils.fromLocation( location );
synchronized ( sListeners ) {
Iterator< IMogoLocationListener > listenerIterator = sListeners.iterator();
Set< IMogoLocationListener > listeners = MogoLocationListenerRegister.getInstance().getListeners();
synchronized ( listeners ) {
Iterator< IMogoLocationListener > listenerIterator = listeners.iterator();
while ( listenerIterator.hasNext() ) {
listenerIterator.next().onLocationChanged( mLastLocation.clone() );
}

View File

@@ -18,6 +18,7 @@ import com.mogo.map.impl.custom.utils.ObjectUtils;
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.MogoNaviListenerHandler;
import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
@@ -62,7 +63,6 @@ public class NaviClient implements IMogoNavi {
private boolean mIsRealNavi;
private Location mCarLocation = new Location("GPS");
private IMogoCarLocationChangedListener2 mCarLocationChangedListener;
/**
* 巡航模式配置状态
*/
@@ -217,9 +217,7 @@ public class NaviClient implements IMogoNavi {
@Override
public void setLineClickInteraction( OnCalculatePathItemClickInteraction lineClickInteraction ) {
// if ( mAMapNaviListener != null ) {
// mAMapNaviListener.setLineClickInteraction( lineClickInteraction );
// }
// do not impl.
}
@Override
@@ -268,15 +266,15 @@ public class NaviClient implements IMogoNavi {
@Override
public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) {
mCarLocationChangedListener = listener;
// do not impl.
}
// -- end
public void syncCarLocation( Location location ) {
mCarLocation = location;
if ( mCarLocationChangedListener != null ) {
mCarLocationChangedListener.onCarLocationChanged2( mCarLocation );
if ( MogoCarLocationChangedListenerRegister.getInstance().getListener() != null ) {
MogoCarLocationChangedListenerRegister.getInstance().getListener().onCarLocationChanged2( location );
}
}

View File

@@ -3,14 +3,10 @@ package com.mogo.map;
import android.content.Context;
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.mogo.utils.logger.Logger;
/**
* @author congtaowang
@@ -22,7 +18,10 @@ public abstract class MogoBaseMapView extends FrameLayout implements ILifeCycle
private static final String TAG = "MogoBaseMapView";
private IMogoMapView mMapView;
protected IMogoMapView mMapView;
protected IMogoMapView mAMapView;
protected IMogoMapView mCustomMapView;
public MogoBaseMapView( Context context ) {
this( context, null );
@@ -38,27 +37,14 @@ public abstract class MogoBaseMapView extends FrameLayout implements ILifeCycle
}
private void init( Context context ) {
mMapView = createMapView( 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 ) );
MogoMap.getInstance().init( context, getMap() );
} else {
Logger.e( TAG, "create MapView instance failed." );
}
} else {
Logger.e( TAG, "create IMogoMapView instance failed." );
}
addDleMaps();
}
/**
* 创建地图实例
*
* @param context
* @return
*/
protected abstract IMogoMapView createMapView( Context context );
protected abstract void addDleMaps();
public abstract void display2DMap( boolean invokeCreateAuto, boolean invokeResumeAuto );
public abstract void displayVRMap( boolean invokeCreateAuto, boolean invokeResumeAuto );
@Override
public void onCreate( Bundle bundle ) {
@@ -109,8 +95,4 @@ public abstract class MogoBaseMapView extends FrameLayout implements ILifeCycle
}
return null;
}
public IMogoMapView getMapView() {
return mMapView;
}
}

View File

@@ -6,7 +6,7 @@ package com.mogo.map.location;
* <p>
* 定位接口
*/
public interface IMogoLocationClient {
public interface IMogoLocationClient extends IMogoLocationListenerRegister {
/**
* 开始定位
@@ -25,20 +25,6 @@ public interface IMogoLocationClient {
*/
void stop();
/**
* 注册定位回调
*
* @param listener
*/
void addLocationListener( IMogoLocationListener listener );
/**
* 注销定位回调
*
* @param listener
*/
void removeLocationListener( IMogoLocationListener listener );
/**
* 返回上一次有效定位
*

View File

@@ -0,0 +1,24 @@
package com.mogo.map.location;
/**
* @author congtaowang
* @since 2019-12-24
* <p>
* 地图监听注册管理
*/
public interface IMogoLocationListenerRegister {
/**
* 注册定位回调
*
* @param listener
*/
void addLocationListener( IMogoLocationListener listener );
/**
* 注销定位回调
*
* @param listener
*/
void removeLocationListener( IMogoLocationListener listener );
}

View File

@@ -0,0 +1,75 @@
package com.mogo.map.location;
import java.sql.ClientInfoStatus;
import java.util.HashSet;
import java.util.Set;
/**
* @author congtaowang
* @since 2019-12-24
* <p>
* 地图监听注册管理
*/
public class MogoLocationListenerRegister implements IMogoLocationListenerRegister {
private static volatile MogoLocationListenerRegister sInstance;
private MogoLocationListenerRegister() {
}
public static MogoLocationListenerRegister getInstance() {
if ( sInstance == null ) {
synchronized ( MogoLocationListenerRegister.class ) {
if ( sInstance == null ) {
sInstance = new MogoLocationListenerRegister();
}
}
}
return sInstance;
}
public synchronized void release() {
sInstance = null;
}
private Object readResolve() {
// 阻止反序列化,必须实现 Serializable 接口
return sInstance;
}
private Set< IMogoLocationListener > sListeners = new HashSet<>( 10 );
/**
* 注册定位回调
*
* @param listener
*/
@Override
public void addLocationListener( IMogoLocationListener listener ) {
if ( listener == null ) {
return;
}
synchronized ( sListeners ) {
sListeners.add( listener );
}
}
/**
* 注销定位回调
*
* @param listener
*/
@Override
public void removeLocationListener( IMogoLocationListener listener ) {
if ( listener == null ) {
return;
}
synchronized ( sListeners ) {
sListeners.remove( listener );
}
}
public Set< IMogoLocationListener > getListeners() {
return sListeners;
}
}

View File

@@ -0,0 +1,18 @@
package com.mogo.map.navi;
public
/**
* @author congtaowang
* @since 2020/10/23
*
* 描述
*/
interface IMogoCarLocationChangedListenerRegister {
/**
* 注册车辆位置变化监听,非业务使用
*
* @param listener
*/
void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener );
}

View File

@@ -14,7 +14,7 @@ import java.util.List;
* <p>
* 导航操作
*/
public interface IMogoNavi {
public interface IMogoNavi extends IMogoCarLocationChangedListenerRegister, IMogoOperationListenerRegister{
/**
* 开启路径规划并导航
@@ -97,12 +97,6 @@ public interface IMogoNavi {
*/
OnCalculatePathItemClickInteraction getItemClickInteraction();
/**
* 设置线条点击回调
*/
void setLineClickInteraction( OnCalculatePathItemClickInteraction itemClickInteraction );
/**
* 清除规划的路线
*/
@@ -151,13 +145,6 @@ public interface IMogoNavi {
*/
Location getCarLocation2();
/**
* 注册车辆位置变化监听,非业务使用
*
* @param listener
*/
void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener );
/**
* 打开巡航模式
*/

View File

@@ -0,0 +1,17 @@
package com.mogo.map.navi;
public
/**
* @author congtaowang
* @since 2020/10/23
*
* 描述
*/
interface IMogoOperationListenerRegister {
/**
* 设置线条点击回调
*/
void setLineClickInteraction( OnCalculatePathItemClickInteraction itemClickInteraction );
}

View File

@@ -0,0 +1,50 @@
package com.mogo.map.navi;
public
/**
* @author congtaowang
* @since 2020/10/23
*
* 描述
*/
class MogoCarLocationChangedListenerRegister implements IMogoCarLocationChangedListenerRegister {
private static volatile MogoCarLocationChangedListenerRegister sInstance;
private IMogoCarLocationChangedListener2 listener;
private MogoCarLocationChangedListenerRegister(){}
public static MogoCarLocationChangedListenerRegister getInstance(){
if( sInstance == null ){
synchronized( MogoCarLocationChangedListenerRegister.class ) {
if( sInstance == null ){
sInstance = new MogoCarLocationChangedListenerRegister();
}
}
}
return sInstance;
}
public synchronized void release(){
sInstance = null;
}
private Object readResolve() {
// 阻止反序列化,必须实现 Serializable 接口
return sInstance;
}
/**
* 注册车辆位置变化监听,非业务使用
*
* @param listener
*/
@Override
public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) {
this.listener = listener;
}
public IMogoCarLocationChangedListener2 getListener() {
return listener;
}
}

View File

@@ -0,0 +1,47 @@
package com.mogo.map.navi;
public
/**
* @author congtaowang
* @since 2020/10/23
*
* 描述
*/
class MogoOperationListenerRegister implements IMogoOperationListenerRegister {
private static volatile MogoOperationListenerRegister sInstance;
private OnCalculatePathItemClickInteraction itemClickInteraction;
private MogoOperationListenerRegister(){}
public static MogoOperationListenerRegister getInstance(){
if( sInstance == null ){
synchronized( MogoOperationListenerRegister.class ) {
if( sInstance == null ){
sInstance = new MogoOperationListenerRegister();
}
}
}
return sInstance;
}
public synchronized void release(){
sInstance = null;
}
private Object readResolve() {
// 阻止反序列化,必须实现 Serializable 接口
return sInstance;
}
/**
* 设置线条点击回调
*/
public void setLineClickInteraction( OnCalculatePathItemClickInteraction itemClickInteraction ) {
this.itemClickInteraction = itemClickInteraction;
}
public OnCalculatePathItemClickInteraction getItemClickInteraction() {
return itemClickInteraction;
}
}

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

@@ -3,7 +3,6 @@ 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;
@@ -66,25 +65,6 @@ class MogoMapDelegateFactory {
return AMapUIController.getInstance();
}
private static IMogoMapView sMapView;
public static void createMapView( Context context ) {
if ( DebugConfig.isUseCustomMap() ) {
Logger.d( TAG, "use custom IMogoMapViewCreator" );
sMapView = new com.mogo.map.impl.custom.AMapBaseMapView().create( context );
} else {
sMapView = new AMapBaseMapView().create( context );
}
}
public static void destroy() {
sMapView = null;
}
public static IMogoMapView getMapView() {
return sMapView;
}
public static IMogoNavi getNaviDelegate( Context context ) {
if ( DebugConfig.isUseCustomNavi() ) {

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,6 +24,8 @@ import java.util.List;
* 描述
*/
public class MogoMapUIController implements IMogoMapUIController {
private static final String TAG = "MogoMapUIController";
private IMogoMapUIController mDelegate;
@@ -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

@@ -3,9 +3,15 @@ package com.mogo.map;
import android.content.Context;
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.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;
/**
@@ -30,15 +36,63 @@ public class MogoMapView extends MogoBaseMapView implements ILifeCycle {
super( context, attrs, defStyleAttr );
}
private boolean mIsFirstDisplayVRMode = true;
@Override
public IMogoMap getMap() {
return super.getMap();
protected void addDleMaps() {
mAMapView = new AMapBaseMapView().create( getContext() );
mCustomMapView = new CustomMapView().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." );
}
// 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." );
// }
mMapView = mAMapView;
MogoMap.getInstance().init( getContext(), mMapView.getMap() );
}
@Override
protected IMogoMapView createMapView( Context context ) {
MogoMapDelegateFactory.createMapView( context );
return MogoMapDelegateFactory.getMapView();
public void display2DMap( boolean invokeCreateAuto, boolean invokeResumeAuto ) {
MogoMap.getInstance().init( getContext(), mAMapView.getMap() );
MogoMapUIController.getInstance().setDelegate( AMapUIController.getInstance() );
MogoMarkerManager.getInstance( getContext() ).removeMarkers();
mCustomMapView.onPause();
mCustomMapView.getMapView().setVisibility( View.GONE );
mAMapView.onResume();
mAMapView.getMapView().setVisibility( View.VISIBLE );
}
@Override
public void displayVRMap( boolean invokeCreateAuto, boolean invokeResumeAuto ) {
if ( mIsFirstDisplayVRMode ) {
mCustomMapView.onCreate( null );
mIsFirstDisplayVRMode = false;
}
MogoMap.getInstance().init( getContext(), mCustomMapView.getMap() );
MogoMapUIController.getInstance().setDelegate( com.mogo.map.impl.custom.uicontroller.AMapUIController.getInstance() );
MogoMarkerManager.getInstance( getContext() ).removeMarkers();
mCustomMapView.onResume();
mCustomMapView.getMapView().setVisibility( View.VISIBLE );
mAMapView.onPause();
mAMapView.getMapView().setVisibility( View.GONE );
}
@Override
@@ -57,14 +111,12 @@ public class MogoMapView extends MogoBaseMapView implements ILifeCycle {
public void onPause() {
super.onPause();
Logger.d( TAG, "onPause" );
}
@Override
public void onDestroy() {
super.onDestroy();
Logger.d( TAG, "onDestroy" );
}
@Override
@@ -76,9 +128,4 @@ public class MogoMapView extends MogoBaseMapView implements ILifeCycle {
public void onLowMemory() {
super.onLowMemory();
}
@Override
public IMogoMapView getMapView() {
return super.getMapView();
}
}

View File

@@ -12,7 +12,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;
@@ -132,9 +134,7 @@ public class MogoNavi implements IMogoNavi {
@Override
public void setLineClickInteraction( OnCalculatePathItemClickInteraction itemClickInteraction ) {
if ( mDelegate != null ) {
mDelegate.setLineClickInteraction( itemClickInteraction );
}
MogoOperationListenerRegister.getInstance().setLineClickInteraction( itemClickInteraction );
}
@Override
@@ -193,9 +193,7 @@ public class MogoNavi implements IMogoNavi {
@Override
public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) {
if ( mDelegate != null ) {
mDelegate.registerCarLocationChangedListener( listener );
}
MogoCarLocationChangedListenerRegister.getInstance().registerCarLocationChangedListener( listener );
}
@Override