車を追跡し、地図上に移動経路のポリラインを描画するアプリがあります。ルート案内サービスのルーティングを使用して、このポリラインをルートに変換したいと考えています。これにより、パスをドラッグして操作できるようになります。
問題は、これに対する適切な解決策が思いつかないことです。また、それが可能かどうかもわかりません。ポリラインの座標の配列をルート案内サービス ルートに渡すと、ポリラインの始点と終点のみを使用してルートが描画され、その間の座標は考慮されません。
ポリライン座標配列を使用して「ウェイポイント」配列を均等に分割し、その間に8つの座標を取得してそれらをウェイポイントとして渡すことで、「ウェイポイント」配列を生成しようとしましたが、今はまったくレンダリングできません。ルートを描画することによって生成された座標配列を使用してコードをテストすると、機能するので、コードが機能していることがわかります。これらの座標の一部が道路からわずかに外れている可能性があるため (これは GPS 測位から描画されたポリラインであるため、100% 正確ではありません)、Google はそれを最も近い受け入れ可能な場所にスナップするだけではないため、失敗したと推測しています。
誰でもこれに対する解決策を考えることができますか?
少しわかりやすくするためのコード例を次に示します。
// In the polyline app
var encoded_path = google.maps.geometry.encoding.encodePath(coordinate_array)
// In the route app
var coordinates = google.maps.geometry.encoding.decodePath(encoded_path);
var waypoints = [];
// Evenly get coordinates across the entire array to be used as waypoints
for (var i = 1; i <= 8; ++i) {
var index = Math.floor((coordinates.length/10) * i);
if (index >= coordinates.length - 1)
break;
waypoints.push({
'location': new google.maps.LatLng(coordinates[index].lat(), coordinates[index].lng()),
'stopover': false
});
}
var request = {
origin: coordinates[0],
destination: coordinates[coordinates.length - 1],
travelMode: google.maps.DirectionsTravelMode.DRIVING,
waypoints: waypoints
};
MapService.directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
MapService.directionsDisplay.setDirections(response);
}
});