如何根据 kml 路线获取两个 lat lng 坐标之间的距离?
How can I get the distance between two lat lng coordinates based on a kml route?
我有一个从 Google Earth 导出的 kml 文件,它基本上是伦敦泰晤士河的一部分路径。我已将其作为 KmlLayer 放入 Google 地图中 Javascript。
我需要找到一种方法来计算路线上一点与路线终点之间的距离。显然,随着路线的上升、下降、来回等,它不能只是线性距离。
我想不出使用 kml 文件和 Google 地图来执行此操作的方法,因此任何其他建议或方法都可以。我也许可以从 kml 文件中收集坐标并在地图上以另一种方式使用它们?但我不确定从哪里开始。
如果这个问题在其他地方得到了回答,我一如既往地道歉,但我已经看过但没有运气。
提前致谢,
亚当
我找到了一个解决方案,那就是将 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;
}
});
我有一个从 Google Earth 导出的 kml 文件,它基本上是伦敦泰晤士河的一部分路径。我已将其作为 KmlLayer 放入 Google 地图中 Javascript。
我需要找到一种方法来计算路线上一点与路线终点之间的距离。显然,随着路线的上升、下降、来回等,它不能只是线性距离。
我想不出使用 kml 文件和 Google 地图来执行此操作的方法,因此任何其他建议或方法都可以。我也许可以从 kml 文件中收集坐标并在地图上以另一种方式使用它们?但我不确定从哪里开始。
如果这个问题在其他地方得到了回答,我一如既往地道歉,但我已经看过但没有运气。
提前致谢,
亚当
我找到了一个解决方案,那就是将 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;
}
});