2014-02-26 144 views
0

我正在使用谷歌API与knockout.js,但我遇到的问题是能够按城市,州或ZipCode过滤。谷歌地图api城市或邮编

在此代码:

var options = { 
    types: ['geocode'], 
    componentRestrictions: { 
     country: "us" 
    } 
}; 

如何指定,我想, '地址解析' 与 '(城市)'?

那么用户可以输入城市名称或邮编?

当前的代码不适用于Zipcode!

还需要格式化结果以显示城市,州而不是城市,州/省。

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
  1. 你不能使用多种类型的(除了geocode & establishment
  2. types -option应用过滤器的结果,而不是输入。如果将类型设置为geocode,并且在用户输入Zip代码时没有得到结果,则没有针对该特定输入的结果(API无法识别输入是ZIP代码,它需要输入和搜索任何比赛,不管它是一个POSTAL_CODE,一个street_number或别的东西)

要应用自定义格式,你必须分析address_components,请参阅:Parsing city/state from Google Maps request

相关问题