Die Nutzung Ihres Schlüssels überwachen, bevor Sie an ein Limit stoßen
Wenn Sie Ihre Kontingent-Header laufend beobachten, wissen Sie, wann ein Limit näher rückt, lange bevor eine Anfrage tatsächlich abgelehnt wird.
Die Entfernung zwischen zwei Adressen liefert eine Geokodierungs-API nicht direkt, denn für eine Entfernungsberechnung braucht man nur Koordinaten, und die liefert Ihnen der Endpunkt für die Vorwärts-Geokodierung bereits für jede Adresse, die Sie senden.
Geokodieren Sie jede Adresse einzeln oder beide zusammen in einer einzigen Sammelanfrage, um für jede ein Paar aus Breiten- und Längengrad zu erhalten.
POST /v1/forward
Content-Type: application/json
["221B Baker Street, London", "10 Downing Street, London"]{
"status": "ok",
"results": [
{"formatted": "221B Baker Street, London, UK", "lat": 51.5237, "lon": -0.1585, "type": "address", "precision": "house", "confidence": 0.95, "place_id": "abc123", "components": {}},
{"formatted": "10 Downing Street, London, UK", "lat": 51.5033, "lon": -0.1276, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "op678", "components": {}}
]
}Mit zwei Koordinatenpaaren wenden Sie die Standard-Haversine-Formel an, die den Unterschied in Breiten- und Längengrad in eine Luftlinienentfernung über die Erdoberfläche umrechnet. Für die meisten Programmiersprachen gibt es eine kleine, gut getestete Haversine-Implementierung als kurze Funktion oder in einer gängigen Bibliothek, sodass Sie die Trigonometrie nicht von Grund auf selbst schreiben müssen.
distance_km = haversine(51.5237, -0.1585, 51.5033, -0.1276)Die Haversine-Formel erwartet Breiten- und Längengrad im Bogenmaß, die Koordinaten in einer API-Antwort sind jedoch immer in Grad angegeben. Wenn Sie Gradwerte direkt in eine für das Bogenmaß geschriebene Formel einsetzen, erhalten Sie eine Entfernung, die auf den ersten Blick plausibel wirkt, aber unbemerkt um einen großen Faktor falsch ist. Rechnen Sie Grad zuerst ins Bogenmaß um oder verwenden Sie eine Bibliotheksfunktion, die dokumentiert, welche Einheit sie erwartet, und prüfen Sie das Ergebnis anhand einer Ihnen bekannten Entfernung, bevor Sie sich im Produktivbetrieb darauf verlassen.
Dieselbe Berechnung lässt sich ganz natürlich auf mehr als zwei Punkte erweitern. Geokodieren Sie jeden Stopp einer Route in einer Sammelanfrage und summieren Sie dann die Haversine-Entfernung zwischen jedem aufeinanderfolgenden Koordinatenpaar, um eine grobe Gesamtlänge der Route zu erhalten, nützlich für eine schnelle Schätzung einer Lieferroute, noch bevor Sie ein echtes Routing mit Abbiegehinweisen eingerichtet haben.
total_km = haversine(a, b) + haversine(b, c) + haversine(c, d)Eine Haversine-Berechnung liefert die Luftlinienentfernung, nicht die Fahr- oder Gehstrecke entlang echter Straßen. Für die meisten Zwecke, etwa das Sortieren nahegelegener Standorte oder die Schätzung ungefährer Nähe, reicht die Luftlinie aus und benötigt nichts weiter als die Koordinaten, die Sie bereits haben. Wenn Sie ausdrücklich die geroutete Fahrstrecke benötigen, ist das eine eigene Art von Berechnung, die über das hinausgeht, was eine Geokodierungsabfrage liefert.
Zwei Punkte auf gegenüberliegenden Seiten des 180. Längengrads oder sehr nahe an einem Pol können eine naive Entfernungsformel aus dem Tritt bringen, die nicht berücksichtigt, dass der Längengrad von 180 auf minus 180 umspringt. Bei typischen Entfernungsprüfungen von Adresse zu Adresse ist das selten, aber es lohnt sich, dies zu testen, wenn Ihre Anwendung tatsächlich diesen Teil der Erde abdeckt.
Das Geokodieren zweier Adressen kostet zwei Anfragen, egal ob als getrennte Aufrufe oder als ein Sammelaufruf. Die Entfernungsberechnung selbst findet, sobald Sie beide Koordinatenpaare haben, vollständig in Ihrem eigenen Code statt und belastet Ihr Kontingent nicht weiter.
Wenn Sie eine der beiden Adressen bereits zuvor geokodiert und gecacht haben, braucht nur die neue Adresse eine frische Anfrage, was die Kosten für diese Berechnung auf eine Anfrage statt zwei senkt.
Entfernungsberechnungen sind für jede Adresse, die Sie noch nicht in Koordinaten aufgelöst haben, nur eine Geokodierungsanfrage entfernt. Die vollständige Struktur der Antwort finden Sie in der Dokumentation zur Geokodierung.