package com.mogo.map; import android.graphics.Point; import android.graphics.Rect; import android.location.Location; import android.view.View; import android.view.animation.Interpolator; 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.utils.logger.Logger; import java.util.List; /** * @author congtaowang * @since 2019-12-26 *
* 描述 */ public class MogoMapUIController implements IMogoMapUIController { private static final String TAG = "MogoMapUIController"; private IMogoMapUIController mDelegate; private static volatile MogoMapUIController sInstance; private MogoMapUIController() { mDelegate = MogoMapDelegateFactory.getMapUIControllerDelegate(); } public static MogoMapUIController getInstance() { if (sInstance == null) { synchronized (MogoMapUIController.class) { if (sInstance == null) { sInstance = new MogoMapUIController(); } } } return sInstance; } public void setDelegate( IMogoMapUIController mDelegate ) { this.mDelegate = mDelegate; } public synchronized void release() { sInstance = null; } @Override public void setTrafficEnabled(boolean visible) { if (mDelegate != null) { mDelegate.setTrafficEnabled(visible); } } @Override public MapControlResult changeZoom( boolean zoom) { if (mDelegate != null) { return mDelegate.changeZoom(zoom); } return MapControlResult.ERROR; } @Override public MapControlResult changeZoom(float zoom) { if (mDelegate != null) { return mDelegate.changeZoom(zoom); } return MapControlResult.ERROR; } @Override public void changeMapMode(EnumMapUI mode) { if (mDelegate != null) { Logger.d( TAG, "set type: %s", mode.name() ); mDelegate.changeMapMode(mode); } } @Override public void moveToCenter(MogoLatLng latLng, boolean animate) { if (mDelegate != null) { mDelegate.moveToCenter(latLng, animate); } } @Override public void showMyLocation(boolean visible) { if (mDelegate != null) { mDelegate.showMyLocation(visible); } } @Override public void emphasizeMyLocation() { if ( mDelegate != null ) { mDelegate.emphasizeMyLocation(); } } @Override public void showMyLocation( View view ) { if ( mDelegate != null ) { mDelegate.showMyLocation( view ); } } @Override public void recoverLockMode() { if (mDelegate != null) { mDelegate.recoverLockMode(); } } @Override public void loseLockMode() { if ( mDelegate != null ) { mDelegate.loseLockMode(); } } @Override public void setLockZoom(int var1) { if (mDelegate != null) { mDelegate.setLockZoom(var1); } } @Override public void displayOverview( Rect bounds ) { if (mDelegate != null) { mDelegate.displayOverview(bounds); } } @Override public float getScalePerPixel() { if (mDelegate != null) { return mDelegate.getScalePerPixel(); } return 0; } @Override public float getZoomLevel() { if (mDelegate != null) { return mDelegate.getZoomLevel(); } return 0; } @Override public MogoLatLng getCameraNorthEastPosition() { if (mDelegate != null) { return mDelegate.getCameraNorthEastPosition(); } return null; } @Override public MogoLatLng getCameraSouthWestPosition() { if (mDelegate != null) { return mDelegate.getCameraSouthWestPosition(); } return null; } @Override public MogoLatLng getWindowCenterLocation() { if (mDelegate != null) { return mDelegate.getWindowCenterLocation(); } return null; } @Override public void setPointToCenter(double mapCenterX, double mapCenterY) { if (mDelegate != null) { mDelegate.setPointToCenter(mapCenterX, mapCenterY); } } @Override public Point getLocationPointInScreen( MogoLatLng latLng ) { if (mDelegate != null) { return mDelegate.getLocationPointInScreen(latLng); } return null; } @Override public MogoLatLng getLocationMogoLatLngInScreen(Point point) { if (mDelegate != null) { return mDelegate.getLocationMogoLatLngInScreen(point); } return null; } @Override public void startJumpAnimation( IMogoMarker marker, float high, Interpolator interpolator, long duration ) { if ( mDelegate != null ) { mDelegate.startJumpAnimation( marker, high, interpolator, duration ); } } @Override public void setRenderFps( int fps ) { if ( mDelegate != null ) { mDelegate.setRenderFps( fps ); } } @Override public void showBounds(String tag, MogoLatLng carPosition, List< MogoLatLng > lonLats, Rect bound, boolean lockCarPosition ) { if ( mDelegate != null ) { mDelegate.showBounds( tag, carPosition, lonLats, bound, lockCarPosition ); } } @Override public void forceRender() { if ( mDelegate != null ) { mDelegate.forceRender(); } } @Override public float calculateLineDistance( MogoLatLng p1, MogoLatLng p2 ) throws Exception { if ( mDelegate != null ) { return mDelegate.calculateLineDistance( p1, p2 ); } return 0; } @Override public EnumMapUI getCurrentUiMode() { if ( mDelegate != null ) { return mDelegate.getCurrentUiMode(); } return null; } @Override public void changeMyLocation( Location location ) { if ( mDelegate != null ) { mDelegate.changeMyLocation( location ); } } @Override public boolean isCarLocked() { if ( mDelegate != null ) { return mDelegate.isCarLocked(); } return false; } @Override public void setCarCursorOption( CarCursorOption option ) { if ( mDelegate != null ) { mDelegate.setCarCursorOption( option ); } } @Override public MapCameraPosition getMapCameraPosition() { if ( mDelegate != null ) { return mDelegate.getMapCameraPosition(); } return null; } @Override public void changeBearing( float bearing ) { if ( mDelegate != null ) { mDelegate.changeBearing( bearing ); } } @Override public void rtkEnable( boolean enable ) { if ( mDelegate != null ) { mDelegate.rtkEnable( enable ); } } }