2012-12-05 46 views
2

Hye。 我使用google maps api V3中的autocompleteservice進行自定義自動完成輸入。 我基本上稱這個函數來檢索城市的建議。從谷歌地圖API獲取自動完成服務的郵政編碼v3

function getPlaces(st){ 
    gService.getQueryPredictions({input:st,types:['geocode']},function(predictions,status)  { 
     if(status != google.maps.places.PlacesServiceStatus.OK) return false; 
     for(var i = 0, prediction; prediction = predictions[i]; i++){ 
      console.log(prediction); 
     } 
     return predictions; 
    }); 
} 

這工作很好,但我想獲得與城市相關的郵政編碼。 與V2 api一樣,see this example 我試圖將類型選項更改爲城市,但結果相同。 任何想法做到這一點?

+0

看看這個答案,這是非常有幫助:http://stackoverflow.com/questions/14414445/ google-maps-api-v3-cant-gecode-autocompleteservice-predicts – zanona

回答

1

在新API中,AutocompleteService僅搜索與您迄今鍵入的文本相匹配的猜測字符串。要訪問包含地址和其他數據的實際Place對象,您需要使用在將autocomplete()函數附加到文本框時創建的自動完成對象。見文檔瀏覽:https://developers.google.com/maps/documentation/javascript/places#getting_place_information

+0

但在這種情況下,如何以編程方式使用具有定義的輸入字符串的'Autocomplete'類?如果我不想有文本字段並且已經知道我想用作輸入的字符串? – zanona

+1

@zanona您不能使用Autocomplete類,因爲這是一個UI類(它將自己附加到文本框中)。出於您的目的,您需要使用AutocompleteService類:https://developers.google.com/maps/documentation/javascript/reference#AutocompleteService – Alexandra

0

檢查這個代碼片段:

var geocoder; 
 
var map; 
 
function initialize() { 
 
    var input = document.getElementById('id_address'); 
 
    var options = { 
 
    types: ['address'], 
 
    componentRestrictions: { 
 
     country: 'in' 
 
    } 
 
    }; 
 

 
    autocomplete = new google.maps.places.Autocomplete(input, options); 
 

 
    google.maps.event.addListener(autocomplete, 'place_changed', function() { 
 
    var place = autocomplete.getPlace(); 
 
    
 
    for (var i = 0; i < place.address_components.length; i++) { 
 
     for (var j = 0; j < place.address_components[i].types.length; j++) { 
 
     if (place.address_components[i].types[j] == "postal_code") { 
 
      document.getElementById('postal_code').innerHTML = place.address_components[i].long_name; 
 

 
     } 
 
     } 
 
    } 
 
    }) 
 
} 
 
google.maps.event.addDomListener(window, "load", initialize)
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDxcRPSsACIjdvMWRcfJBMzp4pKQXPJjj0&libraries=places"></script> 
 
<input id="id_address" type="text" value="" /> 
 
<div id="postal_code"></div>

相關問題