4

ポリライン (Google ルート案内によって生成されたルート) とそのポリライン上にないマーカーとの間の直接 (最短) 距離を計算する便利な方法はありますか?

私が見つけた唯一の方法は、頂点を手動で循環Polyline.getPath()させて最短距離を計算することですが、それは少し厳しいようです:

var path = routes[0].overview_path;

for (var i = 0; i < data.points.length; i++) {
    var latLngA = new LatLng(data.points[i].lat, data.points[i].lng);
    var shortest_distance = null;

    for (var j = 0; j < path.length; j++) {
        var distance = google.maps.geometry.spherical.computeDistanceBetween(latLngA, path[i]);

        if (shortest_distance == null || distance < shortest_distance) {
            shortest_distance = distance;
        }
    }

    console.log(data.points[i].point_title, shortest_distance);
}

前もって感謝します!

4

2 に答える 2

0

turf - モジュール式地理空間分析エンジンを使用します。 https://turfjs.org/docs/

于 2021-09-17T14:30:08.843 に答える
0

私の知る限り、Google Maps API ではこれを簡単に行う方法は提供されていません。残念ながら、使用するアルゴリズムでは正確な答えが得られません。これは、通常はポイントの 1 つではないポリライン自体の最も近いポイントではなく、マーカーからパス上の最も近い頂点までの距離を与えるためです。

本当に正確な計算が必要な場合は、Javascript Topology Suite ( JSTS ) を使用することをお勧めします。JSTS には、このようなことを計算するための地理式がたくさんあります。これは、方向 API から返されたポリラインを JSTS オブジェクトに変換し、適切なユーティリティ関数を呼び出すことを意味します。些細なことではありませんが、それほど難しくもありません。

于 2012-12-06T22:12:54.777 に答える