tou*_*ist 5 android google-maps
码:
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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我希望当我点击地图时,会有一个与显示点击位置相关的标记.和被删除之前的标记.因此,只有一个与显示点击位置相关的标记.
我已经知道mGoogleMap.clean();可以清理地图,也可以在地图上标记.
但我想删除特定的标记.(因为,在我的应用程序中,有很多种标记.例如,一个主标记显示用户家的位置,而公共汽车站标记显示公共汽车站的位置.)
所以我创建了ArrayList并尝试使用它.
但它没有用.
我想当我点击地图时,addmarker();效果不错但.remove();似乎无法正常工作.
错误在哪里?
如何仅删除特定标记?
小智 18
在Map上添加标记时,可以将其存储到HashMap中,如下所示:
HashMap<YourUniqueKey,Marker> hashMapMarker = new HashMap<>();
Marker marker = googleMap.addMarker(markerOptions);
hashMapMarker.put(YourUniqueKey,marker);
Run Code Online (Sandbox Code Playgroud)
当您想要删除特定标记时,只需通过YourUniqueKey为您的Maker 获取该标记,如下所示:
Marker marker = hashMapMarker.get(YourUniqueKey);
marker.remove();
hashMapMarker.remove(YourUniqueKey);
Run Code Online (Sandbox Code Playgroud)