{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516339031,"data":{"id":71712083,"title":"5.4.3.6 导航引导路口大图","slug":"qfz8d3","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
导航引导过程中的路口大图包含这几种:栅格图(包括实景图和范式图两种)、矢量图、三维实景图。
栅格图-实景图
栅格图-范式图
矢量图
三维实景图(精品三维)
其中矢量图中又有两种特殊的路口图:近接路口图(左)和混淆路口图(右),这两种路口图需要额外的聚焦态切换控制。
每个路口只展示一种类型的路口大图;如果有多种,按以下优先级进行展示:
三维实景图>栅格图>矢量图
精品三维大图的路线支持路况显示
public class CrossingParam extends BaseParam {\n public int[][] showRange;\t\t\t\t\t\t/**< 设置路口大图时机距离(500版本之后已废弃,由服务下发)*/\t\t\t\n public boolean enableGridImage = true;\t\t\t/**< 栅格图显示开关,默认为开启 */\t\t\t\t\t\t\n public boolean enableVectorImage = true;\t\t/**< 矢量图显示开关,默认为开启 */\t\t\t\t\t\t\t\n public boolean enable3D = false;\t\t\t\t/**< 三维总开关 */\t\t\t\t\t\n public boolean show3D = true;\t\t\t\t\t/**< 是否适合进入三维,默认为适合.地图视角北上、2D为不适合,其余为适合。客户端判断逻辑 */\t\t\t\t\n public boolean show2DNavi = false;\t\t\t\t/**< 在三维导航中,是否开启二维导航 */\t\t\t\t\t\n public boolean onlineRequest = false;\t\t\t/**< 设置路口扩大图在线请求开关 */\t\t\t\t\t\t\n public boolean enableOffline3D = false;\t\t\t/**< 离线3维开关 */\t\t\t\t\t\t\n public boolean isMobileSupport3D = false;\t\t/**< 设置手机支持三维flag (已废弃)*/\t\t\t\t\t\t\t\n public boolean isMultiCross = false;\t\t\t/**< 是否一个路口支持多类型大图透出 */\t\n public boolean isDayForUseSet = true; /**< 设置用户设定的白天黑夜模式 */\n}
public class CrossImageInfo implements Serializable {\n @CrossType1\n public int type;\t\t\t\t/**< 路口大图类型:栅格/矢量/精品三维, 详见com.autonavi.gbl.guide.model.CrossType */\n @VectorCrossImageType1\n public int vectorType;\t\t\t/**< 矢量路口大图类型:普通/近接/混淆/环岛,详见com.autonavi.gbl.guide.model.VectorCrossImageType */\n public byte[] dataBuf;\t\t\t/**< 路口大图二进制数据,栅格为jpeg,尺寸为500*320,矢量和精品3D为自定义二进制格式 */\n public byte[] arrowDataBuf; \t/**< 栅格路口大图二进制数据,栅格为PNG,尺寸为500*320,其他路口大图类型为空 */\n public BigInteger crossImageID;\t/**< 背景ID,等于0为无效值 */\n public boolean isOnlyVector;\t/**< 特殊项目使用,路口透出多类型大图功能打开且矢量图透出时生效:是否只有矢量图显示 false : 不是, true : 是 */\n public long distance;\t\t\t/**< 当前位置距路口大图距离 */\n \n public ArrayList<CrossLinkLocation> motionChangeInfo;/**< 视角切换位置点信息,用于判断近接/混淆路口图的切换时机 */\n public ArrayList<CrossCardChangeInfo> cardChangeInfo;/**< 黑卡显示切换信息 */\n}
导航过程中传出路口大图数据\nvoid com.autonavi.gbl.guide.observer.INaviObserver.onShowCrossImage(CrossImageInfo info)
导航过程中通知隐藏路口大图\nvoid com.autonavi.gbl.guide.observer.INaviObserver.onHideCrossImage(@CrossType.CrossType1 int type)
说明:函数详情,请复制函数名称到在线API搜索。
//int showRange[][]=new int[][]{{50, 500},{40, 500},{30, 200}};\nParam crossParam = new Param();\ncrossParam .type = GuideParamCrossing;\ncrossParam.crossing.showRange = showRange;\ncrossParam.crossing.enable3D = true; // 三维总开关\ncrossParam.crossing.enableVectorImage = true; // 矢量图显示开\ncrossParam.crossing.enableGridImage = true; // 栅格图显示开关\ncrossParam.crossing.onlineRequest = true; // 设置置路口扩大图在线请求开关\ncrossParam.crossing.isMultiCross = true; // 是否一个路口支持多类型大图透出\nmGuideService.setParam(crossParam);
@Override\npublic void onShowCrossImage(CrossImageInfo crossImageInfo) {\n\t// 详见图层示例代码\n\t// ...\n}\n\n@Override\npublic void onHideCrossImage(int type) {\n\t// 详见图层示例代码\n\t// ...\n}
@Override\npublic void onUpdateNaviInfo(final ArrayList<NaviInfo> naviInfoList) {\n //其他业务逻辑\n\n // 当前未显示路口大图\n if (!_isCrossCardShowing)\n {\n return;\n }\n\n if (_motionChangeInfo.size() == 0)\n {\n return;;\n }\n\n int curCrossSegmentId = mCurNaviInfo.curSegIdx;\n int curCrossLinkId = mCurNaviInfo.curLinkIdx;\n int remainSegmentDist = mCurNaviInfo.routeRemain.dist;\n int passedDist = _routeRemainDist - remainSegmentDist; //从弹图点开始,已行驶的距离\n\n int motionChangeIndex = -1; //本次切换视角的位置\n\n for (int32_t i = 0; i < _motionChangeInfo.size(); i++)\n {\n // 经过弹图点3米开始切换\n if (passedDist - _motionChangeInfo.get(i).passedDist > 3)\n {\n if (_pGuideLayer)\n {\n mGuideLayer.SetViewPostureEvent(CrossTypeVector, ViewPostureCrossingSwitch);\n }\n\n motionChangeIndex = i;\n\n break;\n }\n }\n\n //相机视角只切换1次\n if (motionChangeIndex >= 0)\n {\n _motionChangeInfo.remove(motionChangeIndex);\n }\n}\n