0

これまで、タップして画面にマーカーを表示する方法を理解しました。経度と緯度の数値が表示されます。マーカーにメモを付けてSQLliteデータベースにマーカーを保存できるようにしたいと思います。ユーザーがマーカーをタップすると、地図が読み込まれ、マーカーが地図とともに読み込まれ、マーカーの上に情報が表示されます。これまでの私のマップクラスは次のとおりです。

public class Map extends  FragmentActivity {






GoogleMap googleMap;

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

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

    // Getting a reference to the map
    googleMap = supportMapFragment.getMap();


    googleMap.setOnMapClickListener(new OnMapClickListener() {

        @Override
        public void onMapClick(LatLng latLng) {

            // Creating a marker
            MarkerOptions markerOptions = new MarkerOptions();

            // Setting the position for the marker
            markerOptions.position(latLng);

            // Setting the title for the marker.
            // This will be displayed on taping the marker
            markerOptions.title(latLng.latitude + " : " + latLng.longitude);

            // Clears the previously touched position
            googleMap.clear();

            // Animating to the touched position
            googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));

            // Placing a marker on the touched position
            googleMap.addMarker(markerOptions);
        }
    });
}


  @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }



  private void setUpMapIfNeeded() {
        // Do a null check to confirm that we have not already instantiated the map.
        if (googleMap == null) {
            // Try to obtain the map from the SupportMapFragment.
            googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();
            // Check if we were successful in obtaining the map.
            if (googleMap != null) {
                setUpMap();
            }
        }
    }


  private void setUpMap() {

      googleMap.setMyLocationEnabled(true);
      googleMap.getMyLocation();
    }


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}

4

1 に答える 1

1

次のように、マップクリックリスナー(またはLongClickリスナー)に設定する必要があります。

map.setOnMapClickListener(new OnMapClickListener() {

        @Override
        public void onMapClick(LatLng point) {

        }
    });

そのリスナーでは、マップ上のクリックされた位置のLatLngポイントを取得します。次に、次のようなマーカーを作成します。

map.addMarker(new MarkerOptions()
        .position(point)
        .title("title")
        .snippet("snippet")
        .icon(icon));

マーカーを保存するには、ListまたはHashMapを使用します。これは、マップにマーカーを追加するためのそのような方法がないためです(おそらく私は間違っています)。

お役に立てれば。

于 2013-01-27T23:00:48.237 に答える