add new func

This commit is contained in:
zhongchao
2021-05-07 20:29:59 +08:00
parent c018c2e4d6
commit f3510e3570
25 changed files with 671 additions and 448 deletions

View File

@@ -50,6 +50,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.map.uicontroller.VisualAngleMode;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
@@ -479,6 +480,16 @@ public class AMapNaviViewWrapper implements IMogoMapView,
}
}
@Override
public void changeMapVisualAngle(VisualAngleMode angelMode) {
}
@Override
public VisualAngleMode getCurrentMapVisualAngle() {
return null;
}
private void setUIMode( EnumMapUI ui, AMapNaviViewOptions options ) {
this.mCurrentUIMode = ui;
switch ( ui ) {

View File

@@ -8,7 +8,6 @@ import android.location.Location;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Trace;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Interpolator;
@@ -28,7 +27,6 @@ import com.amap.api.maps.model.Polyline;
import com.amap.api.maps.model.animation.Animation;
import com.amap.api.maps.model.animation.TranslateAnimation;
import com.amap.api.navi.model.NaviInfo;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.IMogoMap;
import com.mogo.map.IMogoMapView;
import com.mogo.map.MogoLatLng;
@@ -47,6 +45,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.map.uicontroller.VisualAngleMode;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.utils.NetworkUtils;
import com.mogo.utils.WindowUtils;
@@ -384,6 +383,16 @@ public class AMapViewWrapper implements IMogoMapView,
}
}
@Override
public void changeMapVisualAngle(VisualAngleMode angelMode) {
}
@Override
public VisualAngleMode getCurrentMapVisualAngle() {
return null;
}
private boolean checkMapView() {
if ( mMapView == null || mMapView.getMap() == null ) {
Logger.e( TAG, "高德mapView实例为空请检查" );

View File

@@ -7,13 +7,13 @@ import android.view.View;
import android.view.animation.Interpolator;
import com.mogo.map.MogoLatLng;
import com.mogo.map.MogoMap;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.uicontroller.CarCursorOption;
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.map.uicontroller.VisualAngleMode;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.utils.logger.Logger;
@@ -92,6 +92,16 @@ public class AMapUIController implements IMogoMapUIController {
}
}
@Override
public void changeMapVisualAngle(VisualAngleMode angelMode) {
}
@Override
public VisualAngleMode getCurrentMapVisualAngle() {
return null;
}
@Override
public void moveToCenter(MogoLatLng latLng, boolean animate) {
if (mClient != null) {

View File

@@ -67,7 +67,7 @@ dependencies {
implementation project(':foudations:mogo-commons')
}
implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.15'
implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.16'
// implementation 'com.zhidaoauto.machine:map:1.0.0-vr-test-3.4'
}

View File

@@ -33,12 +33,11 @@ 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.map.uicontroller.VisualAngleMode;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.utils.TipToast;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import com.zhidaoauto.map.sdk.open.MapAutoApi;
import com.zhidaoauto.map.sdk.open.abs.MapStatusListener;
import com.zhidaoauto.map.sdk.open.abs.OnCameraChangeListener;
@@ -46,6 +45,7 @@ import com.zhidaoauto.map.sdk.open.abs.OnMapClickListener;
import com.zhidaoauto.map.sdk.open.abs.OnMapLoadedListener;
import com.zhidaoauto.map.sdk.open.abs.OnMapStyleListener;
import com.zhidaoauto.map.sdk.open.abs.OnMapTouchListener;
import com.zhidaoauto.map.sdk.open.abs.OnMapViewVisualAngleChangeListener;
import com.zhidaoauto.map.sdk.open.camera.CameraPosition;
import com.zhidaoauto.map.sdk.open.camera.CameraUpdateFactory;
import com.zhidaoauto.map.sdk.open.camera.LatLngBounds;
@@ -70,6 +70,10 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import static com.mogo.map.uicontroller.VisualAngleMode.MODE_CLOSE_SIGHT;
import static com.mogo.map.uicontroller.VisualAngleMode.MODE_LONG_SIGHT;
import static com.mogo.map.uicontroller.VisualAngleMode.MODE_MEDIUM_SIGHT;
public class AMapViewWrapper implements IMogoMapView,
IMogoMapUIController,
LocationListener,
@@ -80,28 +84,26 @@ public class AMapViewWrapper implements IMogoMapView,
OnMapTouchListener,
OnMarkClickListener,
OnMapStyleListener,
MapStyleController.IMapStyleAutoChangedListener {
MapStyleController.IMapStyleAutoChangedListener, OnMapViewVisualAngleChangeListener {
private static final String TAG = "AMapViewWrapper";
private final MapAutoView mMapView;
private IMogoMap mIMap;
private final IMogoMap mIMap;
private AMapMarkerClickHandler mMarkerClickHandler;
private EnumMapUI mCurrentCarUIMode;
private boolean mIsCarLocked = false;
private int mLockZoom = 16;
private long startTime;
private float mDefaultZoomLevel = 16.0f;
private final CarCursorOption DEFAULT_OPTION = new CarCursorOption.Builder()
.carCursorRes(R.drawable.map_api_ic_current_location2)
.naviCursorRes(R.drawable.ic_amap_navi_cursor)
.build();
private CarCursorOption mCarCursorOption = DEFAULT_OPTION;
private Location mLastDriveLocationShadow = null;
private EnumMapUI mCurrentCarUIMode;
private EnumMapUI mCurrentUI;
private VisualAngleMode mVisualAngleMode = MODE_MEDIUM_SIGHT;
private int mLockZoom = 16;
private long startTime;
private float mDefaultZoomLevel = 16.0f;
private boolean mIsCarLocked = false;
private boolean mIsLightStyle = false;
private boolean mMapLoaded = false;
private boolean mIsFirstLocated = true;
@@ -206,6 +208,7 @@ public class AMapViewWrapper implements IMogoMapView,
mMapView.registerListener(this, MapAutoApi.LISTENER_TYPE_3D);
mMapView.setMOnCameraChangeListener(this);
mMapView.setOnMapStyleListener(this);
mMapView.setOnMapViewVisualAngleChangeListener(this);
Logger.d(TAG, "styleop - initListeners - setOnMapStyleListener - view %s", mMapView);
// mMapView.setOnPolylineClickListener( this );
@@ -371,6 +374,20 @@ public class AMapViewWrapper implements IMogoMapView,
}
}
@Override
public void changeMapVisualAngle(VisualAngleMode angelMode) {
MapAutoViewHelper mapAutoViewHelper = mMapView.getMapAutoViewHelper();
if (mapAutoViewHelper != null) {
mVisualAngleMode = angelMode;
mapAutoViewHelper.setMapViewVisualAngle(angelMode.getCode());
}
}
@Override
public VisualAngleMode getCurrentMapVisualAngle() {
return mVisualAngleMode;
}
@Override
public void moveToCenter(MogoLatLng latLng) {
moveToCenter(latLng, true);
@@ -703,8 +720,6 @@ public class AMapViewWrapper implements IMogoMapView,
} else {
if (mCarCursorOption.getCarCursorRes() != 0) {
style.myLocationIcon(mCarCursorOption.getCarCursorRes());
} else {
style.myLocationIcon(mCarCursorOption.getCarCursorRes());
}
}
mMapView.getMapAutoViewHelper().setMyLocationStyle(style);
@@ -728,7 +743,7 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public long getTileId(double lon, double lat) {
return getMap().getUIController().getTileId(lon,lat);
return getMap().getUIController().getTileId(lon, lat);
}
@Override
@@ -856,7 +871,7 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void onMapLoaded() {
Logger.i(TAG, "autoop--onMapLoaded: ");
mMapView.getMapAutoViewHelper().setRenderFrequency(true,50);
mMapView.getMapAutoViewHelper().setRenderFrequency(true, 50);
MogoMapListenerHandler.getInstance().onMapLoaded();
mMapLoaded = true;
CameraPosition cameraPosition = mMapView.getMapAutoViewHelper().getCameraPosition();
@@ -893,6 +908,24 @@ public class AMapViewWrapper implements IMogoMapView,
// Logger.i( TAG, "mapop--onMapStatusChanged-: " + type + "," + value );
}
@Override
public void onMapViewVisualAngleChange(int i) {
MogoMapListenerHandler.getInstance().onMapVisualAngleChanged(getVisualAngleMode(i));
}
private VisualAngleMode getVisualAngleMode(int mode) {
switch (mode) {
case 0:
return MODE_CLOSE_SIGHT;
case 1:
return MODE_MEDIUM_SIGHT;
case 2:
return MODE_LONG_SIGHT;
default:
throw new IllegalStateException("mode is unCorrect");
}
}
@Override
public void onCameraChange(int type, int value) {
// Logger.i( TAG, "mapop--onCameraChange-: " + type + "," + value );
@@ -1028,7 +1061,6 @@ public class AMapViewWrapper implements IMogoMapView,
}
}
//TODO
@Override
public void syncLocation2Map(JSONObject data) {
if (!checkAMapView()) {
@@ -1189,4 +1221,5 @@ public class AMapViewWrapper implements IMogoMapView,
public void setMarkerInfoResName(String speedVal, String val) {
ResIdCache.putVal(speedVal, val);
}
}

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.map.uicontroller.VisualAngleMode;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.zhidaoauto.map.sdk.open.MapAutoApi;
@@ -38,9 +39,9 @@ public class AMapUIController implements IMogoMapUIController {
}
public static AMapUIController getInstance() {
if ( sInstance == null ) {
synchronized ( AMapUIController.class ) {
if ( sInstance == null ) {
if (sInstance == null) {
synchronized (AMapUIController.class) {
if (sInstance == null) {
sInstance = new AMapUIController();
}
}
@@ -48,7 +49,7 @@ public class AMapUIController implements IMogoMapUIController {
return sInstance;
}
public void initClient( IMogoMapUIController client ) {
public void initClient(IMogoMapUIController client) {
this.mClient = client;
}
@@ -57,87 +58,102 @@ public class AMapUIController implements IMogoMapUIController {
}
@Override
public void setTrafficEnabled( boolean visible ) {
if ( mClient != null ) {
mClient.setTrafficEnabled( visible );
public void setTrafficEnabled(boolean visible) {
if (mClient != null) {
mClient.setTrafficEnabled(visible);
}
}
@Override
public MapControlResult changeZoom( boolean zoom ) {
if ( mClient != null ) {
return mClient.changeZoom( zoom );
public MapControlResult changeZoom(boolean zoom) {
if (mClient != null) {
return mClient.changeZoom(zoom);
}
return MapControlResult.ERROR;
}
@Override
public MapControlResult changeZoom( float zoom ) {
if ( mClient != null ) {
return mClient.changeZoom( zoom );
public MapControlResult changeZoom(float zoom) {
if (mClient != null) {
return mClient.changeZoom(zoom);
}
return MapControlResult.ERROR;
}
@Override
public void changeMapMode( EnumMapUI mode ) {
if ( mClient != null ) {
mClient.changeMapMode( mode );
public void changeMapMode(EnumMapUI mode) {
if (mClient != null) {
mClient.changeMapMode(mode);
}
}
@Override
public void moveToCenter( MogoLatLng latLng, boolean animate ) {
if ( mClient != null ) {
mClient.moveToCenter( latLng, animate );
public void changeMapVisualAngle(VisualAngleMode angelMode) {
if (mClient != null) {
mClient.changeMapVisualAngle(angelMode);
}
}
@Override
public void showMyLocation( boolean visible ) {
if ( mClient != null ) {
mClient.showMyLocation( visible );
public VisualAngleMode getCurrentMapVisualAngle() {
if (mClient != null) {
return mClient.getCurrentMapVisualAngle();
}
return null;
}
@Override
public void moveToCenter(MogoLatLng latLng, boolean animate) {
if (mClient != null) {
mClient.moveToCenter(latLng, animate);
}
}
@Override
public void showMyLocation( View view ) {
if ( mClient != null ) {
mClient.showMyLocation( view );
public void showMyLocation(boolean visible) {
if (mClient != null) {
mClient.showMyLocation(visible);
}
}
@Override
public void showMyLocation(View view) {
if (mClient != null) {
mClient.showMyLocation(view);
}
}
@Override
public void recoverLockMode() {
if ( mClient != null ) {
if (mClient != null) {
mClient.recoverLockMode();
}
}
@Override
public void loseLockMode() {
if ( mClient != null ) {
if (mClient != null) {
mClient.loseLockMode();
}
}
@Override
public void setLockZoom( int var1 ) {
if ( mClient != null ) {
mClient.setLockZoom( var1 );
public void setLockZoom(int var1) {
if (mClient != null) {
mClient.setLockZoom(var1);
}
}
@Override
public void displayOverview( Rect bounds ) {
if ( mClient != null ) {
mClient.displayOverview( bounds );
public void displayOverview(Rect bounds) {
if (mClient != null) {
mClient.displayOverview(bounds);
}
}
@Override
public float getScalePerPixel() {
if ( mClient != null ) {
if (mClient != null) {
return mClient.getScalePerPixel();
}
return 0;
@@ -145,7 +161,7 @@ public class AMapUIController implements IMogoMapUIController {
@Override
public float getZoomLevel() {
if ( mClient != null ) {
if (mClient != null) {
return mClient.getZoomLevel();
}
return 0;
@@ -153,15 +169,15 @@ public class AMapUIController implements IMogoMapUIController {
@Override
public float getRoadWidth(double lon, double lat, float angle, boolean isGpsLocation, boolean isRTK) {
if ( mClient != null ) {
return mClient.getRoadWidth(lon,lat,angle,isGpsLocation,isRTK);
if (mClient != null) {
return mClient.getRoadWidth(lon, lat, angle, isGpsLocation, isRTK);
}
return 0;
}
@Override
public MogoLatLng getCameraNorthEastPosition() {
if ( mClient != null ) {
if (mClient != null) {
return mClient.getCameraNorthEastPosition();
}
return null;
@@ -169,7 +185,7 @@ public class AMapUIController implements IMogoMapUIController {
@Override
public MogoLatLng getCameraSouthWestPosition() {
if ( mClient != null ) {
if (mClient != null) {
return mClient.getCameraSouthWestPosition();
}
return null;
@@ -177,124 +193,124 @@ public class AMapUIController implements IMogoMapUIController {
@Override
public MogoLatLng getWindowCenterLocation() {
if ( mClient != null ) {
if (mClient != null) {
return mClient.getWindowCenterLocation();
}
return null;
}
@Override
public void setPointToCenter( double mapCenterX, double mapCenterY ) {
if ( mClient != null ) {
mClient.setPointToCenter( mapCenterX, mapCenterY );
public void setPointToCenter(double mapCenterX, double mapCenterY) {
if (mClient != null) {
mClient.setPointToCenter(mapCenterX, mapCenterY);
}
}
@Override
public Point getLocationPointInScreen( MogoLatLng latLng ) {
if ( mClient != null ) {
return mClient.getLocationPointInScreen( latLng );
public Point getLocationPointInScreen(MogoLatLng latLng) {
if (mClient != null) {
return mClient.getLocationPointInScreen(latLng);
}
return null;
}
@Override
public MogoLatLng getLocationMogoLatLngInScreen( Point point ) {
if ( mClient != null ) {
return mClient.getLocationMogoLatLngInScreen( point );
public MogoLatLng getLocationMogoLatLngInScreen(Point point) {
if (mClient != null) {
return mClient.getLocationMogoLatLngInScreen(point);
}
return null;
}
@Override
public void startJumpAnimation( IMogoMarker marker, float high, Interpolator interpolator,
long duration ) {
if ( mClient != null ) {
mClient.startJumpAnimation( marker, high, interpolator, duration );
public void startJumpAnimation(IMogoMarker marker, float high, Interpolator interpolator,
long duration) {
if (mClient != null) {
mClient.startJumpAnimation(marker, high, interpolator, duration);
}
}
@Override
public void setRenderFps( int fps ) {
if ( mClient != null ) {
mClient.setRenderFps( fps );
public void setRenderFps(int fps) {
if (mClient != null) {
mClient.setRenderFps(fps);
}
}
@Override
public void showBounds( String tag, MogoLatLng carPosition, List< MogoLatLng > lonLats, Rect bound, boolean lockCarPosition ) {
if ( mClient != null ) {
mClient.showBounds( tag, carPosition, lonLats, bound, lockCarPosition );
public void showBounds(String tag, MogoLatLng carPosition, List<MogoLatLng> lonLats, Rect bound, boolean lockCarPosition) {
if (mClient != null) {
mClient.showBounds(tag, carPosition, lonLats, bound, lockCarPosition);
}
}
@Override
public void forceRender() {
if ( mClient != null ) {
if (mClient != null) {
mClient.forceRender();
}
}
@Override
public float calculateLineDistance( MogoLatLng p1, MogoLatLng p2 ) throws Exception {
if ( mClient != null ) {
return mClient.calculateLineDistance( p1, p2 );
public float calculateLineDistance(MogoLatLng p1, MogoLatLng p2) throws Exception {
if (mClient != null) {
return mClient.calculateLineDistance(p1, p2);
}
return 0;
}
@Override
public EnumMapUI getCurrentUiMode() {
if ( mClient != null ) {
if (mClient != null) {
return mClient.getCurrentUiMode();
}
return null;
}
@Override
public void changeMyLocation( Location location ) {
if ( mClient != null ) {
mClient.changeMyLocation( location );
public void changeMyLocation(Location location) {
if (mClient != null) {
mClient.changeMyLocation(location);
}
}
@Override
public boolean isCarLocked() {
if ( mClient != null ) {
if (mClient != null) {
return mClient.isCarLocked();
}
return false;
}
@Override
public void setCarCursorOption( CarCursorOption option ) {
if ( mClient != null ) {
mClient.setCarCursorOption( option );
public void setCarCursorOption(CarCursorOption option) {
if (mClient != null) {
mClient.setCarCursorOption(option);
}
}
@Override
public MapCameraPosition getMapCameraPosition() {
if ( mClient != null ) {
if (mClient != null) {
return mClient.getMapCameraPosition();
}
return null;
}
@Override
public void changeBearing( float bearing ) {
if ( mClient != null ) {
mClient.changeBearing( bearing );
public void changeBearing(float bearing) {
if (mClient != null) {
mClient.changeBearing(bearing);
}
}
@Override
public long getTileId(double lon, double lat) {
return MapAutoApi.INSTANCE.getTileID(lon,lat,13); // 13为默认获取瓦片层级级别
return MapAutoApi.INSTANCE.getTileID(lon, lat, 13); // 13为默认获取瓦片层级级别
}
@Override
public void setAnchorScale( float x, float y ) {
public void setAnchorScale(float x, float y) {
}
@@ -304,51 +320,51 @@ public class AMapUIController implements IMogoMapUIController {
}
@Override
public void setAnchorRate( float rate ) {
public void setAnchorRate(float rate) {
}
@Override
public void rtkEnable( boolean enable ) {
if ( mClient != null ) {
mClient.rtkEnable( enable );
public void rtkEnable(boolean enable) {
if (mClient != null) {
mClient.rtkEnable(enable);
}
}
@Override
public void syncLocation2Map( JSONObject data ) {
if ( mClient != null ) {
mClient.syncLocation2Map( data );
public void syncLocation2Map(JSONObject data) {
if (mClient != null) {
mClient.syncLocation2Map(data);
}
}
@Override
public void openVrMode( boolean zoomGestureEnable ) {
if ( mClient != null ) {
mClient.openVrMode( zoomGestureEnable );
public void openVrMode(boolean zoomGestureEnable) {
if (mClient != null) {
mClient.openVrMode(zoomGestureEnable);
}
}
@Override
public double[] matchRoad( String id, double lon, double lat, double angle, boolean isGpsLocation, boolean isRTK ) {
if ( mClient != null ) {
return mClient.matchRoad( id, lon, lat, angle, isGpsLocation, isRTK );
public double[] matchRoad(String id, double lon, double lat, double angle, boolean isGpsLocation, boolean isRTK) {
if (mClient != null) {
return mClient.matchRoad(id, lon, lat, angle, isGpsLocation, isRTK);
}
return null;
}
@Override
public String getMarkerInfoResName( String speedVal ) {
if ( mClient != null ) {
return mClient.getMarkerInfoResName( speedVal );
public String getMarkerInfoResName(String speedVal) {
if (mClient != null) {
return mClient.getMarkerInfoResName(speedVal);
}
return null;
}
@Override
public void setMarkerInfoResName( String speedVal, String val ) {
if ( mClient != null ) {
mClient.setMarkerInfoResName( speedVal, val );
public void setMarkerInfoResName(String speedVal, String val) {
if (mClient != null) {
mClient.setMarkerInfoResName(speedVal, val);
}
}

View File

@@ -3,9 +3,9 @@ package com.mogo.map.listener;
import android.view.MotionEvent;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.model.MogoPoi;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.VisualAngleMode;
/**
* @author congtaowang
@@ -18,42 +18,56 @@ public interface IMogoMapListener {
/**
* 地图加载完毕
*/
default void onMapLoaded(){};
default void onMapLoaded() {
}
/**
* 地图点击
*
* @param motionEvent
*/
default void onTouch( MotionEvent motionEvent ){};
default void onTouch(MotionEvent motionEvent) {
}
/**
* 地图上的任意poi点击
*
* @param poi
*/
default void onPOIClick( MogoPoi poi ){};
default void onPOIClick(MogoPoi poi) {
}
/**
* 地图点击
*
* @param latLng
*/
default void onMapClick( MogoLatLng latLng ){}
default void onMapClick(MogoLatLng latLng) {
}
/**
* 地图锁定
*
* @param isLock
*/
default void onLockMap( boolean isLock ){}
default void onLockMap(boolean isLock) {
}
/**
* 地图白天黑夜、导航视角切换
*
* @param ui
*/
default void onMapModeChanged( EnumMapUI ui ){}
default void onMapModeChanged(EnumMapUI ui) {
}
/**
* 地图视距切换回调
*
* @param visualAngleMode
*/
default void onMapVisualAngleChanged(VisualAngleMode visualAngleMode) {
}
/**
* @param latLng 中点的经纬度
@@ -61,5 +75,6 @@ public interface IMogoMapListener {
* @param tilt 倾斜度
* @param bearing 旋转角度
*/
default void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ){}
default void onMapChanged(MogoLatLng latLng, float zoom, float tilt, float bearing) {
}
}

View File

@@ -3,10 +3,9 @@ package com.mogo.map.listener;
import android.view.MotionEvent;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.VisualAngleMode;
/**
* @author congtaowang
@@ -22,9 +21,9 @@ public class MogoMapListenerHandler implements IMogoMapListener, IMogoMapListene
}
public static MogoMapListenerHandler getInstance() {
if ( sInstance == null ) {
synchronized ( MogoMapListenerHandler.class ) {
if ( sInstance == null ) {
if (sInstance == null) {
synchronized (MogoMapListenerHandler.class) {
if (sInstance == null) {
sInstance = new MogoMapListenerHandler();
}
}
@@ -42,7 +41,7 @@ public class MogoMapListenerHandler implements IMogoMapListener, IMogoMapListene
private IMogoMapListener mDelegateListener = null;
@Override
public void registerHostMapListener( IMogoMapListener listener ) {
public void registerHostMapListener(IMogoMapListener listener) {
mDelegateListener = listener;
}
@@ -53,50 +52,57 @@ public class MogoMapListenerHandler implements IMogoMapListener, IMogoMapListene
@Override
public void onMapLoaded() {
if ( mDelegateListener != null ) {
if (mDelegateListener != null) {
mDelegateListener.onMapLoaded();
}
}
@Override
public void onTouch( MotionEvent motionEvent ) {
if ( mDelegateListener != null ) {
mDelegateListener.onTouch( motionEvent );
public void onTouch(MotionEvent motionEvent) {
if (mDelegateListener != null) {
mDelegateListener.onTouch(motionEvent);
}
}
@Override
public void onPOIClick( MogoPoi poi ) {
if ( mDelegateListener != null ) {
mDelegateListener.onPOIClick( poi );
public void onPOIClick(MogoPoi poi) {
if (mDelegateListener != null) {
mDelegateListener.onPOIClick(poi);
}
}
@Override
public void onMapClick( MogoLatLng latLng ) {
if ( mDelegateListener != null ) {
mDelegateListener.onMapClick( latLng );
public void onMapClick(MogoLatLng latLng) {
if (mDelegateListener != null) {
mDelegateListener.onMapClick(latLng);
}
}
@Override
public void onLockMap( boolean isLock ) {
if ( mDelegateListener != null ) {
mDelegateListener.onLockMap( isLock );
public void onLockMap(boolean isLock) {
if (mDelegateListener != null) {
mDelegateListener.onLockMap(isLock);
}
}
@Override
public void onMapModeChanged( EnumMapUI ui ) {
if ( mDelegateListener != null ) {
mDelegateListener.onMapModeChanged( ui );
public void onMapModeChanged(EnumMapUI ui) {
if (mDelegateListener != null) {
mDelegateListener.onMapModeChanged(ui);
}
}
@Override
public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) {
if ( mDelegateListener != null ) {
mDelegateListener.onMapChanged( location, zoom, tilt, bearing );
public void onMapVisualAngleChanged(VisualAngleMode visualAngleMode) {
if (mDelegateListener != null) {
mDelegateListener.onMapVisualAngleChanged(visualAngleMode);
}
}
@Override
public void onMapChanged(MogoLatLng location, float zoom, float tilt, float bearing) {
if (mDelegateListener != null) {
mDelegateListener.onMapChanged(location, zoom, tilt, bearing);
}
}
}

View File

@@ -37,7 +37,7 @@ public class MogoLocationListenerRegister implements IMogoLocationListenerRegist
return sInstance;
}
private Set< IMogoLocationListener > sListeners = new HashSet<>( 10 );
private final Set< IMogoLocationListener > sListeners = new HashSet<>( 10 );
/**
* 注册定位回调

View File

@@ -11,51 +11,70 @@ public enum EnumMapUI {
/**
* 正北朝上2D
*/
NorthUP_2D( 0, 1 ),
NorthUP_2D(0, 1),
/**
* 车头朝上2D
*/
CarUp_2D( 1, 2 ),
CarUp_2D(1, 2),
/**
* 3D,只能头朝上
*/
CarUp_3D( 2, 0 ),
CarUp_3D(2, 0),
/**
* 白天模式
*/
Type_Light( 3, 5 ),
Type_Light(3, 5),
/**
* 夜晚模式
*/
Type_Night( 4, 4 ),
Type_Night(4, 4),
/**
* 夜晚模式
*/
Type_AUTO_LIGHT_Night( 5, 3 ),
Type_AUTO_LIGHT_Night(5, 3),
/**
* 自研地图的VR模式
*/
Type_VR( 0, 0 );
Type_VR(0, 0),
/**
* 视距远景
*/
MODE_LONG_SIGHT(6, 7),
/**
* 视距中景
*/
MODE_MEDIUM_SIGHT(7, 8),
/**
* 视距近景
*/
MODE_CLOSE_SIGHT(8, 6);
private int next;
private int code;
EnumMapUI( int code, int next ) {
EnumMapUI(int code, int next) {
this.code = code;
this.next = next;
}
public EnumMapUI next() {
for ( EnumMapUI value : EnumMapUI.values() ) {
if ( value.code == next ) {
for (EnumMapUI value : EnumMapUI.values()) {
if (value.code == next) {
return value;
}
}
return this;
}
public int getCode(){
return code;
}
}

View File

@@ -28,50 +28,64 @@ public interface IMogoMapUIController {
/**
* 实时路况
*/
void setTrafficEnabled( boolean visible );
void setTrafficEnabled(boolean visible);
/**
* 地图缩放
*
* @param zoomIn true - 放大 false - 缩小
*/
MapControlResult changeZoom( boolean zoomIn );
MapControlResult changeZoom(boolean zoomIn);
/**
* 修改缩放级别
*/
MapControlResult changeZoom( float zoom );
MapControlResult changeZoom(float zoom);
/**
* 切换2D/3D模式
*
* @param mode true - 3D模式 false - 2D模式
*/
void changeMapMode( EnumMapUI mode );
void changeMapMode(EnumMapUI mode);
/**
* 切换3D模式下远距中距近距视角
*
* @param angelMode {@link VisualAngleMode}
*/
void changeMapVisualAngle(VisualAngleMode angelMode);
/**
* 获得当前地图视距模式
*
* @return {@link VisualAngleMode}
*/
VisualAngleMode getCurrentMapVisualAngle();
/**
* 将地图移动至当前位置
*/
default void moveToCenter( MogoLatLng latLng ) {
moveToCenter( latLng, false );
default void moveToCenter(MogoLatLng latLng) {
moveToCenter(latLng, false);
}
/**
* 将地图移动至当前位置
*/
void moveToCenter( MogoLatLng latLng, boolean animate );
void moveToCenter(MogoLatLng latLng, boolean animate);
/**
* 显示我的位置
*
* @param visible true - 显示 false - 不显示
*/
void showMyLocation( boolean visible );
void showMyLocation(boolean visible);
/**
* @param view
*/
void showMyLocation( View view );
void showMyLocation(View view);
/**
* 强调自车位置,加个动画突显一下自车位置
@@ -83,7 +97,7 @@ public interface IMogoMapUIController {
*
* @param location
*/
void changeMyLocation( Location location );
void changeMyLocation(Location location);
/**
* 锁车
@@ -100,14 +114,14 @@ public interface IMogoMapUIController {
*
* @param var1 级别 3-20
*/
void setLockZoom( int var1 );
void setLockZoom(int var1);
/**
* 预览全程
*
* @param bounds 显示范围
*/
void displayOverview( Rect bounds );
void displayOverview(Rect bounds);
/**
* 获取比例尺数据
@@ -147,17 +161,17 @@ public interface IMogoMapUIController {
* @param mapCenterX x 点位置x值与地图宽度的比例
* @param mapCenterY y 点位置x值与地图高度的比例
*/
void setPointToCenter( double mapCenterX, double mapCenterY );
void setPointToCenter(double mapCenterX, double mapCenterY);
/**
* 获取经纬度对应的屏幕的位置
*/
Point getLocationPointInScreen( MogoLatLng latLng );
Point getLocationPointInScreen(MogoLatLng latLng);
/**
* 获取像素点对应的经纬度
*/
MogoLatLng getLocationMogoLatLngInScreen( Point point );
MogoLatLng getLocationMogoLatLngInScreen(Point point);
/**
* marker 跳跃动画
@@ -170,13 +184,13 @@ public interface IMogoMapUIController {
* @param duration 动画时间
*/
@Deprecated
void startJumpAnimation( IMogoMarker marker, float high, Interpolator interpolator,
long duration );
void startJumpAnimation(IMogoMarker marker, float high, Interpolator interpolator,
long duration);
/**
* 设置刷新帧率
*/
void setRenderFps( int fps );
void setRenderFps(int fps);
/**
* @param tag 调用业务
@@ -185,7 +199,7 @@ public interface IMogoMapUIController {
* @param bound 地图上可显示的范围
* @param lockCarPosition 是否锁定车辆位置
*/
void showBounds( String tag, MogoLatLng carPosition, List< MogoLatLng > lonLats, Rect bound, boolean lockCarPosition );
void showBounds(String tag, MogoLatLng carPosition, List<MogoLatLng> lonLats, Rect bound, boolean lockCarPosition);
/**
* 强制刷新地图
@@ -199,7 +213,7 @@ public interface IMogoMapUIController {
* @param p2
* @return
*/
float calculateLineDistance( MogoLatLng p1, MogoLatLng p2 ) throws Exception;
float calculateLineDistance(MogoLatLng p1, MogoLatLng p2) throws Exception;
/**
* 当前的视图模式
@@ -221,7 +235,7 @@ public interface IMogoMapUIController {
* @param option 为空时使用
* 默认配置
*/
void setCarCursorOption( @Nullable CarCursorOption option );
void setCarCursorOption(@Nullable CarCursorOption option);
/**
* 获取地图视图描述快照
@@ -235,12 +249,13 @@ public interface IMogoMapUIController {
*
* @param bearing
*/
void changeBearing( float bearing );
void changeBearing(float bearing);
void setAdasRecognizedResult(ADASRecognizedResult result);
/**
* 获取瓦片id
*
* @param lon 经度
* @param lat 纬度
* @return 瓦片id
@@ -248,11 +263,11 @@ public interface IMogoMapUIController {
long getTileId(double lon, double lat);
default void setAnchorScale( float x, float y ) {
default void setAnchorScale(float x, float y) {
}
default void setAnchorRate( float rate ) {
default void setAnchorRate(float rate) {
}
@@ -265,7 +280,7 @@ public interface IMogoMapUIController {
*
* @param enable
*/
default void rtkEnable( boolean enable ) {
default void rtkEnable(boolean enable) {
}
@@ -278,7 +293,7 @@ public interface IMogoMapUIController {
*
* @param data
*/
default void syncLocation2Map( JSONObject data ) {
default void syncLocation2Map(JSONObject data) {
}
@@ -287,7 +302,7 @@ public interface IMogoMapUIController {
*
* @param zoomGestureEnable 是否支持手势缩放改变地图样式
*/
default void openVrMode( boolean zoomGestureEnable ) {
default void openVrMode(boolean zoomGestureEnable) {
}
@@ -301,7 +316,7 @@ public interface IMogoMapUIController {
* @param isRTK
* @return
*/
default double[] matchRoad(String id, double lon, double lat, double angle, boolean isGpsLocation, boolean isRTK ) {
default double[] matchRoad(String id, double lon, double lat, double angle, boolean isGpsLocation, boolean isRTK) {
return null;
}
@@ -311,19 +326,21 @@ public interface IMogoMapUIController {
/**
* 获取车速资源缓存 id
*
* @param speedVal
* @return
*/
default String getMarkerInfoResName(String speedVal){
default String getMarkerInfoResName(String speedVal) {
return "";
}
/**
* 获取车速资源缓存 id
*
* @param speedVal
* @return
*/
default void setMarkerInfoResName(String speedVal, String val){
default void setMarkerInfoResName(String speedVal, String val) {
}
}

View File

@@ -0,0 +1,10 @@
package com.mogo.map.uicontroller;
public interface IMogoMapVisualAngle {
boolean isLongSight();
boolean isCloseSight();
boolean isMediumSight();
}

View File

@@ -0,0 +1,44 @@
package com.mogo.map.uicontroller;
public enum VisualAngleMode implements IMogoMapVisualAngle {
/**
* 视距近景
*/
MODE_CLOSE_SIGHT(0),
/**
* 视距中景
*/
MODE_MEDIUM_SIGHT(1),
/**
* 视距远景
*/
MODE_LONG_SIGHT(2);
private int code;
VisualAngleMode(int code) {
this.code = code;
}
public int getCode() {
return code;
}
@Override
public boolean isLongSight() {
return code == MODE_LONG_SIGHT.getCode();
}
@Override
public boolean isCloseSight() {
return code == MODE_CLOSE_SIGHT.getCode();
}
@Override
public boolean isMediumSight() {
return code == MODE_MEDIUM_SIGHT.getCode();
}
}

View File

@@ -12,6 +12,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.map.uicontroller.VisualAngleMode;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.utils.logger.Logger;
@@ -91,6 +92,23 @@ public class MogoMapUIController implements IMogoMapUIController {
}
}
@Override
public void changeMapVisualAngle(VisualAngleMode angelMode) {
initDelegate();
if (mDelegate != null) {
Logger.d(TAG, "set VisualAngle: %s", angelMode.name());
mDelegate.changeMapVisualAngle(angelMode);
}
}
@Override
public VisualAngleMode getCurrentMapVisualAngle() {
initDelegate();
if (mDelegate != null) {
return mDelegate.getCurrentMapVisualAngle();
}
return null;
}
@Override
public void moveToCenter(MogoLatLng latLng, boolean animate) {