jquery-addresspicker - 将自动完成提示限制为一个国家/地区


jquery-addresspicker - limiting autocomplete hints to one country

我在使用jQuery UI小部件自动完成地址时遇到问题:

https://github.com/sgruhier/jquery-addresspicker

我试图将自动完成提示限制为仅针对一个国家/地区(或者至少更喜欢一个国家/地区)-波兰。

在示例中 - 我正在搜索"克拉科夫"。[克拉科夫, 波兰]

我正在输入:"克拉"并且有这样的提示:

  • 克雷,塔伊兰迪亚(泰国)

  • 吉朗机场 (KRA), 吉朗 3579, 澳大利亚

我必须输入"克拉科"才能获得适当的提示:

  • 克拉科夫,波兰(波兰)

我只是不需要自动完成来自泰国、美国、法国等的城市 - 我需要来自波兰的城市。

设置区域 (http://maps.google.com/maps/api/js?sensor=false&region=pl) 或地址/边界仅影响查询结果,而不影响自动完成提示。

你能给我任何建议吗?

如果有人有类似的问题 - 我通过使用谷歌地方自动完成解决了我的问题:

https://developers.google.com/maps/documentation/javascript/places?hl=pl#places_autocomplete

var input = document.getElementById('searchTextField');
var options = {
  types: ['(cities)'],
  componentRestrictions: {country: 'pl'}
};
autocomplete = new google.maps.places.Autocomplete(input, options);

这不是一个好的解决方案,但总比没有好。

你必须在_geocode函数中过滤结果你在结果对象中迭代以找到类型=="国家"和短名称==你的国家代码,你只采用满足这个条件的那个

这是我为法国地址修改的功能,它有点脏,但它可以工作

// Autocomplete source method: fill its suggests with google geocoder results
_geocode: function(request, response) {
var address = request.term, self = this;
this.geocoder.geocode({
'address': address + this.options.appendAddressString,
'region': this.options.regionBias
}, function(results, status) {
var fr_results= [];
if (status == google.maps.GeocoderStatus.OK) {
for (var i = 0; i < results.length; i++) {
results[i].label = results[i].formatted_address;
for (var j = 0; j<results[i].address_components.length; j++)
{
//console.log(results[i]);
if ((results[i].address_components[j].types[0] =="country") && (results[i].address_components[j].short_name =="FR"))
{
//console.log(results[i].address_components[j].short_name);
results[i].label = results[i].formatted_address;
//fr_results[i] = results[i];
fr_results.push(results[i]);
}
}
};
} 
//console.log(results);
//console.log(fr_results);
response(fr_results);
})
},

如果有人有最好的方法,我会把它:)

高频总干事