Google Maps Geocodingで住所からの取得がエラーの時
Google MapsのGeocodingを使って住所から経度緯度を取得するとき、ビル名が違う場合や住所表記の変更が間に合っていない時、Google Mapsの仕様変更でなにも返さないようになったようです。
エラーになった時に、Google Placeで再検索をするようなサンプルスクリプトを作って見ました。
参考
https://developers.google.com/maps/documentation/geocoding/intro?hl=ja
https://maps.multisoup.co.jp/blog/510/
https://maps.multisoup.co.jp/blog/615/
Google Maps APIの取得方法
その前にGoogle Maps GeocodingとGoogle PlaceのAPIを有効にする必要があります。
取得方法などはこちらが参考になります。
https://syncer.jp/google-maps-javascript-api-matome
本家
https://developers.google.com/maps/documentation/geocoding/get-api-key?hl=ja
Google Maps & Placeのサンプルスクリプト作成
GoogleではGoogle Placeを使うようすることを推奨しているようなので、早速サンプルを作成してみました。
とりあえず下記のようなシンプルなHTML上に記載されてる住所から経度緯度を取得するようにします。
スクリプトサンプルはこんな感じで。
19行目からのスクリプトで一度Geocodeを取得する処理をしています。
22行目でstatusがokならばそのまま処理を続行し、statusがそれ以外(ZERO_RESULTSなど)になった場合は、39行目以下の処理で再度Google Placeから情報を取得させています。
サンプルスクリプト作成後の雑感
とりあえずサンプルで作ったのですが、これもし一回目でエラーになった場合、Googleに再度問い合わせをしてしまうという処理にしています。
しかし、Google Maps Geocodingも仕様変更で回数制限、およびオーバー部分は課金になっているので問い合わせ回数は減らしたいですよね。
それを考えると、最初から39行目からの処理のみにするのがいいのかもしれません。
Geocodingに対する課金などを考えると、CMSなどを使ってGoogle Mapsを複数ページに表示させるのであれば、管理画面の住所の入力時にGeocodingで経度緯度を取得してデータベースに入れておき、WEBページに表示するときはデータベースから引っ張ってきた経度緯度から直にMapを表示させる方がいいのかもしれないなどと考えていたりします。