【问题标题】:Is it possible to get an address from coordinates using google maps?是否可以使用谷歌地图从坐标中获取地址?
【发布时间】:2012-04-18 00:47:28
【问题描述】:

我只是好奇。也许是为了未来的项目。我想知道是否可以通过 Google API 从给定坐标中检索地址。

【问题讨论】:

    标签: google-maps google-maps-api-3


    【解决方案1】:

    是的。只需使用 Google Geocoding 和 Places API https://developers.google.com/maps/documentation/geocoding/https://developers.google.com/maps/documentation/places/

    示例(源自here):

    var geocoder;
    
    function initialize() {
      geocoder = new google.maps.Geocoder();
    }
    
    function codeLatLng(lat, lng) {
      var latlng = new google.maps.LatLng(lat, lng);
      geocoder.geocode({
        'latLng': latlng
      }, function (results, status) {
        if (status === google.maps.GeocoderStatus.OK) {
          if (results[1]) {
            console.log(results[1]);
          } else {
            alert('No results found');
          }
        } else {
          alert('Geocoder failed due to: ' + status);
        }
      });
    }
    
    google.maps.event.addDomListener(window, 'load', initialize);
    

    【讨论】:

    【解决方案2】:

    可以通过向地理编码端点发送简单的 GET 请求来访问此信息。

    例如点击https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=API_KEY 会产生以下响应:

    {
       "results" : [
          {
             "address_components" : [
                {
                   "long_name" : "277",
                   "short_name" : "277",
                   "types" : [ "street_number" ]
                },
                {
                   "long_name" : "Bedford Avenue",
                   "short_name" : "Bedford Ave",
                   "types" : [ "route" ]
                },
                {
                   "long_name" : "Williamsburg",
                   "short_name" : "Williamsburg",
                   "types" : [ "neighborhood", "political" ]
                },
                {
                   "long_name" : "Brooklyn",
                   "short_name" : "Brooklyn",
                   "types" : [ "sublocality", "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" ]
                }
             ],
             "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
             "geometry" : {
                "location" : {
                   "lat" : 40.714232,
                   "lng" : -73.9612889
                },
                "location_type" : "ROOFTOP",
                "viewport" : {
                   "northeast" : {
                      "lat" : 40.7155809802915,
                      "lng" : -73.9599399197085
                   },
                   "southwest" : {
                      "lat" : 40.7128830197085,
                      "lng" : -73.96263788029151
                   }
                }
             },
             "place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
             "types" : [ "street_address" ]
          },
    
      ... Additional results[] ...
    

    https://developers.google.com/maps/documentation/geocoding/intro#reverse-example

    【讨论】:

      【解决方案3】:

      TomTom Maps APIs 提供反向地理编码端点,该端点提供结构化 JSON。

      你可以试试API Explorer

      例如:

      curl -X GET "https://api.tomtom.com/search/2/reverseGeocode/37.8328,-122.27669.json?key=*****" -H "accept: */*"
      

      会得到你的

      {
        "summary": {
          "queryTime": 6,
          "numResults": 1
        },
        "addresses": [
          {
            "address": {
              "buildingNumber": "1001",
              "streetNumber": "1001",
              "routeNumbers": [],
              "street": "42nd Street",
              "streetName": "42nd Street",
              "streetNameAndNumber": "1001 42nd Street",
              "countryCode": "US",
              "countrySubdivision": "CA",
              "countrySecondarySubdivision": "Alameda",
              "countryTertiarySubdivision": "Oakland",
              "municipality": "Oakland, Emeryville",
              "postalCode": "94608",
              "municipalitySubdivision": "Oakland, Emeryville",
              "country": "United States",
              "countryCodeISO3": "USA",
              "freeformAddress": "1001 42nd Street, Emeryville, CA 94608",
              "boundingBox": {
                "northEast": "37.832893,-122.276230",
                "southWest": "37.832777,-122.277006",
                "entity": "position"
              },
              "countrySubdivisionName": "California",
              "localName": "Emeryville"
            },
            "position": "37.832844,-122.276688"
          }
        ]
      }
      

      您可以获得免费的 API KEY(无需信用卡)并尝试我们的tutorials

      披露:我受雇于 TomTom。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-01
        相关资源
        最近更新 更多