Google Places api City或Zipcode

时间:2014-02-26 20:36:06

标签: google-maps-api-3 knockout.js google-places-api

我正在使用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);
    }
};

1 个答案:

答案 0 :(得分:0)

  1. 您不能使用多种类型(geocode& establishment除外)
  2. types - 选项会对结果应用过滤器,而不是输入。当您将类型设置为geocode,并且当用户输入Zip代码时您没有得到结果时,该特定输入没有结果(API无法识别输入是一个邮政编码,它接受输入并搜索匹配的任何内容,无论它是postal_code,street_number还是其他东西)
  3. 要应用自定义格式,您必须解析address_components,请参阅:Parsing city/state from Google Maps request