住所から緯度経度を求める方法

0 件のコメント

今回は「住所から緯度経度を求める方法」についてまとめます。

概要

Goocle Cloud Platform (GCP) の Geocoding API を利用すると「住所から緯度経度を求める」ことができます。 お金が 1000リクエストにつき 5$ (2020年2月時点)かかるようですが…。

今回は GCP の Geocoding API を利用して任意の住所から緯度経度を求める方法を準備から実装までまとめます。

GCP Geocoding API の準備

今回用に新しいプロジェクトを作成します。 既存のものを使うのであればこの作業はスキップしてもOK。

  1. 「新しいプロジェクト」を選択

  2. プロジェクト名を任意に設定して「作成」

  1. 左上にある「ナビゲーションメニュー」を選択

  2. [APIとサービス]-[ライブラリ]を選択

  3. 検索窓に「geocoding」を入力

  4. 検索結果から「Geocoding API」を選択

  5. 「有効にする」を選択

  1. ナビゲーションメニューから[APIとサービス]-[認証情報]を選択

  2. 上部にあるメニューから[認証情報を作成]-[APIキー]を選択

  3. APIキーを確認して「閉じる」

以上で使える状態は作れたので、以降では実際に使っていきます。

住所から緯度経度を取得

直接 Geocoding API を実行する方法です。 基本になる方法なのでおさえておくのが良い気がします。

リクエスト

リクエスト

GET: https://maps.googleapis.com/maps/api/geocode/<format>

パラメーター

パラメーター 必須 説明
パスパラメータ―
format string 以下のどちらかを指定。
  • json
  • xml
クエリパラメーター
address string 検索したい住所を指定。
key string あらかじめ取得しておいた有効なAPIキーを指定。
language   string 戻り値の言語を指定。日本語の場合 ja を指定。 その他の言語は サポート言語 を参照。

レスポンス

{
  "results": [{
    "address_components": [{
      "long_name": string,
      "short_name": string,
      "types": [string ...]
    } ...],
    "formatted_address": string,
    "geometry": {
      "bounds": {
        "northeast": {
          "lat": number,
          "lng": number
        },
        "southwest": {
          "lat": number,
          "lng": number
        }
      },
      "location": {      // ★ 経度緯度はここに入る
        "lat": number,   // ★ 緯度(latitude)
        "lng": number    // ★ 経度(longitude)
      },
      "location_type": string,
      "viewport": {
        "northeast": {
          "lat": number,
          "lng": number
        },
        "southwest": {
          "lat": number,
          "lng": number
        }
      }
    },
    "place_id": string,
    "types": [string ...]
  }],
  "status": string
}

利用するモジュールは 「@googlemaps/google-maps-services-js」 です。 このモジュールを使ったサンプルコードは以下のようになります。 基本は「Geocoding API を直接実行」になりますので、リクエストパラメーターやレスポンスのオブジェクトは前述のリクエストレスポンスに類似します。

var Client = require("@googlemaps/google-maps-services-js").Client;
var client = new Client({});

client.geocode({
  params: {
    address: "<検索したい住所>",
    key: "YOUR-API-KEY"
  },
  timeout: 10000
}).then((res) => {
  if (res.data.results.length === 0) {
    console.log(res);
  }
  console.log(res.data.results[0].geometry.location);
}).catch((err) => {
  throw err;
});

連続アクセスすると取得できないことがあるので、エラー処理は入れておくのが無難です。 また、連続処理させたい場合はいっきにリクエストを投げつけるのではなく、少し間隔をあけながらリクエストしたほうがうまく応答が返ってくるようでした。

今回は「住所から緯度経度を求める方法」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!

参考記事

最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!