2013-06-19 11 views
5

Sto lavorando con un'app Android che interagisce con un servizio web REST. Abbiamo una funzione nel telefono per scegliere una posizione nella mappa nativa di Google e inviarla al server.Genera indirizzo da Lat/Long in Android o REST

Per qualche motivo è necessario ottenere l'indirizzo per quel punto nel sito Web da stampare.

Se riceviamo l'indirizzo da Latitude e Longtitude nel telefono utilizzando Geocoder e lo inviamo al REST, abbiamo bisogno di consumare memoria, dati e larghezza di banda nel telefono.

Se lo facciamo nel REST, poiché dovrebbe essere fatto per molti utenti che utilizzano l'applicazione, il processo potrebbe richiedere molto tempo. (questo è ciò che crede il nostro sviluppatore REST) ​​

Potete aiutarmi con le vostre opinioni? quale idea è migliore e perché?

+0

Avevo requisiti simili, ma leggevo il valore lat/lon dai servizi Rest e visualizzavo l'indirizzo nel telefono. Stai provando a leggere molti valori ??? –

+0

Il valore dovrebbe essere mostrato nel sito web. Lat/long stanno generando nel telefono. Mi chiedo che sia meglio generare l'indirizzo nel telefono o farlo nel REST. – Ali

+0

Meglio generare in Phone piuttosto che elaborare in Service, suppongo che non consumi molta banda. –

risposta

1

si prega di utilizzare questa funzione

String getAddress (doppio lat, doppio lon) { indirizzo String = "";

GeoPoint point = new GeoPoint((int) (lat * 1E6), 
      (int) (lon * 1E6)); 

    Geocoder geoCoder = new Geocoder(mContext, Locale.getDefault()); 
    try { 
     List<Address> addresses = geoCoder.getFromLocation(
       point.getLatitudeE6()/1E6, point.getLongitudeE6()/1E6, 
       1); 

     if (addresses.size() > 0) { 
      for (int index = 0; index < addresses.get(0) 
        .getMaxAddressLineIndex(); index++) 
       address += addresses.get(0).getAddressLine(index) + " "; 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return address; 
} 
+0

Non è quello che sto chiedendo nella domanda! – Ali

2

Quello che state facendo è chiamato "geocodifica inversa" (https://developers.google.com/maps/documentation/geocoding/?hl=fr#ReverseGeocoding)

Chi si domanda: ho capito che si inverte geocode posizioni di alcuni utenti e che gli indirizzi genrated verrà utilizzato da molti altri utenti .

Sapendo che: 1. geoding inverso è costosa 2. l'indirizzo ottenuto sarà utilizzato da molti utenti 3. ogni utente utilizzerà molti di questi indirizzi allora si dovrebbe farlo lato server e mettere tutto il indirizzi in un messaggio. Se è possibile limitare il numero di indirizzi agli unici utili, sarà migliore (probabilmente quelli vicini a te, ma dipende dalle funzionalità dell'app)

Importante: quando si utilizza il cellulare, ciò che è fondamentale per le prestazioni non è quello la quantità di dati trasferiti piuttosto che il numero di messaggi: la larghezza di banda è buona, ma il ritardo è terribile. Quindi, nella tua API del server, evita le operazioni atomiche e aggrega tutto quanto ha senso!

0

È possibile utilizzare tramite telefono. Secondo me, usare il servizio richiederà molta larghezza di banda.

Ti suggerisco di utilizzare direttamente nel telefono piuttosto che utilizzarlo tramite il servizio.