package com.mogo.map; import android.annotation.SuppressLint; import android.graphics.Point; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.map.overlay.proxy.line.IMapPolylineOverlay; import com.mogo.map.overlay.proxy.point.IMapPointOverlay; import com.mogo.map.overlay.wrapper.point.AMapPointWrapper; import com.mogo.map.road.RoadNameInfo; import com.mogo.map.uicontroller.AMapUIController; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.utils.ObjectUtils; import com.zhidaoauto.map.sdk.open.data.MapDataApi; import com.zhidaoauto.map.sdk.open.data.SinglePointRoadInfo; import com.zhidaoauto.map.sdk.open.marker.BatchMarkerOptions; import com.zhidaoauto.map.sdk.open.marker.Marker; import com.zhidaoauto.map.sdk.open.marker.MarkerOptions; import com.zhidaoauto.map.sdk.open.marker.MarkerSimpleData; import com.zhidaoauto.map.sdk.open.poyline.Polyline; import com.zhidaoauto.map.sdk.open.poyline.PolylineOptions; import com.zhidaoauto.map.sdk.open.tools.MapTools; import com.zhidaoauto.map.sdk.open.view.MapAutoView; import com.zhidaoauto.map.sdk.open.view.MapAutoViewHelper; import java.util.ArrayList; import java.util.HashMap; import mogo.telematics.pad.MessagePad; import mogo.yycp.api.proto.SocketDownData; /** * @author congtaowang * @since 2019-12-18 *
* 代理自研AMap
*/
public class AMapWrapper implements IMogoMap {
private static final String TAG = "AMapWrapper";
private final IMogoMapUIController mMapUIController;
private MapAutoViewHelper mAMap;
private final MapAutoView mMapView;
private IMogoUiSettings mUiSettings;
public AMapWrapper(MapAutoViewHelper map, MapAutoView mapView, IMogoMapUIController controller) {
CallerLogger.INSTANCE.i(TAG, "autoop--AMapWrapper: init" + this);
this.mAMap = map;
this.mMapView = mapView;
mMapUIController = controller;
// 设置实现自定义 info window
// MapAutoApi.INSTANCE.setInfoWindowAdapter(new AMapInfoWindowAdapter());
AMapUIController.getInstance().initClient(mMapUIController);
}
@Override
public IMogoUiSettings getUiSettings() {
if (!checkAMap()) {
return null;
}
if (mUiSettings == null) {
mUiSettings = new AMapUiSettingsWrapper(mAMap);
}
return mUiSettings;
}
@Override
public IMogoMapUIController getUIController() {
return mMapUIController;
}
@Override
public IMapPointOverlay addPoint(com.mogo.map.overlay.point.Point.Options options) {
if (!checkAMap()) {
return null;
}
MarkerOptions markerOptions = ObjectUtils.fromMogo(options,mMapView);
if (markerOptions == null) {
CallerLogger.INSTANCE.e(TAG, "marker参数为空");
return null;
}
Marker delegate = mAMap.addMarker(markerOptions);
if (delegate == null) {
return null;
}
return new AMapPointWrapper(options.getId(), delegate,mMapView);
}
@Override
public IMapPolylineOverlay addLine(com.mogo.map.overlay.line.Polyline.Options options) {
if (!checkAMap()) {
return null;
}
PolylineOptions polylineOptions = ObjectUtils.fromMogo(options,mMapView);
if (polylineOptions == null) {
CallerLogger.INSTANCE.e(TAG, "polyline参数为空");
return null;
}
Polyline delegate = polylineOptions.getLineWidth() > 0 ? mAMap.drawThickLine(polylineOptions) : mAMap.drawLine(polylineOptions);
if (delegate == null) {
return null;
}
return new com.mogo.map.overlay.wrapper.line.AMapPolylineWrapper(options.getId(), delegate,mMapView);
}
BatchMarkerOptions batchMarkerOptions = new BatchMarkerOptions();
@SuppressLint("NewApi")
@Override
public void updateBatchMarkerPosition(HashMap