我使用谷歌地图APIv3 AutocompleteService将数据提取到bootstrap的预先输入。但是,使用谷歌的内置自动完成功能,与结果返回相比,结果有点不准确。
我的HTML代码:
<label>Built-in</label><input type="text" id="address1" />
<label>Customize</label><input type="text" id="address2" />
我的剧本:
<script>
//this input use google built-in autocomplete
var input1 = document.getElementById('address1');
autocomplete = new google.maps.places.Autocomplete(input1);
//this input use google AutocompleteService
$('#address2').typeahead({
source: process_keyword
});
var service = new google.maps.places.AutocompleteService();
function process_keyword(query, process) {
var place_results = [];
var request = {
input: query,
types: ['geocode']
};
service.getPlacePredictions(request, function (predictions, status) {
process($.map(predictions, function (prediction) {
return prediction.description;
}));
});
}
</script>
我已在此处发布完整代码:http://jsbin.com/ididas/1/edit
例如我输入
时9 dinh tien hoang
到第一个框,它将显示5个结果。但是当我向第二个框输入相同的查询时,它只会显示2个结果。
我的问题是为什么他们有这个不同,我如何修复,以便我的自定义预先完成作为内置自动完成工作
答案 0 :(得分:3)
对我而言,service.getPlacePredictions()
也会返回5个结果。问题出现在$.typeahead
中,因为当您搜索9 dinh tien hoang
并且服务返回9 Đinh Tiên Hoàng
时,查询字符串与结果不匹配(例如,搜索d
将与Đ
不匹配,这是一个完全不同的角色。)
由于您根本不需要对$.typeahead()
进行任何过滤(因为autocompleteService已经返回过滤结果),您可以将其添加到$ .typeahead-options:
matcher:function(){return true;}