Fengmap JavaScript SDK

路径规划 Fengmap JavaScript SDK支持根据起点和终点坐标规划路线功能。

初始化路径分析对象

设置起、终点,在地图渲染后即loadComplete回调后,初始化路径分析对象。示例代码如下:

//创建路径分析对象
var  naviAnalyser = new fengmap.FMNaviAnalyser();
//通过已加载的地图数据加载模型
naviAnalyser.init(map);//注意:此方法需保证map数据已加载完成,可在map的loadComplete事件后调用

//添加模拟起、终点
var naviCoords = [{
    x: 12961588.0371617,
    y: 4861847.72571208,
    groupID:6
},{
    x: 12961587.6306147,
    y: 4861847.72571208,
    groupID:6
};
路径分析

根据设置的起、终点和起、终点楼层进行路径分析,分析成功,返回路径经过的坐标点集。

//根据已加载的fengmap.FMMap导航分析,判断路径规划是否成功
var analyzeNaviResult = naviAnalyser.analyzeNavi(naviCoords[0].groupID, naviCoords[0], naviCoords[1].groupID, naviCoords[1], fengmap.FMNaviMode.MODULE_SHORTEST);
if (fengmap.FMRouteCalcuResult.ROUTE_SUCCESS != analyzeNaviResult) {
    return;
}
//获取路径分析结果对象,所有路线集合
var results = naviAnalyser.getNaviResults();
//初始化线图层
var line = new fengmap.FMLineMarker();
for (var i = 0; i < results.length; i++) {
    var result = results[i];
    //楼层id
    var gid = result.groupId;
    //路径线点集合
    var points = result.getPointList();

    var points3d = [];
    points.forEach(function (point) {
        points3d.push({
            //x坐标点
            'x': point.x,
            //y坐标点
            'y': point.y,
            //线标注高度
            'z': 1
        });
    });
    //fengmap.FMSegment点集,一个点集代表一条折线
    var seg = new fengmap.FMSegment();
    seg.groupId = gid;
    seg.points = points3d;
    line.addSegment(seg);
}
//绘制线
//配置线型、线宽、透明度等
var lineStyle = {
    //设置线的宽度
    lineWidth: 6,
    //设置线的透明度
    alpha: 0.8,
    //设置线的类型为导航线
    lineType: fengmap.FMLineType.FMARROW,
    //设置线动画,false为动画
    noAnimate: false
};
map.drawLineMark(line, lineStyle);
获取路径描述信息

根据设置的起、终点和起、终点楼层进行路径分析,分析成功后,返回路径经过的坐标点集。同时可根据结果集获取路径描述等信息。

//路径分析:传入起点和终点坐标和楼层ID进行楼层分析。
if (naviAnalyser.analyzeNavi(naviCoords[0].groupID, naviCoords[0], naviCoords[1].groupID, naviCoords[1],fengmap.FMNaviModule.MODULE_SHORTEST) == fengmap.FMRouteCalcuResult.ROUTE_SUCCESS) {
    var results = naviAnalyser.getNaviResults(); //得到路径分析后的结果集
    if (results.length == 0)
        return;

    var des = naviAnalyser.getRouteDescriptions(results);
    console.log(des);
}

路径分析的运行结果如下: