Java 从谷歌地图中删除标记
我似乎不明白为什么我添加到谷歌地图上的标记没有被正确删除 我根据通过回调返回给我的列表添加和删除标记。此列表每10秒更改一次,并返回一组包含预设键/id的对象。可以每隔10秒返回一个具有相同字符串键/id的对象,只要该对象位于特定半径内 我正在检查markersHashMap(表示Google地图上的标记)中的标记是否包含在新的MarkerCurrentHashMap中。如果标识在markersCurrentHashMap中不存在(因为对象超出范围/半径),我将从Google地图中删除该条目标记,然后从HashMap中删除该条目 为什么即使从markersHashMap中正确删除了键/值对,我的标记也没有被正确删除? 这条线似乎是问题所在<代码>markersHashMap.get(key.remove()代码> 以下是我如何根据返回的列表添加/删除特定标记。Java 从谷歌地图中删除标记,java,android,google-maps,google-maps-api-3,Java,Android,Google Maps,Google Maps Api 3,我似乎不明白为什么我添加到谷歌地图上的标记没有被正确删除 我根据通过回调返回给我的列表添加和删除标记。此列表每10秒更改一次,并返回一组包含预设键/id的对象。可以每隔10秒返回一个具有相同字符串键/id的对象,只要该对象位于特定半径内 我正在检查markersHashMap(表示Google地图上的标记)中的标记是否包含在新的MarkerCurrentHashMap中。如果标识在markersCurrentHashMap中不存在(因为对象超出范围/半径),我将从Google地图中删除该条目标记
private void updateMapMarkers(List<AnimateCarObj> carAnimateCarList) {
animateCarObjMap.clear();
markersCurrentHashMap.clear();
//POPULATE CURRENT HASHMAP / ANIMATE CAR MAP
for (AnimateCarObj ao : carAnimateCarList) {
if (ao.isAnimating()) {
isAnimCacheCarList.add(ao);
}
addAnimCarObjToMap(ao);
addMarkerToCurrentHashMap(ao);
}
printAnimateCarMap();
printCurrentMarkerMap();
//REMOVE ALL MARKERS FROM MARKER MAP, THAT DO NOT EXIST IN THE CURRENT VIEWABLE LIST
//removeOldMarkers();
for (String key : markersHashMap.keySet()) {
if (!(markersCurrentHashMap.containsKey(key))) {
markersHashMap.get(key).remove();
markersHashMap.remove(key);
}
}
addNewMarkers();
printMarkerMap();
}
添加创建标记,添加到hashmap
public void addMarker(String id) {
AnimateCarObj animateCarObj = animateCarObjMap.get(id);
Bitmap carIcon = IconUtils.loadIcon(getActivity(), "some_car_marker.png", 0,
(int) DisplayUtils.dp2pixel(getActivity(), 50), ScaleMode.BY_HEIGHT);
Marker marker = map.addMarker(new MarkerOptions().position(animateCarObj.getGps1())
.rotation((float) animateCarObj.getWs_CarInfoObj().getBearing())
.icon(BitmapDescriptorFactory.fromBitmap(carIcon))
.visible(true));
addMarkerToHashMap(id, marker);
}
public void addMarkerToHashMap(String id, Marker marker) {
setUpMarkersHashMap();
markersHashMap.put(id, marker);
}
将标记添加到hashmap
public void addMarker(String id) {
AnimateCarObj animateCarObj = animateCarObjMap.get(id);
Bitmap carIcon = IconUtils.loadIcon(getActivity(), "some_car_marker.png", 0,
(int) DisplayUtils.dp2pixel(getActivity(), 50), ScaleMode.BY_HEIGHT);
Marker marker = map.addMarker(new MarkerOptions().position(animateCarObj.getGps1())
.rotation((float) animateCarObj.getWs_CarInfoObj().getBearing())
.icon(BitmapDescriptorFactory.fromBitmap(carIcon))
.visible(true));
addMarkerToHashMap(id, marker);
}
public void addMarkerToHashMap(String id, Marker marker) {
setUpMarkersHashMap();
markersHashMap.put(id, marker);
}
以下是哈希映射的初始化方式
public void addNewMarkers() {
for (String key : markersCurrentHashMap.keySet()) {
if(!markersHashMap.containsKey(key)){
addMarker(key);
}
}
}
public void setUpMarkersHashMap() {
if (animateCarObjMap == null) {
animateCarObjMap = new HashMap<String, AnimateCarObj>();
}
if (markersHashMap == null) {
markersHashMap = new HashMap<String, Marker>();
}
if (markersCurrentHashMap == null) {
markersCurrentHashMap = new HashMap<String, Marker>();
}
if (markersResultHashMap == null) {
markersResultHashMap = new HashMap<String, Marker>();
}
}
public void setUpMarkersHashMap(){
if(animateCarbjmap==null){
animateCarbjmap=newhashmap();
}
if(markersHashMap==null){
markersHashMap=newhashmap();
}
if(markersCurrentHashMap==null){
markersCurrentHashMap=新HashMap();
}
if(markersResultHashMap==null){
markersResultHashMap=newhashmap();
}
}
您所说的未正确移除是什么意思?这些标记在地图上仍然可见?是的。标记永远不会从地图上删除。我需要逐个删除每个标记。如果(!(markersCurrentHashMap.containsKey(key)),删除块是否满足此条件?是否检查代码是否到达该if块内?是的,当需要删除对象时,它会使其通过该代码。删除标记后,您可以使用addNewMarkers
添加标记。你确定它们是相同的标记吗?如果删除此方法addNewMarkers
是否从地图中删除标记?