2011-10-16 15 views
5

Ho usato il seguente codice, che funzionava bene per una settimana circa, sono tornato a lavorarci ulteriormente e sembra non funzionare più. Voglio mostrare solo le località. Guardare la documentazione di Google "località" è l'opzione giusta per farlo. Stavo pensando che forse Google ha cambiato l'API o qualcosa del genere. Non appena lo passo per il geocode funziona, ma mostra tutte le strade e i luoghi, che non è quello che voglio. Ho provato anche ["locality", "political"] e senza fortuna. Cosa sto facendo di sbagliato qui?Completamento automatico API Google Places v3: impossibile localizzare la località?

<script type="text/javascript"> 
    function initialize() { 

    var input = document.getElementById('searchTextField'); 

    var Newoptions = { 
     types: ["locality"] 
    }; 

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

    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
</script> 

<input id="searchTextField" name="member_location" value="" type="text" > 

risposta

1

località non è sempre fornito nei risultati, quindi bisogna fornire un ripiego se siete in una zona senza località, come administrative_area_level_3, anche se l'unico che otterrete sempre è il paese, in modo da Avrebbe fatto meglio a fallback fino a lì.

+0

ma perché è così? è perché l'API di Google Maps non conosce/definisce le località per quell'area geografica ancora, ad es. paese come Singapore? – ericn

0

Nel codice, si è utilizzato

var Newoptions = { 
     types: ["locality"] //This is not proper types. 
    }; 

Usa tipi: [ '(regioni)'] invece. Quindi recuperare la località Form che. Il codice di esempio è sotto e funziona correttamente.

autocomplete = new google.maps.places.Autocomplete(
    (document.getElementById('YOURsearchBOXID')), 
     { types: ['(regions)']}); 

     google.maps.event.addListener(autocomplete, 'place_changed', function() { 
     var place = autocomplete.getPlace(); 

     for (var i = 0; i < place.address_components.length; i++) { 
      if(place.address_components[i].types[0] == "locality") 
      { 
       console.log(place['address_components'][i]['long_name']); 
      break; 
      } 
     } 

    }); 
Problemi correlati