{"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
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-06-27 13:36:46","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":323,"collectCount":0,"estimateDate":10,"docStatus":0,"permissions":true,"overView":false}}