将 Google 地方信息接口限制为特定国家/地区

Restrict Google Places API to specific country

本文关键字:国家 地区 接口 方信息 Google 信息      更新时间:2023-09-26

我试图将自动完成限制在特定国家/地区,即美国。我该怎么做?我在下面尝试了以下方法,通过将变量选项作为参数传递到初始化函数中:

   <script>
    var autocomplete = {};
    var autocompletesWraps = ['test', 'test2'];
    var test_form = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' };
    var test2_form = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' };
    function initialize() {
        var options = {
            types: ['(cities)'],
            componentRestrictions: {country: "us"}
        };
        $.each(autocompletesWraps, function(index, name) {
            if($('#'+name).length == 0) {
                return;
            }
            autocomplete[name] = new google.maps.places.Autocomplete($('#'+name+' .autocomplete')[0], { types: ['geocode'] }, options);
            google.maps.event.addListener(autocomplete[name], 'place_changed', function() {
                var place = autocomplete[name].getPlace();
                var form = eval(name+'_form');
                for (var component in form) {
                    $('#'+name+' .'+component).val('');
                    $('#'+name+' .'+component).attr('disabled', false);
                }
                for (var i = 0; i < place.address_components.length; i++) {
                    var addressType = place.address_components[i].types[0];
                    if (typeof form[addressType] !== 'undefined') {
                        var val = place.address_components[i][form[addressType]];
                        $('#'+name+' .'+addressType).val(val);
                    }
                }
            });
        });
    }
</script>

您没有正确传递optionsAutocomplete需要两个参数,而你通过了三个参数。

具体来说,在这一行中:

autocomplete[name] = new google.maps.places.Autocomplete(
    $('#'+name+' .autocomplete')[0], { types: ['geocode'] }, options);

您的 options 参数未使用,因为您已将{ types: ['geocode'] }作为选项传递。

因此,删除多余的参数:

var options = {
    types: ['geocode'],  // or '(cities)' if that's what you want?
    componentRestrictions: {country: "us"}
};
autocomplete[name] = new google.maps.places.Autocomplete(
    $('#'+name+' .autocomplete')[0], options);

如果您想仅将 Google 地址 API 与英国地址集成。请找到以下地址:

<script  type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API_KEY&libraries=places" async defer></script>
<script type="text/javascript>
var autocomplete;
function initialize() {
  autocomplete = new google.maps.places.Autocomplete(
      (document.getElementById('txtpostcode')),
      { types: ['geocode'] });
  autocomplete.setComponentRestrictions(
            {'country': ['uk']});
  google.maps.event.addListener(autocomplete, 'place_changed', function() {
  });
}
</script>