4

私は Google Maps API を使用して、レストランが配達ゾーンを定義するために使用できるツールを作成する任務を負っています。進行状況は次のとおりです。http://codepen.io/keithpickering/pen/NqdzKO

ユーザーはポリゴンを描画できる必要があります。その後、精度を高めるために近くの道路にスナップします。これは比較的うまく機能していますが、Google に組み込まれている道路へのスナップ機能が...まあ、最悪です。ポイントが十分に接近していない場合、スナップを拒否するか、奇妙なぎくしゃくした線を作成します。

私が必要としているのは、ツールが道路のスナップでより「寛容」になることです。言い換えれば、誰かがどんなズーム距離からでもほとんどどんな種類の多角形でも怠惰に描くことができるべきであり、線はある道路または別の道路にスナップするように強制されるべきです.

スナップに使用しているコードの一部を次に示します。

...

// Snap polygon to roads
  placeIdArray = [];
  runSnapToRoad(poly, path, color);
});

// Snap a user-created polyline to roads and draw the snapped path
function runSnapToRoad(poly, path, color) {
  var pathValues = [];
  for (var i = 0; i < path.getLength(); i++) {
    pathValues.push(path.getAt(i).toUrlValue());
  }

  $.get('https://roads.googleapis.com/v1/snapToRoads', {
    interpolate: true,
    key: apiKey,
    path: pathValues.join('|')
  }, function(data) {
    processSnapToRoadResponse(data);
    drawSnappedPolyline(poly, path, color);
  });
}

// Store snapped polyline returned by the snap-to-road method.
function processSnapToRoadResponse(data) {
  snappedCoordinates = [];
  placeIdArray = [];
  for (var i = 0; i < data.snappedPoints.length; i++) {
    var latlng = new google.maps.LatLng(
        data.snappedPoints[i].location.latitude,
        data.snappedPoints[i].location.longitude);
    snappedCoordinates.push(latlng);
    placeIdArray.push(data.snappedPoints[i].placeId);
  }
}

Roads API をあきらめて、ルート案内サービスを使用した、よりカスタマイズされたソリューションに進む必要がありますか? 誰にもアイデアはありますか?助けてくれてありがとう。

4

2 に答える 2