2010-01-30 3 views

Antwort

1

Sie können die Option getPolyline über den optionalen Parameter GDirectionsOptions auf die Anforderung GDirections load setzen. Dadurch erhalten Sie die Polylinien-Daten für die Route.

Sobald Sie diese Daten haben, können Sie über jeden Punkt in der Polylinie iterieren und den Abstand zu jedem Ihrer eigenen Datenpunkte bestimmen (Sie können die GLatLng distanceFrom Methode verwenden, um den Abstand zu berechnen).

Sobald Sie für jeden Ihrer Datenpunkte die kürzeste Entfernung zu Ihrer Route haben, können Sie basierend auf einer gewissen Toleranz ermitteln, ob der Punkt auf der Route liegt.

bearbeiten:

Obwohl es ist in Ordnung, die GLatLng distanceFrom Methode aufzurufen wiederholt (es ist nur ein Dienstprogramm Methode, um die Entfernung zwischen zwei Punkten zu bekommen), erkannte ich meine Antwort, das Problem vereinfacht. Um eine genaue Entfernung von der Route zu erhalten, müssen Sie den Abstand von der Polylinie zwischen den beiden nächsten Punkten bestimmen (nicht nur die Entfernung von jedem Punkt).

+0

Ich denke, du meinst distanceFrom eher als getDistance. getDistance ist eine GDirections-Methode, und Sie möchten keinen GDirections-Aufruf für jeden Vertex auf der Polylinie ausführen, da dies sehr langsam wäre und sich schnell in Ihre GDirections-Quote einfriert. –

+0

Nein. Ich spreche von * GLatLng * * getDistance *, die eine Hilfsmethode ist, um den Abstand zwischen zwei Geo-Punkten zu überprüfen. – RedBlueThing

+0

Ups ... Ich habe gerade die Ursache der Verwirrung erkannt. Ich meinte die Methode * distanceFrom * auf GLatLng. – RedBlueThing

1

Bill Chadwick hat am unteren Rand der this page Code "Entfernung von Punkt zu Polylinie oder Polygon", die sich als nützlich erweisen könnte.

Verwandte Themen