diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index 0a05343782..1b7e1ebc8b 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -273,6 +273,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void onTouch( MotionEvent motionEvent ) { MogoMapListenerHandler.getInstance().onTouch( motionEvent ); + changeMyLocationType2UnFollow(); } /** @@ -456,6 +457,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, break; } mMapView.setViewOptions( options ); + changeMyLocationType2Follow(); } } @@ -527,6 +529,12 @@ public class AMapNaviViewWrapper implements IMogoMapView, style = new MyLocationStyle(); } style.showMyLocation( visible ); + if ( mCurrentUIMode == EnumMapUI.CarUp_2D + || mCurrentUIMode == EnumMapUI.CarUp_3D ) { + style.myLocationType( MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER ); + } else { + style.myLocationType( MyLocationStyle.LOCATION_TYPE_FOLLOW ); + } if ( visible ) { // 强制刷新一遍车标 style.myLocationIcon( BitmapDescriptorFactory.fromResource( mCarCursorOption.getCarCursorRes() ) ); @@ -548,17 +556,69 @@ public class AMapNaviViewWrapper implements IMogoMapView, if ( style == null ) { style = new MyLocationStyle(); } + if ( mCurrentUIMode == EnumMapUI.CarUp_2D + || mCurrentUIMode == EnumMapUI.CarUp_3D ) { + style.myLocationType( MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER ); + } else { + style.myLocationType( MyLocationStyle.LOCATION_TYPE_FOLLOW ); + } style.showMyLocation( true ); style.myLocationIcon( BitmapDescriptorFactory.fromView( view ) ); mMapView.getMap().setMyLocationStyle( style ); } } + private void changeMyLocationType2UnFollow(){ + if ( mCurrentUIMode == null ) { + return; + } + if ( !checkAMapView() ) { + return; + } + MyLocationStyle style = getMyLocationStyle(); + if ( style == null ) { + style = new MyLocationStyle(); + } + switch ( mCurrentUIMode ) { + case NorthUP_2D: + style.myLocationType( MyLocationStyle.LOCATION_TYPE_FOLLOW_NO_CENTER ); + break; + case CarUp_2D: + case CarUp_3D: + style.myLocationType( MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER ); + break; + } + mMapView.getMap().setMyLocationStyle( style ); + } + + private void changeMyLocationType2Follow() { + if ( mCurrentUIMode == null ) { + return; + } + if ( !checkAMapView() ) { + return; + } + MyLocationStyle style = getMyLocationStyle(); + if ( style == null ) { + style = new MyLocationStyle(); + } + switch ( mCurrentUIMode ) { + case NorthUP_2D: + style.myLocationType( MyLocationStyle.LOCATION_TYPE_FOLLOW ); + break; + case CarUp_2D: + case CarUp_3D: + style.myLocationType( MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE ); + break; + } + mMapView.getMap().setMyLocationStyle( style ); + } + public void initMyLocation() { if ( checkAMapView() ) { mMapView.getMap().setMyLocationEnabled( true ); MyLocationStyle style = getMyLocationStyle(); - style.myLocationType( MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER ); + style.myLocationType( MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE ); style.interval( 1000 ); style.anchor( 0.5F, 0.5F ); style.strokeColor( Color.TRANSPARENT ); @@ -576,6 +636,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, } Logger.d( TAG, "锁车" ); mMapView.recoverLockMode(); + changeMyLocationType2Follow(); mIsCarLocked = true; } } diff --git a/modules/mogo-module-main/src/main/res/values-mdpi/dimens.xml b/modules/mogo-module-main/src/main/res/values-mdpi/dimens.xml new file mode 100644 index 0000000000..adabf11063 --- /dev/null +++ b/modules/mogo-module-main/src/main/res/values-mdpi/dimens.xml @@ -0,0 +1,30 @@ + + + + 350px + 8px + 352px + 370px + 32px + 140.5px + 18px + 20px + 10px + 144px + 352px + + 320px + 319px + + 110px + 10px + 15px + 460px + 444px + 350px + 10px + 16px + 658px + 8px + + \ No newline at end of file