2016-07-22 4 views
1

Ich bin neu in Android Entwicklung, nach meinem Code ist über die Verwendung Geocoder Stadt Name der aktuellen Lage zu bekommen, es gibt null zurück:Android Geocoder null zurück Stadtname

private void updateCurrentLocation (Lage, Lage) { double lat = 0,0, lng = 0,0;

if (location != null) { 
     lat = location.getLatitude(); 
     lng = location.getLongitude(); 
     Log.i("tag", "Latitute is" + lat + ", Longtitute is" + lng); 
    } else { 
     City_Name = "Unavailable"; 
    } 
    List<Address> list = null; 
    Geocoder geocoder = new Geocoder(this.getActivity()); 
    try { 
     list = geocoder.getFromLocation(lat, lng, 1); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    //may provide multiple locations. 

    if (list != null && list.size() > 0) { 

      Address address = list.get(0); 
      City_Name = address.getLocality(); 

    } 
    Log.i("Try", "CityName:" + City_Name); 
    //send empty message 
    handler.sendEmptyMessage(1); 
} 

Ich öffnete GPS-Dienste, ACCESS_FINE_LOCATION und INTERNET-Berechtigung in Manifest bereits hinzufügen. Außerdem habe ich in Stackoverflow ähnliche Fragen zu Geocoder gestellt, die null zurückgeben, aber keine brauchbaren Lösungen gefunden haben. Einer von ihnen ist JSON von Geocoder Website zu analysieren, aber es funktioniert auch nicht.

Kann mir jemand dabei helfen? Vielen Dank! BTW, gibt es eine bessere Lösung, um einen Stadtnamen zu erhalten? Vielen Dank!

+0

Hat Ihr Code eine IOException ausgelöst? – josemgu91

+0

Wenn Sie auf einer Geräte-API 23 oder höher testen, müssen Sie die Berechtigung anfordern, andernfalls wird sie standardmäßig deaktiviert. Eine schnelle Lösung besteht darin, die Berechtigung über Einstellungen> Apps> "App-Name"> Berechtigungen zu genehmigen. – MoGa

+0

@ josemgu91 Nein, es funktioniert gut, aber es gibt keinen Rückgabewert. – LunarS

Antwort

0

Wenn die "getFromLocation" -Methode Ihnen einen leeren Satz gibt, dann deshalb, weil der Server, der nachgeschlagen wird, nicht die Adressinformationen für die Koordinaten hat, die Sie übergeben. Dies wird auch notiert in the docs. Also denke ich, dass du es loslassen solltest und einen anderen Dienst wie den Google Maps Geokodierungsdienst oder einen anderen wie Nominatatim aus dem OpenStreetMap-Projekt verwenden solltest.

Verwandte Themen