从邮政编码中获取LatLng - Google Maps API

时间:2011-04-07 18:43:42

标签: javascript google-maps-api-3

我只需要一些简单的示例代码,向我展示如何从输入的邮政编码或城市/州获取latlng元素。

7 个答案:

答案 0 :(得分:83)

你不能只用以下邮编或城市和州代替{zipcode} http://maps.googleapis.com/maps/api/geocode/json?address= {zipcode}

Google Geocoding

以下是使用JavaScript的如何使用地理编码的链接:Geocode walk-thru。如果需要特定的lat / lng数字,请调用geometry.location.lat()或geometry.location.lng()(API for google.maps.LatLng class

获取lat / lng的示例:

    var lat = '';
    var lng = '';
    var address = {zipcode} or {city and state};
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
         lat = results[0].geometry.location.lat();
         lng = results[0].geometry.location.lng();
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
    alert('Latitude: ' + lat + ' Logitude: ' + lng);

答案 1 :(得分:10)

只是提示:邮政编码并非全球唯一,因此在请求中提供国家/地区ISO代码是值得的(https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)。

例如寻找波兰的坐标(iso code PL)zipcode 01-210

https://maps.googleapis.com/maps/api/geocode/json?address=01210,PL

如何获取用户国家/地区代码?

如果您希望根据IP地址获取用户国家/地区信息,则可以为其提供服务,例如,您可以执行GET请求: http://ip-api.com/json

答案 2 :(得分:2)

这只是对先前答案的一种改进,因为即使在https://www.google.com/maps中它也不适用于某些邮政编码,我修复了在邮政编码之前添加“ zipcode”一词的问题,例如这个:

function getLatLngByZipcode(zipcode) 
{
    var geocoder = new google.maps.Geocoder();
    var address = zipcode;
    geocoder.geocode({ 'address': 'zipcode '+address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var latitude = results[0].geometry.location.lat();
            var longitude = results[0].geometry.location.lng();
            alert("Latitude: " + latitude + "\nLongitude: " + longitude);
        } else {
            alert("Request failed.")
        }
    });
    return [latitude, longitude];
}

答案 3 :(得分:1)

这是我用于工作的功能

function getLatLngByZipcode(zipcode) 
{
    var geocoder = new google.maps.Geocoder();
    var address = zipcode;
    geocoder.geocode({ 'address': address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var latitude = results[0].geometry.location.lat();
            var longitude = results[0].geometry.location.lng();
            alert("Latitude: " + latitude + "\nLongitude: " + longitude);
        } else {
            alert("Request failed.")
        }
    });
    return [latitude, longitude];
}

答案 4 :(得分:1)

这是从邮政编码(即邮政编码)中获取经/纬度的最可靠方法:

https://maps.googleapis.com/maps/api/geocode/json?key=YOUR_API_KEY&components=postal_code:97403

答案 5 :(得分:1)

在进行我的实习项目时,我找到了一个网站https://thezipcodes.com/ 创建一个免费帐户并从帐户部分获取 API 密钥。

https://thezipcodes.com/api/v1/search?zipCode={zipCode}&countryCode={2digitCountryCode}&apiKey={apiKey}

我在这里找到了大部分数据。

答案 6 :(得分:0)

<iframe #iframe width="100%" height="400px" sandbox="allow-forms allow-modals allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation"></iframe>

https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFiltering