gpt4 book ai didi

android - 适用于 Android 的 Google map v2 : Cannot remove marker while map is being rendered

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:29 24 4
gpt4 key购买 nike

我有一个 fragment :

  • GoogleMap v2 fragment
  • 用于添加标记(用户的位置)的“位置”按钮
  • “删除位置”按钮(删除用户生成的标记)
  • 其他标记(例如一般兴趣点)
  • 自定义图 block 叠加层

当用户点击“放置”按钮时,应用程序会存储一个包含标记引用的 HashMap ,并将对象放置在 WeakHashMap 中。当用户点击“删除地点”时,应用程序会遍历调用 marker.remove() 的 map 键。

本地图完全渲染时,标记会被正确移除,但是,如果在渲染 map 时按下按钮,则标记不会被移除。

有人遇到过同样的问题吗?如何解决?

我不能使用 map.clear(),因为它会删除所有标记、折线、叠加层等。我只想删除以前存储的标记列表(用户位置),而不是所有内容。

最佳答案

您可以使用一些 bool 值来检查 map 是否已完成加载。如果不延迟删除标记,直到它被删除。这是一个例子:

private boolean mLoadFinished, mDelayRemove;

public void removeMarkers() {
for (Marker marker : markers) {
marker.remove();
}
}

@Override
public void onCreate(Bundle savedInstanceState) {
...

Button button;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!mLoadFinished) {
mDelayRemove = true;
} else {
removeMarkers();
}
}
});

mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
mLoadFinished = true;
if (mDelayRemove) {
mDelayRemove = false;
removeMarkers();
}
}
});

...
}

关于android - 适用于 Android 的 Google map v2 : Cannot remove marker while map is being rendered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25422488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com