Umgekehrte Geocodierung (Adresssuche)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Umgekehrte Geocodierung (Adresssuche)

    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-Quellcode

    1. 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

    Quellcode

    1. import org.apache.http.HttpEntity;
    2. import org.apache.http.HttpResponse;
    3. import org.apache.http.client.HttpClient;
    4. import org.apache.http.client.methods.HttpPost;
    5. import org.apache.http.impl.client.DefaultHttpClient;
    6. import org.apache.http.util.EntityUtils;
    7. import org.json.JSONArray;
    8. import org.json.JSONObject;
    9. import android.location.Location;
    10. public class ReverseGeocorder
    11. {
    12. public static String reverseGeocode(Location loc)
    13. {
    14. String strAddress = "NoAdress";
    15. String url = null;
    16. try
    17. {
    18. url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + Double.toString(loc.getLatitude()) + "," + Double.toString(loc.getLongitude()) + "&sensor=true";
    19. HttpPost httppost = new HttpPost(url);
    20. HttpClient httpclient = new DefaultHttpClient();
    21. String result = "";
    22. try
    23. {
    24. HttpResponse response = httpclient.execute(httppost);
    25. HttpEntity resEntityGet = response.getEntity();
    26. if (resEntityGet != null)
    27. {
    28. result = EntityUtils.toString(resEntityGet);
    29. }
    30. }
    31. catch (Exception e)
    32. {
    33. System.out.println("Exception:" + e);
    34. return strAddress;
    35. }
    36. try
    37. {
    38. if (result != null)
    39. {
    40. JSONObject json = new JSONObject(result);
    41. JSONArray ja = json.getJSONArray("results");
    42. for (int i = 0; i < 1; i++)
    43. {
    44. JSONObject jo = ja.getJSONObject(i);
    45. strAddress = jo.getString("formatted_address");
    46. }
    47. }
    48. }
    49. catch (Exception e)
    50. {
    51. e.printStackTrace();
    52. }
    53. return strAddress;
    54. }
    55. catch (Exception ex)
    56. {
    57. ex.printStackTrace();
    58. }
    59. return strAddress;
    60. }
    Alles anzeigen
  • Es gibt einen Parameter für die Ausgabesprache in der JavaScript API.

    Quellcode

    1. http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false&language=de


    Vergleiche
    developers.google.com/maps/doc…cript/basics#Localization
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.

    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«
  • Hallo Marco,
    vielen Dank! Den Parameter language hat man auf der HTTP-Seite wohl übersehen. Er funktioniert. Ich kann die englische Schreibweise jetzt auch auf dem Browser nachvollziehen. Das hätte ich nicht gedacht. Da Du Dich ja gut auskennst, noch eine zusätzliche Frage zum Parameter sensor. Die Beschreibung lautet:

    "sensor: gibt an, ob die Geocodierungsanfrage von einem Gerät mit einem Standortsensor kommt. Dieser Wert muss entweder true oder false lauten."

    Egal ob ich true oder false setze, ich merke keinen Unterschied im Verhalten. Was bewirkt der Parameter?
    mfg klaus
  • In der englischen Übersetzung der Dokumentation steht wörtlich:
    Note: The sensor parameter is no longer required.
    https://developers.google.com/maps/documentation/javascript/tutorial?hl=en


    Insofern würde ich mal annehmen, der Parameter hat keine Funktion (mehr).
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.

    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«