{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508817052,"data":{"id":71713303,"title":"2.13 常见问题","slug":"bgn823","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
mapassets
以style_4_14_1583396108.data\b来举例说明,style_4表示样式名称,14表示版本,1583396108表示时间戳;
1)时间戳的意义:优先显示时间戳更大的样式。引擎有个在线下载功能,如果下载到更新的样式文件,即时间戳更大的话,会优先显示时间戳更大的。
2)样式下载后的路径放到mapcache/vmap4res(引擎的样式缓存目录);
若新增样式style_4_14_1583396108.data
注:如果styleiconlist原来就有一个,那么直接换成这个样式文件名,个数不用加1;
若修改样式style_4_14_1583396108.data
com.autonavi.gbl.map.OperatorPosture.setZoomLevel\t(float scale)
说明:函数详情,请复制函数名称到在线API搜索
创建2个地图,可以一个是主屏(engineId=1),一个是拓展屏(engineId=3).
两个屏是基于enginId创建mapview,两个地图是基于mapview进行的业务操作,相互不影响。
创建启动地图的时序流程如下:
详情见:创建多个渲染设备
从分析经验来看,黑屏问题原因主要有:
如全览参数字段场景图所示。参数中的偏置信息(leftOfMap,topOfMap)是表示相对现有屏幕宽高的偏置。所以全览时,会将屏幕偏置转化为[(屏幕宽 + leftOfMap )/2,(屏幕高 + topOfMap)/2], 再调用setMapLeftTop设置视口锚点。
如,(leftOfMap,topOfMap)为(0,0)时,地图中心会显示在屏幕中心.
全览是把所有点缩放到某个矩形框范围内,所以各个场景下没有区别
全览接口:
void com.autonavi.gbl.map.MapView.showPreview\t(\tPreviewParam \tpreviewParam,\n boolean \tbAnimation,\n int \ttime,\n int \tanimationId \n )\t
全览接口目前只提供所有点缩放到,某个范围(矩形框)内,并没有智能均匀分布功能。需要HMI自行使用算法,计算出适合产品效果的全览。
设置地图中心提供了3种方式如下,持续时间外部不可设置,带动画方式设置地图中心可以理解为带持续时间,只不过这个时间是内聚的,外部不可设置。
void com.autonavi.gbl.map.OperatorPosture.setMapCenterByLonLat(Coord3DDouble mapCenter)
void com.autonavi.gbl.map.OperatorPosture.setMapCenter(double lon, double lat, double z, boolean bAnimation, boolean bSync)
void com.autonavi.gbl.map.OperatorPosture.setMapCenter(double screenX, double screenY)
详情见:地图中心
boolean com.autonavi.gbl.map.MapView.setMapViewStatesOperator(@MapViewStateType.MapViewStateType1 int type, int value)
/**\n * @brief 设置视图状态开关\n * 万能接口,内部根据MapViewStateType,将value转换成特定类型的指针\n * @param[in] type 需要设置的类型\n * @param[in] value 设置的参数,value值为1或0,1表示对应状态开,0表示关\n * @param[in] bSync 同步或异步,true为同步\n * @return bool 否则返回false(例如type无法识别)\n */\nvirtual bool SetMapViewStatesOperator(MapViewStateType type, int32_t value, bool bSync) = 0;
详细见:简易三维
void com.autonavi.gbl.map.OperatorBusiness.setMapViewState(@MapViewStateType.MapViewStateType1 int type, boolean enable)
/**\n * @brief 设置道路网\n * @param[in] isShow 是否展示\n * @note thread:multi\n */\nvirtual void ShowMapRoad(bool isShow) = 0;
详情见:路网控制
切换字体的不同rom版本,重启导航出现图面字体显示异常。
刷新rom版本,mapcache目录下 缓存下来的字体(就是那几个font文件)是过时的,用起来就会出现问题,它们需要被清除一次才行。
绘制条件,如下1)2)3)任一满足即可;
1) 开启标注MAP_BUSINESSDATA_FORCE_NAVI_LABEL
void com.autonavi.gbl.map.MapView.setMapNeedForceDrawLabel\t(int refreshRate\t)\t
/**\n * @brief 设置导航下强制刷新标注\n * @param[in] refreshRate 刷新标注的间隔帧数阈值(最大值)\n */\nvirtual void SetMapNeedForceDrawLabel(int32_t refreshRate) = 0;
2)地图状态显示类型设置为MAP_VIEWSTATE_IS_SHOW_POI
void com.autonavi.gbl.map.OperatorBusiness.setLabelVisable(boolean enable)
void com.autonavi.gbl.map.OperatorBusiness.setMapViewState(@MapViewStateType.MapViewStateType1 int type, boolean enable)
说明:函数详情,请复制函数名称到在线API搜索
/**\n * @brief 设置视图状态开关\n * 万能接口,内部根据MapViewStateType,将value转换成特定类型的指针\n * @param[in] type 需要设置的类型\n * @param[in] value 设置的参数,value值为1或0,1表示对应状态开,0表示关\n * @param[in] bSync 同步或异步,true为同步\n * @return bool 否则返回false(例如type无法识别)\n */\nvirtual bool SetMapViewStatesOperator(MapViewStateType type, int32_t value, bool bSync) = 0;
详情见:图面POI显隐
3)图面未发生变化(地图中心、比例尺)稳定15帧;
可通过void com.autonavi.gbl.map.MapView.setMaplefttop方式,将视口锚点显示在屏幕指定区域;
不可以。
这个接口并不能获取一定半径区域内的POI信息。引擎内部的逻辑只会回调一个选中的POI,半径只是查找范围。如果地图中心附近有POI,那这个半径就不生效了。如果中心点附近没有POI,就会用半径查找周围POI。
在有效的屏幕区域内,经纬度转屏幕坐标是唯一的。但若屏幕区域无效,输出的屏幕坐标不唯一,为无效值。
例子:输入的lon: 121.339785, lat: 31.196056 输出屏幕坐标:screenx=-11389.275391,screeny=4197.976562
解答:输入的经纬度必须在实际有效的屏幕范围内,输出屏幕坐标为负值即为无效值!
可通过 operatorPosture.getMapCenterByLonLat() 获取当时地图的中心位置经纬度。
常见的几种坐标转换case如下,其中地图坐标即为p20坐标
说明:函数详情,请复制函数名称到在线API搜索
说明:函数详情,请复制函数名称到在线API搜索
说明:函数详情,请复制函数名称到在线API搜索
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-04-06 07:01:57","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":160,"collectCount":0,"estimateDate":12,"docStatus":0,"permissions":true,"overView":false}}