我有一个从Google Earth导出的kml文件,它本质上是伦敦泰晤士河一部分的路径。我把这个用Javascript作为KmlLayer放到Google Maps中。
我需要找到一种方法来计算路线上一个点与路线末端之间的距离。显然,当路线向上,向下,向后,向前等时,它不能只是线性距离。
我无法想出使用kml文件和Google地图执行此操作的方法,因此任何其他建议或方法都可以。我也许可以从kml文件中收集坐标并在地图上以另一种方式使用它们?但我不知道从哪里开始。
如果这个问题已在其他地方得到解答,我一如既往地道歉,但我看上去并没有运气。
提前致谢,
亚当
答案 0 :(得分:1)
我找到了一个解决方案,那就是将kml坐标提取到一个javascript对象数组中。
然后我遍历数组并使用Haversine公式得到路线上每个点之间的距离,并为每个物体分配一个距离值(从路线的起点开始)。
从那里我可以在路线上的每个点处锻炼,从开始到结束只需使用距离值。
views.string = '-1.692525715111287,51.692324976351,0 -1.691353785046965,51.69214295521361,0 -1.690097310611129,51.69205100316109,0...//etc etc';
var array = views.string.split(',0 ');
map.route = [];
$.each(array, function (i, e) {
if ((i + 1) == array.length) {
e = e.replace(',0', '');
}
var coords = e.split(',');
map.route.push({ lat: parseFloat(coords[1]), lng: parseFloat(coords[0]) });
});
var distance = 0;
$.each(map.route, function (i, e) {
if (map.route[i - 1] != undefined) {
var d = map.getDistance(map.route[i - 1], e);
distance += d;
e.distance = distance;
}
else {
e.distance = distance;
}
});