互換性
このAPIを使うために、このAPIを覚える必要はありません。他の17のジオコーディングAPIとIP検索APIについて、そのプロバイダーのリクエスト形式を受け付け、そのプロバイダーのレスポンス形式で応答し、背後で当社のデータを使うホストを用意しています。これらのプロバイダーが提供するJavaScript地図ライブラリについても同様です。移行はホスト名を変えるだけです。
仕組み
各互換ホストは、1つのプロバイダーの公開HTTPインターフェースを完全に実装しています。同じパス、同じクエリパラメータ、同じJSONフィールド名・入れ子構造・型、同じステータスの語彙、同じエラー形式です。値は当社のものです。クライアントコード、解析コード、エラー処理は変わりません。
- ホストを変更します。
maps.googleapis.comはgapi.mygeocode.comに、dev.virtualearth.netはbing.mygeocode.comに、というように変わります。すべての組み合わせは下の表にあります。 - キーを入れ替えるか、削除します。以前のキーが使っていたパラメータ(
key、apiKey、access_token、tokenなど)にMy Geocodeのキーを入れてください。どのアドレスもキーなしで1日あたり2,500件の無料リクエストを利用でき、どのキーにも独自に2,500件が付くため、移行とテストに費用はかかりません。 - 比較します。実際のリクエストのサンプルを両方のホストに送ってください。データが異なるため座標はわずかに違いますが、フィールド名は同じです。
$ 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"すべての互換ホスト
すべてのホストはapi.mygeocode.comと同じインフラ、同じデータ、同じ無料枠、同じ料金で動作します。プロバイダーをクリックすると、エンドポイントの一覧、レスポンスのサンプル、既知の相違点が表示されます。
| プロバイダーと検索の種類 | 元のホスト | 互換ホスト | キーのパラメーター |
|---|---|---|---|
| Google Maps Platform ジオコーディング、逆ジオコーディング、オートコンプリート、タイムゾーン、標高 | maps.googleapis.com | gapi.mygeocode.com | key |
| Bing Maps REST Services ジオコーディング、逆ジオコーディング、オートコンプリート、タイムゾーン、標高 | dev.virtualearth.net | bing.mygeocode.com | key |
| HERE Geocoding and Search ジオコーディング、逆ジオコーディング、オートコンプリート | geocode.search.hereapi.comrevgeocode.search.hereapi.comautosuggest.search.hereapi.comautocomplete.search.hereapi.com | here.mygeocode.com | apiKey |
| Mapbox Geocoding ジオコーディング、逆ジオコーディング、オートコンプリート | api.mapbox.com | mapbox.mygeocode.com | access_token |
| Geocode.Farm ジオコーディング、逆ジオコーディング | api.geocode.farmwww.geocode.farm | farm.mygeocode.com | key |
| OpenStreetMap Nominatim ジオコーディング、逆ジオコーディング | nominatim.openstreetmap.org | osm.mygeocode.com | なし。keyまたはヘッダーを追加 |
| OpenCage ジオコーディング、逆ジオコーディング | api.opencagedata.com | opencage.mygeocode.com | key |
| LocationIQ ジオコーディング、逆ジオコーディング、オートコンプリート、タイムゾーン | us1.locationiq.comeu1.locationiq.com | locationiq.mygeocode.com | key |
| Geoapify ジオコーディング、逆ジオコーディング、オートコンプリート、IP検索 | api.geoapify.com | geoapify.mygeocode.com | apiKey |
| TomTom Search ジオコーディング、逆ジオコーディング、オートコンプリート | api.tomtom.com | tomtom.mygeocode.com | key |
| MapQuest Geocoding ジオコーディング、逆ジオコーディング | www.mapquestapi.comopen.mapquestapi.com | mapquest.mygeocode.com | key |
| Geocodio ジオコーディング、逆ジオコーディング | api.geocod.io | geocodio.mygeocode.com | api_key |
| PositionStack ジオコーディング、逆ジオコーディング | api.positionstack.com | positionstack.mygeocode.com | access_key |
| ip-api.com IP検索 | ip-api.compro.ip-api.com | ipapi.mygeocode.com | key |
| ipinfo.io IP検索 | ipinfo.io | ipinfo.mygeocode.com | token |
| ipstack IP検索 | api.ipstack.com | ipstack.mygeocode.com | access_key |
| Open-Elevation Elevation | api.open-elevation.com | openelevation.mygeocode.com | なし。keyまたはヘッダーを追加 |
JavaScript地図ライブラリ
プロバイダーの変更が最も大変なのはブラウザです。地図、ジオコーダーのウィジェット、課金が絡み合っているからです。以下のライブラリでは、ライブラリ自体を当社のホストから読み込み(MapLibre、Mapbox GL、Leafletの場合は設定で当社のホストを指定し)、公開APIはそのまま維持されます。google.maps.Map、Microsoft.Maps.Map、H.Mapなどです。タイル、ジオコーディング、オートコンプリート、標高は当社から提供されます。地図の読み込みとタイルは無料で、ジオコーディングの呼び出しは通常どおり数えられます。
| ライブラリ | 従来の読み込み元 | 新しい読み込み元 | 引き続き使えるもの |
|---|---|---|---|
| Google Maps JavaScript API(地図ライブラリ) | maps.googleapis.com | gapi.mygeocode.com | 当社のタイルを使ったgoogle.maps.Map(roadmap、satellite、terrainの地図タイプ) |
| Bing Maps V8 Web Control(地図コントロール) | www.bing.com | bing.mygeocode.com | Microsoft.Maps.Map、Location、LocationRect、Pushpin、Infobox、Polyline、PolygonとLayer |
| Mapbox GL JSとmapbox-gl-geocoder | | mapbox.mygeocode.com | ベクタータイルのスタイル:streets、light、dark、outdoors(Mapboxスタイル仕様準拠) |
| Leafletのジオコーダープラグイン | tile.openstreetmap.org | tiles.mygeocode.com | Leaflet Control Geocoder:nominatim、google、bing、mapbox、here、opencage、latLng、mapquestの各ジオコーダーを、それぞれ対応するwww.mygeocode.comのホストに向けて使用 |
| HERE Maps API for 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とtileLayer(map、hybrid、satellite、light、dark) |
JavaScript互換ライブラリのページに、変更前後のコード例、ライブラリごとに含まれるものと含まれないものの一覧、タイルとスタイルのURLがあります。
キーの置き場所
各ホストは、元のプロバイダーが想定する場所とX-API-Keyヘッダーの両方でキーを受け付けます。キーは任意で、アドレスごとに1日あたり2,500件のリクエストはキーなしで利用できます。無料のキーは1分ほどで取得でき、クレジット、パッケージ、利用履歴が加わります。従量課金キーは連続する24時間あたり2つのIPアドレスから、Unlimitedキーは3つから利用できます。より多くのアドレスで使うには、キーやパッケージを追加してください(認証をご覧ください)。
| パラメータ | 使用するプロバイダー |
|---|---|
key | Google Maps、Bing Maps、Geocode.Farm、OpenCage、LocationIQ、TomTom、MapQuest、ip-api(pro) |
apiKey | HERE、Geoapify |
access_token | Mapbox |
api_key | Geocodio |
access_key | PositionStack、ipstack |
tokenまたはAuthorization: Bearer | ipinfo、HERE |
| なし | Nominatim、Open-Elevation。クエリにkey=...を追加するか、X-API-Keyヘッダーを送信してください。 |
互換ホストでの割り当てとエラー
1日の割り当ては他のすべての場所と同じで、api.mygeocode.comとすべての互換ホストを合算し、キーごと(キーが送信されない場合はアドレスごと)に数えられます。1日あたり2,500件が無料で、それを超えるとクレジットまたはUnlimitedキーが使われます。X-Quota-*とX-Key-IPs-*ヘッダーはすべてのホストで送信されるため、本文の形式にかかわらず、ヘッダーから実際の状態を読み取れます。本文では、上限はプロバイダーと同じ方法で報告されます。
| ホスト | クレジット不足(402) | 無効なキー、キーなし、またはIP制限に達したキー | 無効なリクエスト |
|---|---|---|---|
| gapi.mygeocode.com | HTTP 200、"status": "OVER_QUERY_LIMIT" | "status": "REQUEST_DENIED" | "status": "INVALID_REQUEST" |
| bing.mygeocode.com | エンベロープ内の"statusCode": 429 | "statusCode": 401, authenticationResultCode: InvalidCredentials | errorDetails付きの"statusCode": 400 |
| here.mygeocode.com | HTTP 429、{"title": "Too Many Requests", "status": 429} | error_description付きのHTTP 401 | titleとcause付きのHTTP 400 |
| mapbox.mygeocode.com | HTTP 429、{"message": "Rate limit exceeded"} | HTTP 401、{"message": "Not Authorized - Invalid Token"} | message付きのHTTP 422 |
| osm.mygeocode.com | HTTP 429、{"error": {"code": 429, "message": "..."}} | 該当なし | 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"} |
| その他 | プロバイダーのドキュメントどおり。各ホストのページをご覧ください |
一致する点と一致しない点
同一
- プロバイダーがドキュメントに記載しているパス、メソッド、クエリパラメータ。
- レスポンスの構造:フィールド名、入れ子構造、配列、型、座標の順序(Mapboxの
[lon, lat]を含む)。 - ステータスと信頼度の語彙(
ROOFTOP、High、houseNumber、EXACT_MATCHなど)。当社のprecisionとconfidenceから対応付けています。 - エラーの形式。既存のエラー処理はそのまま動作します。
- 料金と割り当て:互換ホストを使っても追加料金はかかりません。
異なる点
- データ。座標、整形済み文字列、信頼度の値は当社のものであり、元のプロバイダーと桁まで一致するわけではありません。番地レベルのカバレッジは国によって異なります。カバレッジをご覧ください。
- 識別子。場所IDは当社のもので安定していますが、元のプロバイダーに送ることはできません。
- ジオコーディング、オートコンプリート、IP、タイムゾーン、標高以外のもの:ルート検索、場所の詳細、写真、交通情報、Street View。各ホストのページに、提供されていないものが記載されています。
- キー:当社のエンドポイントと同様に、従量課金キーは連続する24時間あたり2つのIPアドレス、Unlimitedキーは3つです。
移行チェックリスト
- コードと設定からプロバイダーのホスト名を検索します。サーバーのコード、モバイルアプリ、CDNのルール、キャッシュされた設定など、複数の場所にあることがよくあります。
- 上の表にある互換ホストに変更します。パスはそのままにします。
- キーをMy Geocodeのキーに置き換えます。サーバーごとに1つ、多くても2台で1つのキーを使ってください。従量課金キーは連続する24時間あたり2つのIPアドレス、Unlimitedキーは3つまで受け付けます。
- 既存のテストスイートを実行します。変更なしで通るはずです。依存しているフィールドがない場合は、ホストのページで既知の不足点を確認し、当社にお知らせください。
- 実際のリクエストを数百件両方のホストに送り直し、座標と表示しているフィールドを比較します。互換ホストが
precisionを公開している場合(location_type、accuracy、resultTypeなど)は、それも確認してください。 - 1日ほど
X-Quota-Usedを観察して、プランの規模を決めます。1日あたり約19,000件未満ならクレジット、それを超えるならUnlimitedキーです。 - 以前の課金を解約します。
プロバイダーのSDK
ほとんどの公式クライアントライブラリはカスタムのベースURLを受け付けるため、互換ホストでも動作します。Google Maps Servicesのクライアント(Python用のgooglemaps、@googlemaps/google-maps-services-js)、MapboxのSDK(originオプション)、HEREのRESTクライアント、ipinfoのライブラリ、geopyなどのNominatimラッパー(domain=)です。表にあるホストを指定し、プロバイダーのキーがあった場所にMy Geocodeのキーを渡してください。
一覧にないプロバイダー
プロバイダーの形式がドキュメント化されていれば、ホストの追加は数日の作業です。ここにないサービスをお使いの場合は、サービス名と、1日あたりのおおよそのリクエスト数をお知らせください。最近追加したものはすべてユーザーからの要望によるものです。