2016-03-31 8 views
-2

Am arbeiten mit Karte hier bin Breite, Länge und andere Details von JSON Web-Service erfolgreich, aber während der Anzeige in der Karte nur eine Markierung zeigt andere Breite, Länge und Marker werden nicht in der Karte angezeigtJSON Breiten- und Längengrad in Android-Karte

class DownloadJSON extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     mProgressDialog = new ProgressDialog(getActivity()); 
     mProgressDialog.setTitle("Loading locations..."); 
     mProgressDialog.setIndeterminate(false); 
     mProgressDialog.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 

     e = JSONfunctions 
      .getJSONfromURL("http://beauty.ls.com/webservices/MapStores.php?client_id=1"); 
     Log.d("jsonobject", String.valueOf(e)); 


     try { 
      // Locate the array name in JSON 
      Log.d("second", ""); 
      jsonarray = e.getJSONArray("mapstores"); 
      Log.d("three",""); 
      for (int i = 0; i < jsonarray.length(); i++) { 
       e = jsonarray.getJSONObject(i); 

       store_lat = e.getString("store_latitude"); 
       store_long = e.getString("store_longitude"); 
       store_id = e.getString("store_id"); 
       store_name = e.getString("store_name"); 
       store_address = e.getString("store_address"); 
       store_city = e.getString("store_city"); 
       store_phone = e.getString("store_phone"); 
       store_email = e.getString("store_email"); 
       Log.d("latitude",store_lat); 
       Log.d("longitude",store_long); 

       lat1 = Double.parseDouble(store_lat); 
       lng1 = Double.parseDouble(store_long); 
      } 
     } catch (JSONException e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void args) { 

     mProgressDialog.dismiss(); 

      googleMap.addMarker(new MarkerOptions().position(new LatLng(lat1, lng1)) 
        .title(e.getString("store_id"))); 

    } 
} 

ich weiß nicht, wo soll ich ändern machen mir bitte helfen

+0

hast du meine lösung ausprobiert? –

Antwort

1

Sie benötigen diese Art und Weise zu tun:

Was mit Ihrem Code falsch ist: Sie fügen einzelne lat lang auf PostExecute() statt Hinzufügen von Code für alle LatLng in for-Schleife.

class DownloadJSON extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     mProgressDialog = new ProgressDialog(getActivity()); 
     mProgressDialog.setTitle("Loading locations..."); 
     mProgressDialog.setIndeterminate(false); 
     mProgressDialog.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 

     e = JSONfunctions 
      .getJSONfromURL("http://beauty.ls.com/webservices/MapStores.php?client_id=1"); 
     Log.d("jsonobject", String.valueOf(e)); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void args) { 

     mProgressDialog.dismiss(); 

     try { 
      // Locate the array name in JSON 
      Log.d("second", ""); 
      jsonarray = e.getJSONArray("mapstores"); 
      Log.d("three",""); 
      for (int i = 0; i < jsonarray.length(); i++) { 
       e = jsonarray.getJSONObject(i); 

       store_lat = e.getString("store_latitude"); 
       store_long = e.getString("store_longitude"); 
       store_id = e.getString("store_id"); 
       store_name = e.getString("store_name"); 
       store_address = e.getString("store_address"); 
       store_city = e.getString("store_city"); 
       store_phone = e.getString("store_phone"); 
       store_email = e.getString("store_email"); 
       Log.d("latitude",store_lat); 
       Log.d("longitude",store_long); 

       lat1 = Double.parseDouble(store_lat); 
       lng1 = Double.parseDouble(store_long); 
       googleMap.addMarker(new MarkerOptions().position(new LatLng(lat1, lng1)) 
        .title(e.getString("store_id"))); 
      } 
     } catch (JSONException e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 

    } 
} 

Hoffe, das wird Ihnen helfen.

0

Ok, was ist JSONfunctions in Ihrem Code?

Anyways was Sie tun möchten, ist, verwenden Sie die JsonArray, die lange Werte aus der API-Antwort in Post-Execute-Methode und Traverse bis zum Ende des Arrays hat. Jetzt für jede Iteration, rufen Sie addMarker auf der Karte mit dem lat langen Wert für diese Iteration.

Auf diese Weise wird sichergestellt, dass Sie verschiedene Markierungen für den entsprechenden Längen- und Breitengrad hinzufügen.

Was Sie gerade tun, ist das Hinzufügen der Markierung nur einmal auf der Karte, obwohl Sie alle lat langen Werte aus der Antwort erhalten. Hier

ist das Snippet für diese:

@Override 
    protected Void doInBackground(Void... params) { 

     e = JSONfunctions 
      .getJSONfromURL("http://beauty.ls.com/webservices/MapStores.php?client_id=1"); 
     Log.d("jsonobject", String.valueOf(e)); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void args) { 

     mProgressDialog.dismiss(); 

     try { 
      // Locate the array name in JSON 
      Log.d("second", ""); 
      jsonarray = e.getJSONArray("mapstores"); 
      Log.d("three",""); 
      for (int i = 0; i < jsonarray.length(); i++) { 
       e = jsonarray.getJSONObject(i); 

       store_lat = e.getString("store_latitude"); 
       store_long = e.getString("store_longitude"); 
       store_id = e.getString("store_id"); 
       store_name = e.getString("store_name"); 
       store_address = e.getString("store_address"); 
       store_city = e.getString("store_city"); 
       store_phone = e.getString("store_phone"); 
       store_email = e.getString("store_email"); 
       Log.d("latitude",store_lat); 
       Log.d("longitude",store_long); 

       lat1 = Double.parseDouble(store_lat); 
       lng1 = Double.parseDouble(store_long); 
       googleMap.addMarker(new MarkerOptions().position(new LatLng(lat1, lng1)) 
        .title(e.getString("store_id"))); 
      } 
     } catch (JSONException e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 

    } 
} 

Nun, während ich die Eingabe, @hiren schon die Antwort gegeben hat. : P Hoffe, dass Sie bekommen, was Sie benötigen.