Drop-in-Kompatibilität
Sie müssen diese API nicht lernen, um sie zu nutzen. Für siebzehn andere Geokodierungs- und IP-Abfrage-APIs betreiben wir einen Host, der das Anfrageformat des jeweiligen Anbieters akzeptiert und in dessen Antwortformat antwortet, mit unseren Daten dahinter. Dasselbe gilt für die JavaScript-Kartenbibliotheken, die diese Anbieter ausliefern. Die Migration ist eine Änderung des Hostnamens.
So funktioniert es
Jeder Drop-in-Host ist eine vollständige Implementierung der öffentlichen HTTP-Schnittstelle eines Anbieters: dieselben Pfade, dieselben Query-Parameter, dieselben JSON-Feldnamen, Verschachtelungen und Typen, dasselbe Status-Vokabular und dieselben Fehlerstrukturen. Die Werte stammen von uns. Ihr Client-Code, Ihr Parsing-Code und Ihre Fehlerbehandlung ändern sich nicht.
- Ändern Sie den Host. Aus
maps.googleapis.comwirdgapi.mygeocode.com, ausdev.virtualearth.netwirdbing.mygeocode.comund so weiter. Die Tabelle unten enthält jedes Paar. - Tauschen Sie den Schlüssel aus oder lassen Sie ihn weg. Setzen Sie Ihren My Geocode Schlüssel in den Parameter, den der alte Schlüssel verwendet hat (
key,apiKey,access_token,token...). Jede Adresse erhält 2.500 kostenlose Anfragen pro Tag ohne Schlüssel, und jeder Schlüssel bringt eigene 2.500 mit, sodass Migration und Tests nichts kosten. - Vergleichen Sie. Führen Sie eine Stichprobe echter Anfragen gegen beide Hosts aus. Koordinaten weichen leicht ab, weil die Daten andere sind; Feldnamen nicht.
$ curl "https://maps.googleapis.com/maps/api/geocode/json?address=10+Downing+St+London&key=GOOGLE_KEY"$ curl "https://gapi.mygeocode.com/maps/api/geocode/json?address=10+Downing+St+London&key=MYGEOCODE_KEY"Alle Drop-in-Hosts
Jeder Host läuft auf derselben Infrastruktur, mit denselben Daten, demselben kostenlosen Kontingent und denselben Preisen wie api.mygeocode.com. Klicken Sie auf einen Anbieter für seine Endpunktliste, eine Beispielantwort und die bekannten Unterschiede.
| Anbieter und Abfragen | Ursprünglicher Host | Drop-in-Host | Schlüsselparameter |
|---|---|---|---|
| Google Maps Platform Geokodierung, Reverse, Autovervollständigung, Zeitzone, Höhe | maps.googleapis.com | gapi.mygeocode.com | key |
| Bing Maps REST Services Geokodierung, Reverse, Autovervollständigung, Zeitzone, Höhe | dev.virtualearth.net | bing.mygeocode.com | key |
| HERE Geocoding and Search Geokodierung, Reverse, Autovervollständigung | geocode.search.hereapi.comrevgeocode.search.hereapi.comautosuggest.search.hereapi.comautocomplete.search.hereapi.com | here.mygeocode.com | apiKey |
| Mapbox Geocoding Geokodierung, Reverse, Autovervollständigung | api.mapbox.com | mapbox.mygeocode.com | access_token |
| Geocode.Farm Geokodierung, Reverse | api.geocode.farmwww.geocode.farm | farm.mygeocode.com | key |
| OpenStreetMap Nominatim Geokodierung, Reverse | nominatim.openstreetmap.org | osm.mygeocode.com | keiner; fügen Sie key oder den Header hinzu |
| OpenCage Geokodierung, Reverse | api.opencagedata.com | opencage.mygeocode.com | key |
| LocationIQ Geokodierung, Reverse, Autovervollständigung, Zeitzone | us1.locationiq.comeu1.locationiq.com | locationiq.mygeocode.com | key |
| Geoapify Geokodierung, Reverse, Autovervollständigung, IP-Abfrage | api.geoapify.com | geoapify.mygeocode.com | apiKey |
| TomTom Search Geokodierung, Reverse, Autovervollständigung | api.tomtom.com | tomtom.mygeocode.com | key |
| MapQuest Geocoding Geokodierung, Reverse | www.mapquestapi.comopen.mapquestapi.com | mapquest.mygeocode.com | key |
| Geocodio Geokodierung, Reverse | api.geocod.io | geocodio.mygeocode.com | api_key |
| PositionStack Geokodierung, Reverse | api.positionstack.com | positionstack.mygeocode.com | access_key |
| ip-api.com IP-Abfrage | ip-api.compro.ip-api.com | ipapi.mygeocode.com | key |
| ipinfo.io IP-Abfrage | ipinfo.io | ipinfo.mygeocode.com | token |
| ipstack IP-Abfrage | api.ipstack.com | ipstack.mygeocode.com | access_key |
| Open-Elevation Elevation | api.open-elevation.com | openelevation.mygeocode.com | keiner; fügen Sie key oder den Header hinzu |
JavaScript-Kartenbibliotheken
Ein Anbieterwechsel tut im Browser am meisten weh, wo Karte, Geocoder-Widget und Abrechnung miteinander verflochten sind. Bei den folgenden Bibliotheken wird die Bibliothek selbst von unserem Host geladen (oder, bei MapLibre, Mapbox GL und Leaflet, per Konfiguration auf unseren Host verwiesen) und behält ihre öffentliche API: google.maps.Map, Microsoft.Maps.Map, H.Map und der Rest. Kacheln, Geokodierung, Autovervollständigung und Höhendaten kommen von uns. Kartenaufrufe und Kacheln sind kostenlos; Geokodierungsaufrufe zählen wie gewohnt.
| Bibliothek | Geladen von | Stattdessen laden von | Was weiter funktioniert |
|---|---|---|---|
| Google Maps JavaScript API | maps.googleapis.com | gapi.mygeocode.com | google.maps.Map mit unseren Kacheln (Kartentypen roadmap, satellite und terrain) |
| Bing Maps V8 Web Control | www.bing.com | bing.mygeocode.com | Microsoft.Maps.Map, Location, LocationRect, Pushpin, Infobox, Polyline, Polygon und Layer |
| Mapbox GL JS und mapbox-gl-geocoder | | mapbox.mygeocode.com | Vektorkachel-Stile: streets, light, dark und outdoors, in der Mapbox Style Specification |
| Leaflet-Geocoder-Plugins | tile.openstreetmap.org | tiles.mygeocode.com | Leaflet Control Geocoder: die Geocoder nominatim, google, bing, mapbox, here, opencage, latLng und mapquest, jeweils auf den passenden www.mygeocode.com Host ausgerichtet |
| HERE Maps API für JavaScript | js.api.here.com | here.mygeocode.com | H.Map, H.map.Marker, H.map.Polyline, H.map.Polygon, H.map.Group |
| MapQuest.js | api.mqcdn.com | mapquest.mygeocode.com | L.mapquest.map und tileLayer (map, hybrid, satellite, light, dark) |
Die Seite zu den JavaScript-Drop-ins enthält die Vorher-nachher-Snippets, die Liste dessen, was für jede Bibliothek enthalten ist und was nicht, sowie die Kachel- und Style-URLs.
Wohin der Schlüssel gehört
Jeder Host akzeptiert den Schlüssel an der Stelle, an der der ursprüngliche Anbieter ihn erwartet, und außerdem im Header X-API-Key. Ein Schlüssel ist optional: 2.500 Anfragen pro Tag und Adresse brauchen keinen. Ein kostenloser ist in einer Minute erstellt und bringt Guthaben, Pakete und einen Nutzungsverlauf. Ein nutzungsbasierter Schlüssel darf von zwei IP-Adressen innerhalb von rollierenden 24 Stunden verwendet werden und ein Unlimited-Schlüssel von drei; für mehr Adressen nutzen Sie mehr Schlüssel oder Pakete (siehe Authentifizierung).
| Parameter | Verwendet von |
|---|---|
key | Google Maps, Bing Maps, Geocode.Farm, OpenCage, LocationIQ, TomTom, MapQuest, ip-api (Pro-Version) |
apiKey | HERE, Geoapify |
access_token | Mapbox |
api_key | Geocodio |
access_key | PositionStack, ipstack |
token oder Authorization: Bearer | ipinfo, HERE |
| keiner | Nominatim, Open-Elevation. Fügen Sie key=... zur Query hinzu oder senden Sie den Header X-API-Key. |
Kontingent und Fehler auf den Drop-in-Hosts
Das Tageskontingent ist dasselbe wie überall sonst und wird pro Schlüssel gezählt, oder pro Adresse, wenn kein Schlüssel gesendet wird, über api.mygeocode.com und alle Drop-in-Hosts hinweg: 2.500 kostenlos pro Tag, danach Guthaben oder ein Unlimited-Schlüssel. Die Header X-Quota-* und X-Key-IPs-* werden auf jedem Host gesendet, sodass Sie den tatsächlichen Stand unabhängig vom Body-Format aus den Headern lesen können. Im Body werden Limits so gemeldet, wie der Anbieter sie meldet:
| Host | Kein Guthaben mehr (402) | Ungültiger, fehlender oder IP-beschränkter Schlüssel | Ungültige Anfrage |
|---|---|---|---|
| gapi.mygeocode.com | HTTP 200, "status": "OVER_QUERY_LIMIT" | "status": "REQUEST_DENIED" | "status": "INVALID_REQUEST" |
| bing.mygeocode.com | "statusCode": 429 in der Hülle | "statusCode": 401, authenticationResultCode: InvalidCredentials | "statusCode": 400 mit errorDetails |
| here.mygeocode.com | HTTP 429, {"title": "Too Many Requests", "status": 429} | HTTP 401 mit error_description | HTTP 400 mit title und cause |
| mapbox.mygeocode.com | HTTP 429, {"message": "Rate limit exceeded"} | HTTP 401, {"message": "Not Authorized - Invalid Token"} | HTTP 422 mit message |
| osm.mygeocode.com | HTTP 429, {"error": {"code": 429, "message": "..."}} | Nicht zutreffend | HTTP 400, {"error": {"code": 400, "message": "..."}} |
| ipapi.mygeocode.com | HTTP 200, {"status": "fail", "message": "quota"} | {"status": "fail", "message": "invalid key"} | {"status": "fail", "message": "invalid query"} |
| Andere | Wie vom Anbieter dokumentiert; siehe die Seite des jeweiligen Hosts |
Was übereinstimmt und was nicht
Identisch
- Pfade, Methoden und Query-Parameter, die der Anbieter dokumentiert.
- Antwortstruktur: Feldnamen, Verschachtelung, Arrays, Typen, Reihenfolge der Koordinaten (einschließlich
[lon, lat]bei Mapbox). - Status- und Konfidenz-Vokabular (
ROOFTOP,High,houseNumber,EXACT_MATCH...), abgeleitet aus unseren Wertenprecisionundconfidence. - Fehlerstrukturen, damit die bestehende Fehlerbehandlung weiter funktioniert.
- Preise und Kontingent: keine Zusatzkosten für die Nutzung eines Drop-in-Hosts.
Anders
- Die Daten. Koordinaten, formatierte Zeichenketten und Konfidenzwerte stammen von uns und stimmen nicht Ziffer für Ziffer mit dem Original überein. Die Abdeckung auf Hausnummernebene unterscheidet sich je nach Land; siehe Abdeckung.
- Kennungen. Place-IDs stammen von uns und sind stabil, können aber nicht an den ursprünglichen Anbieter gesendet werden.
- Alles außerhalb von Geokodierung, Autovervollständigung, IP, Zeitzone und Höhe: Routing, Ortsdetails, Fotos, Verkehr, Street View. Die Seite jedes Hosts listet auf, was fehlt.
- Schlüssel: zwei IP-Adressen innerhalb von rollierenden 24 Stunden bei einem nutzungsbasierten Schlüssel, drei bei einem Unlimited-Schlüssel, genau wie bei unseren eigenen Endpunkten.
Checkliste für die Migration
- Durchsuchen Sie Ihren Code und Ihre Konfiguration nach dem Hostnamen des Anbieters. Er steht oft an mehr als einer Stelle: Servercode, mobile Apps, eine CDN-Regel, eine zwischengespeicherte Konfiguration.
- Ändern Sie ihn in den Drop-in-Host aus der obigen Tabelle. Behalten Sie den Pfad bei.
- Ersetzen Sie den Schlüssel durch einen My Geocode Schlüssel. Verwenden Sie einen Schlüssel pro Server oder höchstens pro zwei Servern; ein nutzungsbasierter Schlüssel akzeptiert zwei IP-Adressen innerhalb von rollierenden 24 Stunden, ein Unlimited-Schlüssel drei.
- Führen Sie Ihre bestehende Testsuite aus. Sie sollte unverändert durchlaufen. Wenn ein Feld fehlt, auf das Sie angewiesen sind, prüfen Sie die Seite des Hosts auf bekannte Lücken und sagen Sie uns Bescheid.
- Spielen Sie einige hundert echte Anfragen gegen beide Hosts ab und vergleichen Sie die Koordinaten und die Felder, die Sie anzeigen. Achten Sie auf
precision, wo der Drop-in-Host es ausgibt (alslocation_type,accuracy,resultTypeund so weiter). - Beobachten Sie
X-Quota-Usedeinen Tag lang, um Ihren Tarif zu bemessen: Guthaben unter etwa 19.000 Anfragen pro Tag, darüber ein Unlimited-Schlüssel. - Kündigen Sie die alte Abrechnung.
SDKs der Anbieter
Die meisten offiziellen Client-Bibliotheken akzeptieren eine eigene Basis-URL und funktionieren daher auch mit den Drop-in-Hosts: die Google Maps Services Clients (googlemaps für Python, @googlemaps/google-maps-services-js), die Mapbox SDKs (Option origin), die REST-Clients von HERE, die Bibliotheken von ipinfo und Nominatim-Wrapper wie geopy (domain=). Richten Sie sie auf den Host aus der Tabelle aus und übergeben Sie Ihren My Geocode Schlüssel dort, wo der Schlüssel des Anbieters stand.
Ein Anbieter, der nicht aufgeführt ist
Einen Host hinzuzufügen ist einige Tage Arbeit, wenn das Format des Anbieters dokumentiert ist. Wenn Sie einen Dienst nutzen, der hier fehlt, sagen Sie uns, welchen und wie viele Anfragen pro Tag Sie ungefähr senden. Die letzten Neuzugänge gingen alle auf Wünsche von Nutzern zurück.