2013-07-30 16 views
16

Sto usando Google pone API per gli indirizzi completamento automatico utilizzando JavaScriptsuggerimenti Google Places di completamento automatico con l'unità No/Subpremise non è venuta nella matrice risposta

Quando digito il numero di unità e numero civico dell'indirizzo nell'input box mostra i risultati nel menu a discesa dei suggerimenti ma quando seleziono l'indirizzo listener per l'evento 'place_changed' non ha alcun indirizzo con address_component con tipo 'subpremise' anche la proprietà formatted_address non ha il numero di unità in esso .Anche se contiene altri dettagli da "numero civico", "città", "paese" ecc.

Ad esempio: Se digito "1403/648 Bourke Street" con una restrizione di paese ad Australi un. Mi mostra 5 risultati nel menu a discesa con il primo come "Bourke street 1403/648, Melbourne, Australia" ma quando seleziono questa opzione tutto ciò che ottengo nel list_change listener di eventi è "648 Bourke street, Melbourne, Australia"

Tuttavia, questo problema è intermittente, funziona per alcuni indirizzi di unità ma fallisce per gli altri. Qualsiasi suggerimento sarà molto apprezzato !!

+0

Non conosco il motivo di questo comportamento, puoi utilizzare Google Places passando lat lon che hai ricevuto, forse l'oggetto che otterrai da lì conterrà più dati. –

+2

Hai mai trovato una risposta per questo? Sto avendo lo stesso problema. Anche le unità in Australia, non sono sicuro se questo è qualcosa di specifico per il paese. Grazie – sluggerdog

risposta

2

Mi sembra che Google stia convalidando che l'indirizzo è reale (ben realistico quando hanno aggiornato il loro database dei luoghi, credo con le registrazioni governative). Il problema è che le suddivisioni stanno accadendo in ogni momento dove vengono creati nuovi indirizzi "subpremise" e una ricerca su questi sembra essere più frequente. È strano che consentano un indirizzo "non valido" come suggerimento di completamento automatico, ma limitano il risultato.

Uno sguardo su sull'indirizzo Sydney sotto tornerà "subpremise" e "street_number"

"9/321 Pitt Street, Sydney, New South Wales, Australia"

in cui l'indirizzo di Melbourne di seguito solo ottiene così preciso come "route"

"2/321 Pitt Street, Brunswick, Victoria, Australia"

il problema più grande è che il risultato non restituisce il numero di unità o sulla strada in qualsiasi punto della risposta.

Ho hackerato insieme il seguente JS per confrontare l'indirizzo inserito dall'utente con il risultato restituito. Se mancano i "numeri", vengono aggiunti. È possibile personalizzare in base alle proprie esigenze con il codice.

if (addressType == 'route') { 
    var regex = RegExp('^(.*)'+GPLACESSTREET.split(' ',1)[0]), // get all the user entered values before a match with the first word from the Google result 
     result = regex.exec(INPUTFEILD.value); 

    if (Array.isArray(result)) { 
     FULLSTREETADDRESS = result[1]+''+GPLACESSTREET; // add the street name to the user-entered unit & street number 
    } 
} 
+0

L'API di completamento automatico dei luoghi è progettata per consentire agli utenti di digitare ciò che desiderano e restituire un indirizzo che lo soddisfa meglio, in base ai dati della mappa di base. Per una vasta gamma di motivi, i dettagli a livello di subpremise non sono sempre disponibili e quindi vengono raramente restituiti. La soluzione alternativa per recuperare "numeri" dall'input dell'utente è probabilmente la migliore opzione pratica. – miguev

0

Una leggera modifica da @ codice di MountainAsh:

if (addressType == 'route') { 
    var regex = RegExp('^(.*?)'+GPLACESSTREET.split(' ',1)[0]), // get all the user entered values before a match with the first word from the Google result 
    result = regex.exec(INPUTFEILD.value); 

    if (Array.isArray(result)) { 
    FULLSTREETADDRESS = result[1]+''+GPLACESSTREET; // add the street name to the user-entered unit & street number 
    } 
} 

Avviso l'ulteriore ? in RegExp, che rende la ricerca non-golosa per i casi in cui il nome della via inizia con lo stesso nome del sobborgo (ad esempio 123 Clayton Rd, Clayton).

Problemi correlati