首页 / 浏览问题 / 云GIS / 问题详情
如何批量求一个点到多个点的最短距离
2EXP 2018年04月03日

需求:鼠标在地图上选点,选完点之后,分别求出该点到地图上某类设备(多个)的最短距离,是分别求出该点到每个设备点的最短距离,设备数据已经做成数据集发布成数据服务

问题步骤重现:首先,调用获取要素服务得到所有的设备点位信息;

      然后,鼠标点击地图获取点位信息

      然后,用for循环遍历每个设备点位,同时调用最短路径分析算法求鼠标点击点到当前设备的最短距离

for (var i = 0; i < abordgates.length; i++) {
    nodeArray.push(abordgates[i].geometry);
    abordgatename=abordgates[i].data.编号;  //读取设备编号
    console.log(abordgatename);
    findPath();  //求取最短路径
    nodeArray.pop();
}

      结果,

A167
A166
A165
A164
A163
A162
A157
A156
A155
A154
A153
A152
A151
A150
A149
A148
A147
A146
A145
A144
0当前设备-->A167距离:811.5396300426542
1当前设备-->A163距离:995.4784658736835
2当前设备-->A164距离:959.7929117194662
3当前设备-->A166距离:881.8980164660829
4当前设备-->A157距离:1033.0035792724668
5当前设备-->A165距离:925.966371446522
6当前设备-->A156距离:988.1631979617127
7当前设备-->A153距离:623.9938525990959
8当前设备-->A154距离:668.2278924819889
9当前设备-->A155距离:784.067804684036
10当前设备-->A152距离:659.8784959023337
11当前设备-->A162距离:1029.9102723637131
12当前设备-->A151距离:936.4265448550431
13当前设备-->A146距离:978.552526595165
14当前设备-->A148距离:1008.1611960683873
15当前设备-->A149距离:1009.874118025013
16当前设备-->A147距离:1012.1667252564644
17当前设备-->A150距离:1014.0440558341767
18当前设备-->undefined距离:878.8202734651409
19当前设备-->A144距离:867.231322287356

问题:1,感觉逻辑不对,不是应该输出一个设备编号,显示一个最短距离计算结果么?怎么实际运算结果是先输出所有设备编号,然后计算最短距离?

      2,计算结果与遍历顺序不一样,计算结果顺序混乱

      3,而且出现设备编号undefined的情况,数据集中设备编号全部都有属性的

1个回答

您好,您用的什么版本的iserver,811的话换成901的试一下,代码不用变,考虑是服务器性能问题,方便的话代码做成demo发我邮箱,lixiyang@supermap.com
4,524EXP 2018年04月03日
...