2016-03-23 9 views
0

Hallo ich bin neu bei Android und ich wollte wissen, wie ich JSON-Daten von einer URL bekommen und dann diese Daten von der URL zu verwenden Setzen Sie Marker in einer Android-Kartenaktivität.Wie man JSON-Daten von einer URL verwendet, um Markierungen in einer Kartenaktivität zu setzen Android

Danke für die Hilfe

+2

Den JSON lesen?Googles [GSON] (https://github.com/google/gson) kann Ihnen helfen. –

+0

Und um GeoJSON zu lesen, können Sie [Google Maps Android API Utility Library] (https://developers.google.com/maps/documentation/android-api/utility/#introduction) verwenden – antonio

Antwort

0

Verwendung HttpUrlConnection die JSON-Daten zu erhalten, und dann ein neues JSONObject Objekt zu erstellen, müssen Sie jetzt nur noch die Informationen erhalten von den JSONObject durch respektieren die Schlüssel, die die URL zur Verfügung stellt. An dieser Stelle müssen Sie nur die Werte an GoogleMap Object übergeben. zum Beispiel:

Lassen Sie sich supppose, dass die URL mit diesen JSON-Daten reagieren:

{ 
    "long" : 25, 
    "lat" : 6 
} 

Sie den Code wiederherstellen, indem eine HttpURLConnection:

URL url = new URL("http://localhost_or_any_url/mypage.php"); 
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
String buff = "", data= ""; 
InputStream is = urlConnection.getInputStream(); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
while ((buff = br.readLine()) != null) data+= buff; 
JSONObject json= new JSONObject(data); 
int long= json.getInt("long"); 
int lat= json.getInt("lat"); 

jetzt haben Sie Ihre Position (x, y) (Länge, Breite) für die beiden Variablen (lang, lat), müssen Sie sie nur an Ihr GoogleMap Objekt übergeben, um eine Markierung wie diese zu erstellen:

LatLng myPosition= new LatLng(-34, 151); 
googleMap.addMarker(new MarkerOptions().position(myPosition).title("My position")); 
googleMap.moveCamera(CameraUpdateFactory.newLatLng(myPosition)); 
//the last line (the call to moveCamera method) is optional, it helps to move the camera to the marker in case the current map position is far from the marked position 

Dies ist ein einfaches Beispiel, Sie müssen wissen, wo Sie die Daten von der URL erhalten (Netzwerkoperationen können nicht innerhalb des Haupt Thread durchgeführt werden, müssen Sie eine AsyncTask oder eine Thread erstellen) und wie Sie die übergeben Daten zu der Klasse, die das Objekt GoogleMap enthält.

viel Glück.

0

Um Daten aus einer URL erhalten Sie es im Hintergrund tun sollten. Es gibt verschiedene Möglichkeiten, dies zu tun. Der einfachste Weg besteht darin, eine Klasse zu erstellen, die AsyncTask erweitert und deren doInBackground-Methode verwendet. Hier ist eine Dokumentation darüber.

https://developer.android.com/reference/android/os/AsyncTask.html

Hier haben Sie eine Erklärung, wie Daten AsyncTask mit holen.

http://developer.android.com/training/basics/network-ops/connecting.html

JSON-Daten zu analysieren, um die JSONObject und JSONArray Klassen verwenden können. Sie müssen grundsätzlich eine JSONObject mit der JSON-Zeichenfolge als Argument des Konstruktors instanziieren und dann verwenden Sie die Methoden getJSONObject und getJSONArray mit dem Namen des Datenelements, das Sie erhalten möchten. Hier sind die Dokumentation über sie und ein Tutorial. http://developer.android.com/reference/org/json/JSONObject.html http://developer.android.com/reference/org/json/JSONArray.html http://www.tutorialspoint.com/android/android_json_parser.htm

Im Fall der JSON-String zusammengedrückt wird, die JSON-String zu visualisieren richtig schlage ich Sie es in https://jsonformatter.curiousconcept.com eingeben und dann können Sie es schön formatiert, um zu sehen wie sich die JSON zusammengesetzt ist.

Um Google Maps aufzurufen, verwenden Sie implizite Absichten, hier ist ein Android-Tutorial, wie Sie sie verwenden, um die wichtigsten Apps einschließlich Google Maps zu verwenden. mit dem JSON data Sie vom Server (url) bekamen

http://developer.android.com/guide/components/intents-common.html

Verwandte Themen