2015-05-29 9 views
11

Ho più di 700 indirizzi nel database. Voglio tracciarli nella regione. ho implementare questo codice:Come ottenere Latitude Longitude da più di 500 indirizzi?

public LatLng getSingleLocationFromAddress(String strAddress) 
{ 
    Geocoder coder = new Geocoder(this, Locale.getDefault()); 
    List<Address> address = null; 
    Address location = null; 
    GeoPoint p1 = null; 
    LatLng temp = null;//new LatLng(26.0000, 121.0000); 
    String strAddresNew = strAddress.replace(",", " "); 
    try 
    { 
     address = coder.getFromLocationName(strAddresNew, 1); 
     if (!address.isEmpty()) 
     { 
      location = address.get(0); 
      location.getLatitude(); 
      location.getLongitude(); 
      temp = new LatLng(location.getLatitude(), location.getLongitude()); 
      Log.d("Latlng : ", temp + ""); 
     } else 
     { 
      arrTemp.add(strAddress); 
      System.out.println(arrTemp); 
     } 
    } catch (IOException e) 
    { 
     Toast.makeText(mContext, e.toString(), Toast.LENGTH_LONG).show(); 
     e.printStackTrace(); 
    } catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return temp; 
} 

ma il problema è quando chiamo questo metodo in ciclo come questo:

Marker TP1 = googleMap.addMarker(new MarkerOptions().position(getSingleLocationFromAddress(fullAddress))); 

La linea coder.getFromLocationName(strAddresNew, 1); restituisce null per alcuni indirizzi, ad esempio se ho un ArrayList di 7 indirizzi quindi ottengo solo 4-5 valori LatLong.

+0

... Si prega di verificare la mia soluzione qui di seguito –

+0

Hmm, vedo il problema riscontrato ora. Non è possibile ottenere un lat/lon se non è possibile ottenere una posizione dall'indirizzo. –

+0

Non restituirà una posizione Nome che LatLng fornisce da te. Ogni LatLng non ha il nome di posizione. –

risposta

1

Usa sotto le righe di codice ... Può essere utile per voi

dichiarare tali variabili sopra la tua onCreate o OncreatView

List<Address> From_geocode = null; 
private double sLat, sLong; 
private Geocoder geocoder; 

che dentro la vostra OnCreate o oncreateVIew utilizzare queste righe di codice

geocoder = new Geocoder(getActivity()); 

    try { 
     From_geocode = geocoder.getFromLocationName("PUT THE ADDRESS HERE", 1); 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    if (From_geocode.size() > 0) { 
     System.out.println("2"); 
     From_geocode.get(0).getLatitude(); // getting 
     // latitude 
     From_geocode.get(0).getLongitude(); 

     sLat = From_geocode.get(0).getLatitude(); 
     sLong = From_geocode.get(0).getLongitude(); 

     System.out.println("LATITUTE====="+sLat+" LONGITUTE====="+sLong); 

    } 

E fornire l'ingresso all'interno del file manifest

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
+0

grazie a @Ravindra Kushwaha ma non funziona ancora. –

+0

Avete fornito ENTRY all'interno del file manifest ?? –

+0

sì. Se vuoi, posso condividere manifest anche –

0

Anche se il database di Google è molto estesa è possibile che alcuni degli indirizzi che avete fornito non poteva essere geocoding. Quindi non otterrai un lat/long per questi indirizzi. Probabilmente potresti controllare lo stato della risposta.

Come menzionato nel link qui sotto

https://developers.google.com/maps/documentation/geocoding/#StatusCodes

Il campo "status" all'interno dell'oggetto risposta Geocoding contiene lo stato della richiesta, e può contenere informazioni di debug per aiutare a rintracciare il motivo geocoding non funziona. Il campo "stato" può contenere i seguenti valori:

  1. "OK" indica che non si sono verificati errori; l'indirizzo è stato analizzato correttamente e è stato restituito almeno un geocode.

  2. "ZERO_RESULTS" indica che il geocode ha avuto esito positivo ma non ha restituito risultati. Questo può accadere se il geocoder ha passato un indirizzo inesistente.

+0

Grazie @joyson. Lo controllerò. –

Problemi correlati