2016-06-29 11 views
1

ユーザーがマップ上にマーカーを作成したら、そのマーカーのすべてのプロパティ(緯度、経度、タイトル、スニペットなど)を構造体/配列に保存するにはどうすればいいですか?それらをすべて別々の活動に並べることはできますか?各マーカーを関連付けるオブジェクトを作成する必要がありますか?ここでGoogleマップ:配列にマーカーを保存してリストアップする

MapsActivityのコードです:

package com.geekybrackets.virtualtourguide; 

import android.content.Context; 
import android.content.Intent; 
import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 
import android.util.Log; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 

import java.io.DataOutputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.WeakHashMap; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    public GoogleMap mMap; 
    double lat = 0; 
    double lon = 0; 
    static final int GET_DETAILS = 0; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     // 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); 

    } 


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

     mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 

      public void onMapClick(LatLng latLng) { 
       lat = latLng.latitude; 
       lon = latLng.longitude; 

       startActivityForResult(new Intent(MapsActivity.this,newMarker.class), GET_DETAILS); 

      } 
     }); 


    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, 
            Intent data) { 
     if (requestCode == GET_DETAILS) { 
      if (resultCode == RESULT_OK) { 
       String marker_title=data.getStringExtra("title"); 
       Marker m = mMap.addMarker(new MarkerOptions() 
         .position(new LatLng(lat, lon)) 
         .title(marker_title)); 
       mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(lat, lon))); 

      } 
     } 
    } 

} 

答えて

1

あなたがList<Marker>を作成することができます作成​​したマーカーを操作するには:

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

し、それに作成されたマーカーを追加:

Marker m = mMap.addMarker(new MarkerOptions() 
    .position(new LatLng(lat, lon)) 
    .title(marker_title)); 
markers.add(m); 

マーカーの値をアノテーションに渡す必要がある場合マーカーはUIの一部であるとして彼女Activity、持続していると考えられますが、MarkerOptionsParcelableを実装して、インテントを使用して、別の活動に送信することができていない。

List<MarkerOptions> markers = new ArrayList<MarkerOptions>(); 

MarkerOptions markerOptions = new MarkerOptions() 
    .position(new LatLng(lat, lon)) 
    .title(marker_title); 
Marker m = mMap.addMarker(markerOptions); 
markers.add(markerOptions); 

そして、あなたが使用してリストを送信することができます意図:

MarkerOptions[] markersArray = markers.toArray(new MarkerOptions[markers.size()]); 
Intent intent = new Intent(); 
intent.putExtra("markers", markersArray); 
+0

うーん、あなたの詳細な応答のためのおかげで、しかし、私は一度送信され活動を開始したくない意図を通じて情報を送信した後に、その代わりに、私は別のボタンから活動をトリガします。インテントを使用すると可能ですか? –

+0

リストにマーカーを保存して、インテントを作成し、必要に応じてアクティビティを開始してください。 – antonio

+0

@antonio他のアクティビティでmarkersArrayをどのように取得しますか?私はここで本当に苦労しています –

関連する問題