我正在使用google places api和knockout.js,但我遇到的问题是能够按城市,州或ZipCode进行过滤。
在此代码中:
var options = {
types: ['geocode'],
componentRestrictions: {
country: "us"
}
};
如何指定我想要'geocode'和'(cities)'?
所以用户可以输入城市名称或邮政编码吗?
当前代码不适用于Zipcode!
还需要格式化结果以显示City,State而不是City,State Country。
ko.bindingHandlers.addressAutocomplete = {
init: function (element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor(),
allBindings = allBindingsAccessor();
var options = {
types: ['geocode'],
componentRestrictions: {
country: "us"
}
};
ko.utils.extend(options, allBindings.autocompleteOptions)
var autocomplete = new google.maps.places.Autocomplete(element, options);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
result = autocomplete.getPlace();
value(result.formatted_address);
});
},
update: function (element, valueAccessor, allBindingsAccessor) {
ko.bindingHandlers.value.update(element, valueAccessor);
}
};
答案 0 :(得分:0)
geocode
& establishment
除外)types
- 选项会对结果应用过滤器,而不是输入。当您将类型设置为geocode
,并且当用户输入Zip代码时您没有得到结果时,该特定输入没有结果(API无法识别输入是一个邮政编码,它接受输入并搜索匹配的任何内容,无论它是postal_code,street_number还是其他东西)要应用自定义格式,您必须解析address_components,请参阅:Parsing city/state from Google Maps request