2016-04-15 8 views
0

私は自分のMainActivityに持っている座標でいっぱいの私のarraylistをgoogle mapsの活動のgoogle mapsに表示したいと思います。私はこれを最も簡単な方法でどうやって行うことができますか?私のarraylistを座標でGoogleマップに表示するには?

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)); 
} 

私の現在のGoogleマップの活動:JSONデータを取得するために、forループ マイここ

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

CarLocationアクティビティにlatlongListを渡しますか? – Blackkara

+0

可能な場合はあります。その後、私はgoogle maps – Jade

+0

に表示したいと思いますが、latlongListを使ってマーカーを作成するだけでも可能です。他のアクティビティから送信する代わりに、CarLocationでjson操作を行い、使用することができます。私のポストをチェックしてください。 – Blackkara

答えて

2

を追加するためのリンクは、私はこのコードをテストしていないが、それを行う方法を理解するために、あなたは従うことができます。

私はアクティビティ(MainActivityからCarLocationアクティビティへのアクティビティ)の間でリスト全体を送信する代わりに、メソッドと使用方法で全プロセス(jsonを取得してマーカーを表示)をラップする方が良いです。

DisplayMarkersTask asynctaskはマーカーを取得して表示します。

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); 
      } 
     } 
    } 
} 
関連する問題