javascript - 将 Google Places API 限制在特定国家/地区

标签 javascript jquery autocomplete google-places-api

我试图将自动完成限制在特定国家/地区,即美国。我怎样才能做到这一点?通过将变量选项作为参数传递给初始化函数,我在下面尝试了以下操作:

   <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>

最佳答案

您没有正确传递选项Autocomplete 接受两个参数,而您传递了三个。

具体来说,在这一行中:

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);

关于javascript - 将 Google Places API 限制在特定国家/地区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35877545/

相关文章:

javascript - 一段时间后,我的绘图工具在绘图中留下了空白

javascript - 跨域调用 WCF 服务

javascript - 我想从数据库加载事件日历,返回值失效并且日期不显示

javascript - 使用 jQuery 遍历 DOM

jquery-ui - 限制 jQuery UI 自动完成中的结果

javascript - 自动完成在我的 asp.net mvc 中不显示任何 CSS

javascript - 防止 Firefox 自动完成任何带有密码字段的表单

javascript - 我必须使用 session 存储还是本地存储 : javascript AWS

javascript - Tailwindcss 不适用于 NextJS 12。实验性功能

php - 无法发送应用程序请求,显然已发送但未出现通知用户