0

車両を追跡し、ポリラインを地図上にレンダリングする既存のアプリを持っています。ルーティング サービスを使用して、これらのポリラインを別のアプリにインポートできるようにしたいと考えています (インポートされたポリラインが道路にスナップし、ドラッグできるようにするため)。等)。

私が現在行っているのはエンコードです:

var encoded_path = google.maps.geometry.encoding.encodePath(coordinate_array)

ラインを描画する緯度経度座標配列 (ポリライン アプリ内)、およびこれを次のようにルート サービス ルートに渡す (他のアプリ内):

var coordinates = google.maps.geometry.encoding.decodePath(encoded_path);

var request = {
   origin: coordinates[0],
   destination: coordinates[coordinates.length - 1],
   travelMode: google.maps.DirectionsTravelMode.DRIVING
};

MapService.directionsService.route(request, function(response, status) {
   if (status == google.maps.DirectionsStatus.OK) {
      MapService.directionsDisplay.setDirections(response);
   }
});

このアプローチの問題点は、ポリラインの始点と終点のみを使用してルートを描画しているため、ルートに沿った分岐点がすべて表示されないことです。そこで、ウェイポイントを追加しようとしました (Google の制限は 8 です)。次のように、もう少し正確なルートを取得しようとしました。

var waypoints = [];

if (coordinates.length <= 8) {
   waypoints = coordinates;
}
else {
   for (var i = 0; i < 8; i++) {
      var index = Math.floor((coordinates.length/8) * i);

      // Break if there's no more waypoints to be added
      if (index > coordinates.length - 1)
         break;

      waypoints.push(new google.maps.LatLng(coordinates[index].lat(), coordinates[index].lng()));

      // Break if we've just added the last waypoint
      if (index == coordinates.length - 1)
         break;
   }
}

このようにして、座標配列全体でウェイポイントを均等に取得します。そして、ルートへの呼び出しでそれらを次のように表示しようとしています:

var request = {
   origin: coordinates[0],
   destination: coordinates[coordinates.length - 1],
   waypoints: waypoints
   travelMode: google.maps.DirectionsTravelMode.DRIVING
};

しかし、私はこのエラーが発生しています: エラー: プロパティのウェイポイント内: インデックス 0: 不明なプロパティ lb

何が起こっているのか、またはこのウェイポイントのやり方を知っている人はいますか? コンソールで配列が正しく生成されていることを確認できます。最初の配列要素の例を次に示します。

Array[8]
  0: N
    lb: -22.39019
    mb: 143.04560000000004
    __prot__: N
  1:...etc etc

ありがとうございました。

4

1 に答える 1

1

waypoints.push(新しい google.maps.LatLng(座標[インデックス].lat()、座標[インデックス].lng()));

DirectionsRequest オブジェクト定義の「waypoints」プロパティは、google.maps.DirectionsWaypoint オブジェクト定義の配列である必要がありますhttps://developers.google.com/maps/documentation/javascript/3.exp/reference#DirectionsWaypoint

だから、試してみてください:

waypoints.push(
    {
        location: new google.maps.LatLng(coordinates[index].lat(), coordinates[index].lng())
    }
);
于 2013-10-21T05:20:28.050 に答える