Hallo,
ich hole mir per Geokoordinaten über die maps-api per HTTP die Adresse. Hier ein Beispiel von "http://android-developers.de/index.php?form=ThreadAdd&boardID=64":
HTML
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false
Das funktioniert zuverlässig. Jedoch kommen die Adressen zum Teil in englischer Schreibweise wieder. Dann wird aus "Agathaweg" -> "Agatha Path" oder aus "Strasse" wird "Street". Merkwürdiger Weise erhalte ich über meinen Browser korrekte Antworten. Anbei habe ich die Klasse beigefügt.
Sendet mein Browser zusätzliche Informationen, so dass der Google-Server erkennt das ich eine deutschsprachige Antwort haben möchte?
Wenn ja, wie lässt sich das einrichten?
mfg klaus
Code
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import android.location.Location;
public class ReverseGeocorder
{
public static String reverseGeocode(Location loc)
{
String strAddress = "NoAdress";
String url = null;
try
{
url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + Double.toString(loc.getLatitude()) + "," + Double.toString(loc.getLongitude()) + "&sensor=true";
HttpPost httppost = new HttpPost(url);
HttpClient httpclient = new DefaultHttpClient();
String result = "";
try
{
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntityGet = response.getEntity();
if (resEntityGet != null)
{
result = EntityUtils.toString(resEntityGet);
}
}
catch (Exception e)
{
System.out.println("Exception:" + e);
return strAddress;
}
try
{
if (result != null)
{
JSONObject json = new JSONObject(result);
JSONArray ja = json.getJSONArray("results");
for (int i = 0; i < 1; i++)
{
JSONObject jo = ja.getJSONObject(i);
strAddress = jo.getString("formatted_address");
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
return strAddress;
}
catch (Exception ex)
{
ex.printStackTrace();
}
return strAddress;
}
Alles anzeigen