2016-04-15 3 views
0

Ich möchte meine Arraylist mit den Koordinaten, die ich in meiner MainActivity auf Google Maps in meiner Google Maps-Aktivität habe, ausfüllen. Wie kann ich das am einfachsten machen? My for-Schleife die JSON-Daten zu erhalten:Wie kann ich meine Arraylist mit Koordinaten auf Google Maps anzeigen?

for (int j = 0; j <= 10; j++) { 
JSONObject marker = placemarks.getJSONObject(j); 
JSONArray coordinates = marker.optJSONArray("coordinates"); 
double lat = coordinates.optDouble(0); 
double lng = coordinates.optDouble(1); 
latlongList.add(new LatLng(lat, lng)); 
} 

Meine aktuelle Google Maps Aktivität:

public class CarLocation extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_car2_go_location); 
     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 


    } 


    /** 
    * Manipulates the map once available. 
    * This callback is triggered when the map is ready to be used. 
    * This is where we can add markers or lines, add listeners or move the camera. In this case, 
    * we just add a marker near Sydney, Australia. 
    * If Google Play services is not installed on the device, the user will be prompted to install 
    * it inside the SupportMapFragment. This method will only be triggered once the user has 
    * installed Google Play services and returned to the app. 
    */ 
    @Override 
    public void onMapReady(GoogleMap googleMap) { 

     MainActivity mainActivity = new MainActivity(); 

     mMap = googleMap; 
     // Add a marker in Hamburg and move the camera 
     LatLng hamburg = new LatLng(53.551086, 9.993682); 
     mMap.addMarker(new MarkerOptions().position(hamburg).title("Marker in Hamburg")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(hamburg)); 

    } 
} 
+0

Sie möchten latlongList an die Autostandort-Aktivität übergeben? – Blackkara

+0

Ja, wenn es möglich ist. Und danach möchte ich es auf Google Maps anzeigen – Jade

+0

Ja möglich, aber wenn Sie latlongList verwenden, nur um Marker zu erstellen. Sie können JSON-Betrieb in CarLocation vornehmen und verwenden, anstatt von einer anderen Aktivität zu senden. Überprüfe meinen Beitrag. – Blackkara

Antwort

2

ich diesen Code nicht testen, aber Um zu verstehen, wie es geht, kannst du folgen.

Ich erwähnte in meinem Kommentar oben, anstatt ganze Liste zwischen Aktivitäten (in Ihrem Fall von MainActivity zu CarLocation Aktivität) zu senden, ist es besser, den gesamten Prozess (holen Json und Anzeige von Markern) in eine Methode und zu verwenden.

DisplayMarkersTask asynctask ruft Marker ab und zeigt sie an.

public class CarLocation extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 
    private List<Marker> markers = new ArrayList<>(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_car2_go_location); 

     SupportMapFragment mapFragment = 
      (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 

     mapFragment.getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     Send parameter if needed 
     String param = .... 
     new DisplayMarkersTask(param).execute(); 
    } 

    private static class DisplayMarkersTask extends AsyncTask<String, Void, ArrayList<LatLng>> { 

     private WeakReference<CarLocation> mActivityRef; 
     public DisplayMarkersTask(CarLocation activity){ 
      mActivityRef = new WeakReference<>(activity); 
     } 

     @Override 
     protected ArrayList<LatLng> doInBackground(String... params) { 
      Take parameter if needed 
      String param = params[0]; 
      .... 
      Fetch your json here 

      ArrayList<LatLng> latlongList = new ArrayList<>(); 
      for (int j = 0; j <= 10; j++) { 
       JSONObject marker = placemarks.getJSONObject(j); 
       JSONArray coordinates = marker.optJSONArray("coordinates"); 
       double lat = coordinates.optDouble(0); 
       double lng = coordinates.optDouble(1); 
       latlongList.add(new LatLng(lat, lng)); 
      } 
      return latlongList; 
     } 

     @Override 
     protected void onPostExecute(ArrayList<LatLng> list) { 
      CarLocation activity = mActivityRef.get(); 
      if(activity == null){ 
       return; 
      } 

      for (int j = 0; j <= list.size(); j++) { 
       LatLng position = list.get(j); 
       Marker marker = activity.mMap.addMarker(
        new MarkerOptions().position(position)); 

       activity.markers.add(marker); 
      } 
     } 
    } 
} 
Verwandte Themen