1. ホーム
  2. google-maps

[解決済み] Google Maps: 緯度/経度を指定して国、州、地域、都市を取得する方法とは?

2022-05-14 19:31:14

質問

緯度/経度値のコレクションに基づいて、国、州、都市のリストが必要です。この情報を、階層を維持し、重複のない方法で保存する必要があります (たとえば、"USA" と "United States" および "United States of America" は同じ国であり、私のデータベースでこの国のインスタンスは 1 つだけ欲しいです)。

これはGoogle Map APIで行うことが可能ですか?

どのように解決するのですか?

あなたが探しているものは 逆ジオコーディング . Google は、サーバーサイドの逆ジオコーディングサービスを Google Geocoding API を通して、サーバーサイドの逆ジオコーディングサービスを提供しています。

以下のリクエストに対するレスポンスは、このようになります。

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false

レスポンスです。

{
  "status": "OK",
  "results": [ {
    "types": [ "street_address" ],
    "formatted_address": "275-291 Bedford Ave, Brooklyn, NY 11211, USA",
    "address_components": [ {
      "long_name": "275-291",
      "short_name": "275-291",
      "types": [ "street_number" ]
    }, {
      "long_name": "Bedford Ave",
      "short_name": "Bedford Ave",
      "types": [ "route" ]
    }, {
      "long_name": "New York",
      "short_name": "New York",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "Brooklyn",
      "short_name": "Brooklyn",
      "types": [ "administrative_area_level_3", "political" ]
    }, {
      "long_name": "Kings",
      "short_name": "Kings",
      "types": [ "administrative_area_level_2", "political" ]
    }, {
      "long_name": "New York",
      "short_name": "NY",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United States",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "11211",
      "short_name": "11211",
      "types": [ "postal_code" ]
    } ],
    "geometry": {
      "location": {
        "lat": 40.7142298,
        "lng": -73.9614669
      },
      "location_type": "RANGE_INTERPOLATED",
      "viewport": {
        "southwest": {
          "lat": 40.7110822,
          "lng": -73.9646145
        },
        "northeast": {
          "lat": 40.7173774,
          "lng": -73.9583193
        }
      }
    }
  },

  ... Additional results[] ...

また、リクエストURIのjsonをxmlに置き換えるだけで、jsonの代わりにxmlでレスポンスを受け取ることも可能です。

http://maps.googleapis.com/maps/api/geocode/xml?latlng=40.714224,-73.961452&sensor=false

私が知る限り、Google は住所構成要素、特に国名や都市名などの高レベルの名前についても同じ名前を返します。とはいえ、ほとんどのアプリケーションで結果は非常に正確ですが、それでも時折スペルミスやあいまいな結果を見つけることができることを覚えておいてください。