如何根据 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;
        }
    });