Google maps google place自动完成国家/地区变更限制

Google maps google place自动完成国家/地区变更限制,google-maps,google-maps-api-3,google-places-api,Google Maps,Google Maps Api 3,Google Places Api,我使用的地方自动完成找到地图上的路线,是工作良好 我有一个包含两个国家(美国和非洲)的选择框。当选择框更改时 我清除自动完成输入并设置自动完成 componentRestrictions={country:iso_country}带有新的国家/地区值表单选择框 当我第一次加载脚本时,默认的国家是美国,并且自动完成并没有提示来自AU的任何地方。到目前为止还不错 当我第一次加载脚本并直接将国家更改为AU时,自动完成提示了我们的国家和地点。这不是我想要的 这是我的密码 /* * When initi

我使用的地方自动完成找到地图上的路线,是工作良好

我有一个包含两个国家(美国和非洲)的选择框。当选择框更改时 我清除自动完成输入并设置自动完成 componentRestrictions={country:iso_country}带有新的国家/地区值表单选择框

当我第一次加载脚本时,默认的国家是美国,并且自动完成并没有提示来自AU的任何地方。到目前为止还不错

当我第一次加载脚本并直接将国家更改为AU时,自动完成提示了我们的国家和地点。这不是我想要的

这是我的密码

/*
 * When initialize
 * i apply autocomplete to the inputs
 */

if($("#from_place").length)
{
        apply_autocomplete($("#from_place")[0],default_iso_code);
    }
    if($("#to_place").length)
{
        apply_autocomplete($("#to_place")[0],default_iso_code);
}


/*
 * When the Select Box change 
 * i apply autocomplete to the inputs again with new iso_country
 */

$(document).on('change','#map_country_id',function() 
{
    var iso_country = $(this).val();

    //clear from/to
    $("#from_place").val('');
    $("#to_place").val('');

    //autocomplete from/to with new country
    if($("#from_place").length)
    {
        apply_autocomplete($("#from_place")[0],iso_country);
    }
    if($("#to_place").length)
    {
            apply_autocomplete($("#to_place")[0],iso_country);
        }
});

/*
 * the function that applies the autocomplete 
 * 
 */

function apply_autocomplete(input,iso_country)
{   
    var options = {
        componentRestrictions: {country: iso_country}
    };
    var autocomplete = new google.maps.places.Autocomplete(input, options);     
    autocomplete.bindTo('bounds', map);
}

有人能帮我解决这个问题吗。

我相信您遇到的问题是因为您试图在选择框的每个更改事件上创建一个新的Autocomplete实例。我建议不要调用新操作符,而是使用autocomplete类的setOptions方法更新现有的autocomplete实例属性

请看下面的示例。我创建了两个函数:

加载后执行的initAutocomplete映射JavaScript API并设置autocomplete元素的初始状态

updateAutocompletecountryCode函数,该函数在选择框的每个更改事件上调用

var默认值_iso_代码='US'; var自动完成从,自动完成到; 函数初始化自动完成{ 变量选项={ 组件限制:{国家/地区:默认\u iso\u代码} }; 如果$from_place.length{ autocomplete\u from=new google.maps.places.autocomplete$from\u place[0],选项; } 如果$to_place.length{ autocomplete\u to=new google.maps.places.autocomplete$to\u place[0],选项; } $document.on'change','map\u country\u id',函数{ var iso_country=$this.val; //从/到 $from_place.val; $to_place.val; 更新完成ISO_国家/地区; }; } 函数UpdateAuthoCompleteCountryCode{ 变量选项={ 组件限制:{country:countryCode} }; 如果从中自动完成{ 从.setoptions选项自动完成; } 如果自动完成{ 自动完成_to.setoptions选项; } } 从_地方到_地方{ 位置:相对位置; 宽度:480px; } 自动完成{ 位置:绝对位置; 顶部:0px; 左:0px; 宽度:99%; } 美国 澳大利亚