0

我对自动完成地址的 jQuery UI 小部件有疑问:

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

我试图仅限制一个国家的自动完成提示(或者至少更喜欢一个国家) - 波兰。

例如 - 我正在搜索“克拉科夫”。[波兰克拉科夫]

我正在输入:'Kra',并且有如下提示:

  • Krae, Tajlandia(泰国)

  • Kerang 机场 (KRA), Kerang Wiktoria 3579, 澳大利亚

我必须输入“Krakó”才能得到正确的提示:

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

我只是不需要来自泰国、美国、法国等城市的自动补全——我需要来自波兰的城市。

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

你能给我一些建议吗?

4

2 回答 2

0

您必须在 _geocode 函数中过滤结果,您在结果对象中迭代才能找到 type=="country" & shortname==your country code,并且您只选择满足此条件的那个

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

// 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);
})
},

如果有人有最好的方法,我会接受:)

高频dg

于 2012-07-22T14:20:41.887 回答
0

如果有人有类似的问题 - 我使用 Google Places Autocomplete 解决了我的问题:

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

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

于 2012-07-05T14:44:30.583 回答