我在使用jQuery UI小部件自动完成地址时遇到问题:
https://github.com/sgruhier/jquery-addresspicker
我试图将自动完成提示限制为仅针对一个国家/地区(或者至少更喜欢一个国家/地区)-波兰。
在示例中 - 我正在搜索"克拉科夫"。[克拉科夫, 波兰]
我正在输入:"克拉"并且有这样的提示:
-
克雷,塔伊兰迪亚(泰国)
-
吉朗机场 (KRA), 吉朗 3579, 澳大利亚
我必须输入"克拉科"才能获得适当的提示:
- 克拉科夫,波兰(波兰)
我只是不需要自动完成来自泰国、美国、法国等的城市 - 我需要来自波兰的城市。
设置区域 (http://maps.google.com/maps/api/js?sensor=false®ion=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);
})
},
如果有人有最好的方法,我会把它:)
高频总干事