CODE:
private Marker mCurrentMarker;
private ArrayList<Marker> mMarkerArrayList;
@Override
public void onMapReady(final GoogleMap googleMap) {
mGoogleMap = googleMap;
mMarkerArrayList = new ArrayList<>();
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
MarkerOptions marker_onclick = new MarkerOptions().position(
new LatLng(point.latitude, point.longitude)).title(getString(R.string.now_your_location));
if (mMarkerArrayList.size() > 0){
Marker marker_to_remove = mMarkerArrayList.get(0);
marker_to_remove.remove();
}
mCurrentMarker = mGoogleMap.addMarker(marker_onclick);
mGoogleMap.addMarker(marker_onclick);
mMarkerArrayList.add(mCurrentMarker);
}
});
}
我希望当我单击 map 时,在显示单击位置时会有一个标记。和之前已被删除的标记。因此,只有一个与显示点击位置相关的标记。
我已经知道
mGoogleMap.clean();
可以清除 map ,也可以清除 map 上的标记。但我想删除特定标记。 (因为,在我的应用程序中,标记有很多种。例如,一个家庭标记显示了用户的家在哪里,而公交车站标记则显示了公交车站在哪里。)
因此,我制作了ArrayList并尝试使用它。
但这没有用。
我认为当我点击 map 时,
addmarker();
运作良好,但.remove();
似乎无法运作。错误在哪里?
如何仅删除特定标记?
我读过:How to remove the marker in Google map v2?
最佳答案
在 map 上添加标记时,可以将其存储到 HashMap 中,如下所示:
HashMap<YourUniqueKey,Marker> hashMapMarker = new HashMap<>();
Marker marker = googleMap.addMarker(markerOptions);
hashMapMarker.put(YourUniqueKey,marker);
在您要删除特定标记时,只需通过 YourUniqueKey 来获取该标记的制造商,如下所示:
Marker marker = hashMapMarker.get(YourUniqueKey);
marker.remove();
hashMapMarker.remove(YourUniqueKey);