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.
„Wie weit ist Ihr nächster Standort von mir entfernt?“ ist eine Frage, die eine Landingpage direkt beantworten kann, statt den Besucher auf eine separate Karte zu schicken, wo er es selbst herausfinden muss.
Nehmen Sie die Adresse oder Postleitzahl, die der Besucher in ein einfaches Formularfeld eingibt, und geokodieren Sie sie.
GET /v1/forward?q=350 Fifth Avenue, New York&limit=1{
"status": "ok",
"results": [
{"formatted": "350 Fifth Avenue, New York, NY", "lat": 40.7484, "lon": -73.9857, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "es234", "components": {}}
]
}Sobald Sie die Koordinaten des Besuchers haben, berechnen Sie mit einer gängigen Haversine-Formel die Luftlinienentfernung von diesem Punkt zu jedem Ihrer Filialstandorte, die Sie als feste Koordinatenliste in Ihrem eigenen Code hinterlegen.
for store in stores:
store.distance_km = haversine(store.lat, store.lon, 40.7484, -73.9857)Sortieren Sie Ihre Filialliste nach der berechneten Entfernung und zeigen Sie die nächstgelegene Filiale oder die nächstgelegenen paar Filialen zusammen mit der Entfernungsangabe an. Da all das beim Absenden des Formulars auf dem Server läuft, ist kein clientseitiges Skript nötig: Die Seite stellt das Ergebnis einfach beim nächsten Seitenaufruf dar.
Statt nur die eine nächstgelegene Filiale zu nennen, gibt das Sortieren der vollständigen Liste und das Anzeigen der ersten drei dem Besucher eine echte Wahl. Das ist besonders nützlich, wenn die allernächste Filiale andere Öffnungszeiten oder einen anderen Bestand hat als eine etwas weiter entfernte, die der Besucher eigentlich bevorzugen würde. Das kostet nichts extra, da die Sortierung auf denselben Koordinaten aus derselben einzelnen Anfrage basiert.
Wenn die eingegebene Adresse des Besuchers mit einem niedrigen Konfidenzwert zurückkommt, zeigen Sie ihm das formatierte Ergebnis zur Bestätigung an, bevor Sie die Entfernung berechnen, statt selbstsicher eine Entfernung zu melden, die auf einer Vermutung darüber beruht, was er gemeint hat.
Führen Sie die Entfernungsberechnung nicht für eine Anfrage aus, die mit einer deutlich gröberen Genauigkeit aufgelöst wurde, als der Besucher vermutlich beabsichtigt hat, etwa ein bloßer Stadt- oder Regionsname, der einem Ergebnis vom Typ „locality“ entspricht, ohne den Besucher vorher darauf hinzuweisen. Eine Entfernung, die von einem Stadtzentrum statt von der tatsächlichen Straße des Besuchers aus berechnet wurde, kann in beide Richtungen um mehrere Kilometer abweichen, genug, um zu ändern, welche Filiale am nächsten erscheint. Wer das Genauigkeitsfeld prüft, bevor er eine selbstsicher klingende Entfernungsangabe meldet, vermeidet es, eine grobe Schätzung als exakten Wert auszugeben.
Wird limit bei der Geokodierungsanfrage über 1 angehoben, liefert sie mehrere mögliche Treffer, wenn die Eingabe tatsächlich mehrdeutig ist, etwa bei einem Straßennamen, den es in mehr als einem Ort gibt. Diese kurze Liste anzuzeigen und den Besucher den richtigen Eintrag auswählen zu lassen, bevor die Entfernung berechnet wird, ist ein besseres Ergebnis, als sich stillschweigend auf den Kandidaten festzulegen, der zufällig an erster Stelle stand.
Jede Berechnung ist eine Geokodierungsanfrage, unabhängig davon, mit wie vielen Filialen Sie die resultierenden Koordinaten vergleichen, da die Filialliste selbst keine weiteren API-Aufrufe erfordert, sobald Sie die Koordinaten des Besuchers haben. Eine Landingpage mit nennenswertem Traffic nutzt diese Funktion dennoch mit einer Rate von einer Anfrage pro Berechnung eines Besuchers, deutlich innerhalb der 2.500 kostenlosen Anfragen pro Tag, die in jedem Schlüssel enthalten sind.
Ein solcher Entfernungsrechner beantwortet eine konkrete, häufige Frage direkt auf der Seite, statt den Besucher woanders hinzuschicken, um es herauszufinden. Alle Anfrageparameter finden Sie in der Dokumentation zur Geokodierung.