路径规划
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);
}
路径分析的运行结果如下: