package com.mogo.map;
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;
/**
* @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 );
/**
* 批量更新锚点位置
*
* @param optionsArrayList 锚点集合
*/
void updateBatchMarkerPosition(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< IMogoMarker > addMarkers( String tag, ArrayList< MogoMarkerOptions > 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 );
/**
* 设置地图POI是否允许点击。
*
* @param touchPoiEnable
*/
void setTouchPoiEnable( boolean touchPoiEnable );
/**
* 设置是否打开交通路况图层。
*
* @param enable
*/
void setTrafficEnable( boolean enable );
/**
* 设置是否显示3D建筑物,默认显示。
*
* @param enabled
*/
void showBuildings( boolean enabled );
/**
* 设置是否显示室内地图,默认不显示。
*
* @param enable
*/
void showIndoorMap( boolean enable );
/**
* 设置是否显示底图文字标注,默认显示。
*
* @param enable
*/
void showMapText( boolean enable );
/**
* 停止当前执行的改变地图状态的动画。
*/
void stopAnimation();
/**
* 获取比例尺
*
* @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);
}