Google maps API搜索特定国家/地区的邮政编码

时间:2017-03-25 20:32:16

标签: javascript google-maps google-maps-api-3 google-maps-markers google-geocoder

我试图设置一个邮政编码,以获得Lat和Long Coordinates并在其上放置一个标记。到现在为止,一切都很好。

当我提供邮政编码输入并且最终在世界的另一个地方制作标记时,问题就出现了。

Ex:我输入2975-435然后我得到: https://maps.googleapis.com/maps/api/geocode/json?address=2975-435&key=YOURKEY

"formatted_address" : "Balbey Mahallesi, 435. Sk., 07040 Muratpaşa/Antalya, Turquia",

我想让这个邮政编码只在葡萄牙进行搜索。

https://maps.googleapis.com/maps/api/geocode/json?address=2975-435+PT 这样我得到了:

"formatted_address" : "2975 Q.ta do Conde, Portugal",

正是我想要的。

问题是,如何在JS代码中创建它? 这是我到现在为止的代码

function codeAddress () {
    var lat = '';
    var lng = '';
    var address = document.getElementById("cp").value;
    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();
            //Just to keep it stored
            positionArray.push(new google.maps.LatLng(lat,lng));
            //Make the marker
            new google.maps.Marker({
                position:new google.maps.LatLng(lat,lng),
                map:map
            });

        }else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}

谢谢

1 个答案:

答案 0 :(得分:3)

要将结果限制在某个国家/地区,您可以应用组件过滤:

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

因此,您的JavaScript代码将是

function codeAddress () {
    var lat = '';
    var lng = '';
    var address = document.getElementById("cp").value;
    geocoder.geocode( { 
        'address': address,
        componentRestrictions: {
            country: 'PT'
        }
    },

    function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            lat = results[0].geometry.location.lat();
            lng = results[0].geometry.location.lng();
            //Just to keep it stored
            positionArray.push(new google.maps.LatLng(lat,lng));
            //Make the marker
            new google.maps.Marker({
                position:new google.maps.LatLng(lat,lng),
                map:map
            });

        }else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}

您可以使用Geocoder工具查看正在进行的组件过滤:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D2975-435%26options%3Dtrue%26in_country%3DPT%26nfw%3D1

希望它有所帮助!