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

07-24 09:45
查看更多