package com.mogo.map; import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.map.center.CenterLine; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.overlay.IMogoPolyline; import com.mogo.map.overlay.MogoPolylineOptions; import com.mogo.map.road.RoadNameInfo; import com.mogo.map.uicontroller.IMogoMapUIController; 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 *

* 地图控制接口 */ public interface IMogoMap { /** * 获取地图ui控制器,可以控制内置ui(缩放按钮、指北针等)是否显示及部分手势(滑动、双指缩放等)是否可用。 * * @return */ IMogoUiSettings getUiSettings(); /** * 操作地图视图 * * @return */ IMogoMapUIController getUIController(); /** * 在地图上添一个图片标记(marker)对象。 * * @param tag 标识服务 * @param options * @return */ IMogoMarker addMarker(String tag, MogoMarkerOptions options); /** * 清除所有marker */ void clearAllMarkers(); /** * 批量更新锚点位置 * * @param optionsArrayList 锚点集合 */ void updateBatchMarkerPosition(HashMap optionsArrayList); /** * 批量更新锚点位置 * * @param optionsArrayList 锚点集合 */ void updateBatchAiMarkerPosition(HashMap optionsArrayList); /** * 添加感知使用到的3d模型 * * @param type * @param modelRes */ String addPreVehicleModel(int type, int modelRes); /** * 要移除的感知数据uuid * * @param uuidString */ void removeMarker(String uuidString); /** * 在地图上添一组图片标记(marker)对象,并设置是否改变地图状态以至于所有的marker对象都在当前地图可视区域范围内显示。 * * @param tag 标识服务 * @param options * @param moveToCenter * @return */ ArrayList addMarkers(String tag, ArrayList options, boolean moveToCenter); /** * 从地图上删除所有的overlay(marker,circle,polyline 等对象)。 */ void clear(); /** * 从地图上删除所有的覆盖物(marker,circle,polyline 等对象),但myLocationOverlay(内置定位覆盖物)除外。 * * @param isKeepMyLocationOverlay */ void clear(boolean isKeepMyLocationOverlay); /** * 设置屏幕上的某个像素点为地图中心点。 * * @param x * @param y */ void setPointToCenter(int x, int y); /** * 获取比例尺 * * @return 当前缩放级别下,地图上1像素点对应的长度,单位米 */ float getScalePerPixel(); /** * 改变地图缩放级别 * * @param zoom */ void changeZoom(float zoom); /** * 获取缩放比例 * * @return */ float getZoomLevel(); /** * 获取道路的宽度 */ float getRoadWidth(double lon, double lat, float angle, boolean isGpsLocation, boolean isRTK); /** * 添加线段 * * @param options * @return */ IMogoPolyline addPolyline(MogoPolylineOptions options); /** * 获取行驶方向一定长度的中心线 * * @param lon 经度 * @param lat 纬度 * @param angle 航向角 * @param distance 获取车道中心线的长度,> 0: 行驶方向前方距离, <0 行驶方向后方距离 * @return 中心线相关数据 */ CenterLine getCenterLineRangeInfo(double lon, double lat, float angle, float distance); /** * 根据自车经纬度和航向角,获取道路名称 * * @param lon 经度 * @param lat 纬度 * @param angle 航向角 * @return 道路名称等相关信息 */ RoadNameInfo getRoadName(double lon, double lat, float angle); }