如何删除除通过长点击实现的标记之外的所有标记,在 android 中使用 mMap.clear()



我还在学习安卓,在某些部分上仍然在挣扎......所以请耐心等待! 我的谷歌地图有一个微调器,它可以删除所有标记并根据用户想要看到的内容放置新标记。

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(parent.getContext(),
"You have selected : " + parent.getItemAtPosition(position).toString(),
Toast.LENGTH_SHORT).show();
String selectedItem = parent.getItemAtPosition(position).toString();
if (selectedItem.equals("Landmarks")) {
landMarkMarkers();
} else if (selectedItem.equals("Trees")) {
TreeMarkers();
}
}

landMarkMarkers() 和 TreeMarkers() 检查地图是否为空,如果不是,则使用 mMap.clear() 然后添加新标记。

private void landMarkMarkers() {
float[] distance = new float[2];
if (mMap != null) {
mMap.clear();
} else {
Log.d("Maps: :", "mMap is null");
}
Marker1 = mMap.addMarker(new MarkerOptions()
.position(new LatLng(51.59757, -4.00102))
.title("Entrance 1")
.snippet("Entrance to the park.")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)));
Marker2= mMap.addMarker(new MarkerOptions()
.position(new LatLng(51.59679, -4.00678))
.title("Entrance 2")
.snippet("Entrance to the park.")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)));

在onMapReady中,我使用longClickListener让人们为使用该应用程序找到的地方添加标记。它使用编辑活动,以便他们可以标记标记。

mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng latLng) {
Intent edit = new Intent(MapsActivity.this, EditActivity.class);
edit.putExtra("location", latLng);
MapsActivity.this.startActivityForResult(edit, EDIT_REQUEST);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (EDIT_REQUEST) : {
if (resultCode == Activity.RESULT_OK) {
MarkerOptions markerOptions = data.getParcelableExtra("marker");
mMap.addMarker(markerOptions);
}
break;
}

我的问题是我能做什么,以便当用户将微调器从树木更改为地标时,反之亦然,并打开和关闭应用程序。通过 LongClick 添加的标记将始终出现在地图上,我相信我需要将标记添加到数组中,但我似乎无法以我实现它的方式让它工作。 感谢任何有时间的人,请尽量保持简单。我还在学习!

尝试收集集合中的所有标记,并为每个标记调用 Marker.remove() 方法,除了通过长按实现的标记。

最新更新