diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java
index fded5a6ebb..5845a754b9 100644
--- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java
+++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java
@@ -9,6 +9,7 @@ import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
+import android.widget.CheckBox;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -71,6 +72,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView >
private TextView mLocInfo;
private TextView mLoc;
private Button m2D3D;
+ private CheckBox mNaviMode;
private IMogoMarker mLastClickedMarker;
@@ -91,6 +93,8 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView >
@Override
protected void initViews() {
+ mNaviMode = findViewById( R.id.demo_module_id_navi_mode );
+
mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( getContext() );
mPoiSearch = mMapService.getPoiSearch( getContext(), new MogoPoiSearchQuery() );
mPoiSearch.setPoiSearchListener( this );
@@ -179,7 +183,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView >
findViewById( R.id.demo_module_id_start_navi ).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
- mNavi.startNavi();
+ mNavi.startNavi( !mNaviMode.isChecked() );
}
} );
@@ -231,6 +235,22 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView >
mMapUIController.changeMapMode( EnumMapUI.Type_Night );
}
} );
+
+ findViewById( R.id.demo_module_id_display_overlay ).setOnClickListener( new View.OnClickListener() {
+
+ @Override
+ public void onClick( View v ) {
+ mMapUIController.displayOverview();
+ }
+ } );
+
+ findViewById( R.id.demo_module_id_reverse_lock ).setOnClickListener( new View.OnClickListener() {
+
+ @Override
+ public void onClick( View v ) {
+ mMapUIController.recoverLockMode();
+ }
+ } );
}
@Override
diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java
index 0f861c7531..f0fb866a28 100644
--- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java
+++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java
@@ -60,7 +60,7 @@ public class DemoInfoWindowAdapter implements IMogoInfoWindowAdapter {
@Override
public void onClick( View v ) {
if ( mNavi != null ) {
- mNavi.naviTo( marker.getPosition(), new MogoNaviConfig().realNavi( false ) );
+ mNavi.naviTo( marker.getPosition(), new MogoNaviConfig() );
}
}
} );
@@ -83,7 +83,7 @@ public class DemoInfoWindowAdapter implements IMogoInfoWindowAdapter {
@Override
public void onClick( View v ) {
if ( mNavi != null ) {
- mNavi.naviTo( marker.getPosition(), new MogoNaviConfig().realNavi( false ) );
+ mNavi.naviTo( marker.getPosition(), new MogoNaviConfig() );
}
marker.hideInfoWindow();
marker.remove();
diff --git a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml b/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml
index a5c817e22d..75efba6ac9 100644
--- a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml
+++ b/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml
@@ -94,6 +94,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止导航" />
+
+
* 代理高德导航地图 */ -public class AMapNaviViewWrapper implements IMogoMapView, +public class AMapNaviViewWrapper implements IMogoMapView, IMogoMapUIController, AMap.OnMarkerClickListener, AMap.OnMapLoadedListener, AMap.OnMapTouchListener, @@ -47,7 +52,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, public AMapNaviViewWrapper( AMapNaviView mapView ) { this.mMapView = mapView; - this.mIMap = new AMapWrapper( mMapView.getMap(), mMapView ); + this.mIMap = new AMapWrapper( mMapView.getMap(), mMapView, this ); initMapView(); initListeners(); } @@ -112,6 +117,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, // 2D模式 options.setTilt( 0 ); mMapView.setViewOptions( options ); + } mMapView.setRouteOverlayVisible( false ); mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE ); @@ -255,9 +261,12 @@ public class AMapNaviViewWrapper implements IMogoMapView, return true; } + /** + * @param mode 0:车头朝上状态;1:正北朝上模式 + */ @Override - public void onNaviMapMode( int i ) { - + public void onNaviMapMode( int mode ) { + Logger.i( TAG, "mode=" + mode ); } @Override @@ -287,12 +296,10 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void onMapTypeChanged( int type ) { - if ( type == AMap.MAP_TYPE_NAVI ) { - MogoMapListenerHandler.getInstance().onMapModeChanged( EnumMapUI.Type_Navi ); - } else if ( type == AMap.MAP_TYPE_NORMAL ) { - MogoMapListenerHandler.getInstance().onMapModeChanged( EnumMapUI.Type_Light ); - } else if ( type == AMap.MAP_TYPE_NIGHT ) { + if ( type == 4 ) { MogoMapListenerHandler.getInstance().onMapModeChanged( EnumMapUI.Type_Light ); + } else if ( type == 3 ) { + MogoMapListenerHandler.getInstance().onMapModeChanged( EnumMapUI.Type_Night ); } } @@ -300,4 +307,98 @@ public class AMapNaviViewWrapper implements IMogoMapView, public void onNaviViewShowMode( int i ) { } + + + @Override + public void setTrafficEnabled( boolean visible ) { + if ( checkAMapView() ) { + mMapView.setTrafficLine( visible ); + } + } + + @Override + public void changeZoom( boolean zoom ) { + if ( checkAMapView() ) { + if ( zoom ) { + mMapView.zoomIn(); + } else { + mMapView.zoomOut(); + } + } + } + + @Override + public void changeMapMode( EnumMapUI ui ) { + if ( ui == null ) { + return; + } + if ( checkAMapView() ) { + AMapNaviViewOptions options = mMapView.getViewOptions(); + if ( options == null ) { + options = new AMapNaviViewOptions(); + } + switch ( ui ) { + case CarUp_2D: + options.setTilt( 0 ); + mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE ); + break; + case CarUp_3D: + options.setTilt( 60 ); + mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE ); + break; + case NorthUP_2D: + options.setTilt( 0 ); + mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE ); + break; + case Type_Light: + options.setNaviNight( false ); + break; + case Type_Night: + options.setNaviNight( true ); + break; + } + mMapView.setViewOptions( options ); + } + } + + private boolean checkAMapView() { + if ( mMapView == null ) { + Logger.e( TAG, "高德mapView实例为空,请检查" ); + return false; + } + return true; + } + + @Override + public void moveToCurrentLocation() { + MogoLocation location = ALocationClient.getInstance( getContext() ).getLastKnowLocation(); + if ( location != null ) { + mMapView.getMap().animateCamera( CameraUpdateFactory.newLatLng( new LatLng( location.getLatitude(), location.getLongitude() ) ) ); + } + } + + @Override + public void showMyLocation( boolean visible ) { + if ( checkAMapView() ) { + mMapView.getMap().setMyLocationEnabled( true ); + MyLocationStyle style = mMapView.getMap().getMyLocationStyle(); + style.showMyLocation( visible ); + style.myLocationIcon( BitmapDescriptorFactory.fromResource( R.drawable.ic_search_poi_location ) ); + mMapView.getMap().setMyLocationStyle( style ); + } + } + + @Override + public void recoverLockMode() { + if ( checkAMapView() ) { + mMapView.recoverLockMode(); + } + } + + @Override + public void displayOverview() { + if ( checkAMapView() ) { + mMapView.displayOverview(); + } + } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java index 7d929ffa8d..66db77f052 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java @@ -11,6 +11,7 @@ import com.amap.api.maps.model.MarkerOptions; import com.amap.api.maps.model.MyLocationStyle; import com.amap.api.navi.AMapNaviView; import com.amap.api.navi.AMapNaviViewOptions; +import com.amap.api.navi.model.AMapNaviMarkerOptions; import com.mogo.map.IMogoMap; import com.mogo.map.IMogoUiSettings; import com.mogo.map.impl.amap.location.ALocationClient; @@ -33,19 +34,21 @@ import java.util.ArrayList; *
* 代理高德AMap */ -public class AMapWrapper implements IMogoMap, IMogoMapUIController { +public class AMapWrapper implements IMogoMap { private static final String TAG = "AMapWrapper"; private static AMap sAMap; + private IMogoMapUIController mUIcontroller; private AMap mAMap; private AMapNaviView mMapView; private IMogoUiSettings mUiSettings; - public AMapWrapper( AMap map, AMapNaviView mapView ) { + public AMapWrapper( AMap map, AMapNaviView mapView, IMogoMapUIController controller ) { this.mAMap = map; sAMap = map; this.mMapView = mapView; + mUIcontroller = controller; // 设置实现自定义 info window mAMap.setInfoWindowAdapter( new AMapInfoWindowAdapter() ); } @@ -67,7 +70,7 @@ public class AMapWrapper implements IMogoMap, IMogoMapUIController { @Override public IMogoMapUIController getUIController() { - return this; + return mUIcontroller; } @Override @@ -194,67 +197,6 @@ public class AMapWrapper implements IMogoMap, IMogoMapUIController { } } - @Override - public void setTrafficEnabled( boolean visible ) { - if ( checkAMap() ) { - mAMap.setTrafficEnabled( visible ); - } - } - - @Override - public void changeZoom( boolean zoom ) { - if ( checkAMapView() ) { - if ( zoom ) { - mMapView.zoomIn(); - } else { - mMapView.zoomOut(); - } - } - } - - @Override - public void changeMapMode( EnumMapUI ui ) { - if ( ui == null ) { - return; - } - if ( checkAMapView() ) { - AMapNaviViewOptions options = mMapView.getViewOptions(); - if ( options == null ) { - options = new AMapNaviViewOptions(); - } - switch ( ui ) { - case CarUp_2D: - options.setTilt( 0 ); - mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE ); - break; - case CarUp_3D: - options.setTilt( 60 ); - mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE ); - break; - case NorthUP_2D: - options.setTilt( 0 ); - mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE ); - break; - case Type_Light: - if ( checkAMap() ) { - mAMap.setMapType( AMap.MAP_TYPE_NORMAL ); - } - return; - case Type_Night: - if ( checkAMap() ) { - mAMap.setMapType( AMap.MAP_TYPE_NIGHT ); - } - return; - case Type_Navi: - if ( checkAMap() ) { - mAMap.setMapType( AMap.MAP_TYPE_NAVI ); - } - return; - } - mMapView.setViewOptions( options ); - } - } - private boolean checkAMap() { if ( mAMap == null ) { Logger.e( TAG, "高德map实例为空,请检查" ); @@ -263,51 +205,7 @@ public class AMapWrapper implements IMogoMap, IMogoMapUIController { return true; } - private boolean checkAMapView() { - if ( mMapView == null ) { - Logger.e( TAG, "高德mapView实例为空,请检查" ); - return false; - } - return true; - } - - @Override - public void moveToCurrentLocation() { - MogoLocation location = ALocationClient.getInstance( getContext() ).getLastKnowLocation(); - if ( location != null ) { - mAMap.animateCamera( CameraUpdateFactory.newLatLng( new LatLng( location.getLatitude(), location.getLongitude() ) ) ); - } - } - private Context getContext() { - if ( checkAMapView() ) { - return mMapView.getContext(); - } - return null; - } - - @Override - public void showMyLocation( boolean visible ) { - if ( checkAMapView() ) { - mAMap.setMyLocationEnabled( true ); - MyLocationStyle style = mAMap.getMyLocationStyle(); - style.showMyLocation( visible ); - style.myLocationIcon( BitmapDescriptorFactory.fromResource( R.drawable.ic_search_poi_location ) ); - mAMap.setMyLocationStyle( style ); - } - } - - @Override - public void recoverLockMode() { - if ( checkAMapView() ) { - mMapView.recoverLockMode(); - } - } - - @Override - public void displayOverview() { - if ( checkAMapView() ) { - mMapView.displayOverview(); - } + return mMapView.getContext(); } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java index c1afede122..dee097f456 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java @@ -35,6 +35,7 @@ public class NaviClient implements IMogoNavi { private MogoNaviConfig mMogoNaviConfig = new MogoNaviConfig(); private static volatile NaviClient sInstance; + private boolean mIsRealNavi; private NaviClient( Context context ) { mAMapNavi = AMapNavi.getInstance( context ); @@ -119,12 +120,14 @@ public class NaviClient implements IMogoNavi { } } + @Override - public void startNavi() { + public void startNavi( boolean isRealNavi ) { if ( mAMapNaviListener.isStopped() ) { return; } - mAMapNavi.startNavi( isRealNavi() ? NaviType.GPS : NaviType.EMULATOR ); + mIsRealNavi = isRealNavi; + mAMapNavi.startNavi( isRealNavi ? NaviType.GPS : NaviType.EMULATOR ); } @Override @@ -146,10 +149,7 @@ public class NaviClient implements IMogoNavi { } public boolean isRealNavi() { - if ( mMogoNaviConfig != null ) { - return mMogoNaviConfig.isRealNavi(); - } - return true; + return mIsRealNavi; } public void handleClickedPolyline( Polyline polyline ) { diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java index c57d8c72a9..c72ff5ffcc 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java @@ -58,8 +58,10 @@ public interface IMogoNavi { /** * 开始导航 + * + * @param isRealNavi true - 实时导航 false - 模拟导航 */ - void startNavi(); + void startNavi( boolean isRealNavi ); /** * 是否正在导航 diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoNaviConfig.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoNaviConfig.java index 5e01890065..7dd04337bf 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoNaviConfig.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoNaviConfig.java @@ -33,13 +33,6 @@ public class MogoNaviConfig { */ private boolean multipleRoute = true; - /** - * 是否是正式的导航 - *
- * false 为模拟导航
- */
- private boolean realNavi = true;
-
/**
* 是否躲避拥堵
*/
@@ -84,17 +77,6 @@ public class MogoNaviConfig {
return this;
}
- /**
- * 导航模式
- *
- * @param realNavi true - 正式导航, false - 模拟导航
- * @return
- */
- public MogoNaviConfig realNavi( boolean realNavi ) {
- this.realNavi = realNavi;
- return this;
- }
-
public boolean isCongestion() {
return congestion;
}
@@ -114,8 +96,4 @@ public class MogoNaviConfig {
public boolean isMultipleRoute() {
return multipleRoute;
}
-
- public boolean isRealNavi() {
- return realNavi;
- }
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/EnumMapUI.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/EnumMapUI.java
index 923dbc64ad..560cb92a30 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/EnumMapUI.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/EnumMapUI.java
@@ -30,12 +30,7 @@ public enum EnumMapUI {
/**
* 夜晚模式
*/
- Type_Night( 4, 3 ),
-
- /**
- * 导航模式
- */
- Type_Navi( 5, 5 );
+ Type_Night( 4, 3 );
private int next;
private int code;
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
index 311e120f77..4dca64d5c6 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
@@ -82,9 +82,9 @@ public class MogoNavi implements IMogoNavi {
}
@Override
- public void startNavi() {
+ public void startNavi( boolean isRealNavi ) {
if ( mDelegate != null ) {
- mDelegate.startNavi();
+ mDelegate.startNavi( isRealNavi );
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
index d23e3410f1..82e8ea9a7f 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
@@ -38,7 +38,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoMapService.registerHostMapListener( mMogoModuleHandler );
mMogoMapService.registerHostNaviListener( mMogoModuleHandler );
}
- mMogoModuleHandler.loadMap( R.id.module_main_id_map_container );
+ mMogoModuleHandler.loadMap( R.id.module_main_id_map_fragment_container );
Collection< IMogoModuleProvider > providers = mMogoModuleHandler.loadCards();
for ( IMogoModuleProvider provider : providers ) {
diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
index 75738ffe4f..5c7cf1c14a 100644
--- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
+++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
@@ -12,7 +12,7 @@
app:layout_constraintTop_toTopOf="parent" />