2015-05-29 7 views
11

Ich habe mehr als 700 Adressen in der Datenbank. Ich möchte sie regional klug darstellen. Ich habe diesen Code implementieren:Wie bekomme ich Breitengrad von mehr als 500 Adressen?

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; 
} 

Aber das Problem ist, wenn ich diese Methode in der Schleife wie folgt aufrufen:

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

Die Linie coder.getFromLocationName(strAddresNew, 1); für einige Adressen, zum Beispiel null zurück, wenn ich eine haben ArrayList von 7 Adressen dann bekomme ich nur 4-5 LatLong Werte.

+0

... Bitte überprüfen Sie meine unten Lösung –

+0

Hmm, ich sehe das Problem, das Sie jetzt konfrontiert sind. Du kannst kein lat/lon bekommen, wenn du keinen Ort von der Adresse bekommen kannst. –

+0

Es gibt keinen Standortnamen zurück, den LatLng Ihnen zur Verfügung stellt. Jeder LatLng hat keinen Standortnamen. –

Antwort

1

Verwenden Sie den folgenden Zeilen Code ... Es kann hilfreich sein für Sie

diese Variablen erklären über Ihr onCreate oder OncreatView

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

als innerhalb Ihr oncreate oder oncreateView verwenden Sie diese Codezeilen

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); 

    } 

und geben Sie den Eintrag in der manifest Datei

<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

danke @Ravindra Kushwaha, aber es funktioniert immer noch nicht. –

+0

Haben Sie ENTRY in der Manifestdatei bereitgestellt? –

+0

Ja. Wenn Sie wollen, kann ich Manifest auch teilen –

0

Obwohl die Google-Datenbank umfangreich ist es möglich, dass einige der Adressen, die Sie geliefert haben, konnte nicht geocodiert werden. Daher erhalten Sie für diese Adressen kein lat/lon. Sie könnten wahrscheinlich den Status der Antwort überprüfen.

Wie unten

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

Das Feld „Status“ warum Geocodierung im Geocoding Response-Objekt enthält den Status der Anfrage und kann enthalten Sie unten Debuggen in den Link genannten Informationen zu helfen verfolgen funktioniert nicht. Das Feld "Status" kann folgende Werte enthalten:

  1. "OK" zeigt an, dass keine Fehler aufgetreten sind; Die Adresse wurde erfolgreich analysiert und mindestens ein Geocode zurückgegeben.

  2. "ZERO_RESULTS" zeigt an, dass der Geocode erfolgreich war, aber keine Ergebnisse lieferte. Dies kann auftreten, wenn der Geocodierer eine nicht vorhandene Adresse übergeben wurde.

+0

Danke @joyson. Ich werde das überprüfen. –

Verwandte Themen