package com.mogo.map; import android.graphics.Point; import android.graphics.Rect; import android.view.View; import com.mogo.eagle.core.data.map.CenterLine; import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.map.uicontroller.AMapUIController; import com.mogo.map.uicontroller.CarCursorOption; 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 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() {
initDelegate();
}
private void initDelegate() {
if (mDelegate == null) {
mDelegate = AMapUIController.getInstance();
}
}
public static MogoMapUIController getInstance() {
if (sInstance == null) {
synchronized (MogoMapUIController.class) {
if (sInstance == null) {
sInstance = new MogoMapUIController();
}
}
}
return sInstance;
}
public static synchronized void release() {
sInstance = null;
}
@Override
public MapControlResult changeZoom(float zoom) {
initDelegate();
if (mDelegate != null) {
return mDelegate.changeZoom(zoom);
}
return MapControlResult.ERROR;
}
@Override
public void setDebugMode(Boolean debugMode) {
initDelegate();
if (mDelegate != null) {
mDelegate.setDebugMode(debugMode);
}
}
@Override
public void changeMapVisualAngle(VisualAngleMode angelMode, MogoLatLng mogoLatLng) {
initDelegate();
if (mDelegate != null) {
CallerLogger.INSTANCE.d(TAG, "set VisualAngle: " + angelMode.name());
mDelegate.changeMapVisualAngle(angelMode, mogoLatLng);
}
}
@Override
public void setRoamTrajectory(String trajectory) {
initDelegate();
if (mDelegate != null) {
mDelegate.setRoamTrajectory(trajectory);
}
}
@Override
public void setRomaMode(int mode) {
initDelegate();
if (mDelegate != null) {
CallerLogger.INSTANCE.d(TAG, "set setRomaMode: " + mode);
mDelegate.setRomaMode(mode);
}
}
@Override
public VisualAngleMode getCurrentMapVisualAngle() {
initDelegate();
if (mDelegate != null) {
return mDelegate.getCurrentMapVisualAngle();
}
return null;
}
@Override
public void moveToCenter(MogoLatLng latLng, boolean animate) {
initDelegate();
if (mDelegate != null) {
mDelegate.moveToCenter(latLng, animate);
}
}
@Override
public void showMyLocation(boolean visible) {
initDelegate();
if (mDelegate != null) {
mDelegate.showMyLocation(visible);
}
}
@Override
public void showMyLocation(View view) {
initDelegate();
if (mDelegate != null) {
mDelegate.showMyLocation(view);
}
}
@Override
public float getScalePerPixel() {
initDelegate();
if (mDelegate != null) {
return mDelegate.getScalePerPixel();
}
return 0;
}
@Override
public float getZoomLevel() {
initDelegate();
if (mDelegate != null) {
return mDelegate.getZoomLevel();
}
return 0;
}
@Override
public float getRoadWidth(double lon, double lat, float angle, boolean isGpsLocation, boolean isRTK) {
initDelegate();
if (mDelegate != null) {
return mDelegate.getRoadWidth(lon, lat, angle, isGpsLocation, isRTK);
}
return 0;
}
@Override
public MogoLatLng getCameraNorthEastPosition() {
initDelegate();
if (mDelegate != null) {
return mDelegate.getCameraNorthEastPosition();
}
return null;
}
@Override
public MogoLatLng getCameraSouthWestPosition() {
initDelegate();
if (mDelegate != null) {
return mDelegate.getCameraSouthWestPosition();
}
return null;
}
@Override
public MogoLatLng getWindowCenterLocation() {
initDelegate();
if (mDelegate != null) {
return mDelegate.getWindowCenterLocation();
}
return null;
}
@Override
public void setPointToCenter(double mapCenterX, double mapCenterY) {
initDelegate();
if (mDelegate != null) {
mDelegate.setPointToCenter(mapCenterX, mapCenterY);
}
}
@Override
public Point getLocationPointInScreen(MogoLatLng latLng) {
initDelegate();
if (mDelegate != null) {
return mDelegate.getLocationPointInScreen(latLng);
}
return null;
}
@Override
public MogoLatLng getLocationMogoLatLngInScreen(Point point) {
initDelegate();
if (mDelegate != null) {
return mDelegate.getLocationMogoLatLngInScreen(point);
}
return null;
}
@Override
public void setRenderFps(int fps) {
initDelegate();
if (mDelegate != null) {
mDelegate.setRenderFps(fps);
}
}
@Override
public void showBounds(String tag, MogoLatLng carPosition, List