gpt4 book ai didi

android - 将字符串转换为谷歌地图中的标记以删除 map 中的旧标记

转载 作者:太空狗 更新时间:2023-10-29 14:55:57 25 4
gpt4 key购买 nike

我有一个复选框列表,用户可以在其中选择一些路由,然后从服务器获得响应。我有方法 gotoLocation 来更新标记的位置,并在使用相同路线将新标记插入服务器端的表时在 map 中添加新标记。

我之前在向 map 添加新标记时遇到了问题,因此当我在数据库表中为具有相同所选路线的新标记插入数据时,新插入的数据并未添加到 map 中。在通过将标记的数据存储为 HashMap 中的 String 解决此问题之前,我将 id 和 Marker 存储在 HashMap 中,在这种情况下,新插入的数据将作为标记添加到 map 中。

现在在 更新 block 中,我需要将此数据 latit,longit, rout_dirc 转换为标记,以便在更新其位置之前从 map 和 HashMap 中删除旧数据。在我的情况下我该怎么做?由于我现在在 HashMap 中没有标记,而且我不能使用 marker.remove() 删除旧标记,我该如何从 map 中删除旧标记?

感谢任何帮助

代码:

public class Map extends FragmentActivity {

GoogleMap map;
static HashMap<Integer, String> markerMap = new HashMap<Integer, String>();
static String marker_string;

static Marker marker = null;
private void gotoLocation(int id, double lat, double lng,
String route_direct) {
final float zoom = 11;
LatLng ll = null;
if (markerMap.containsKey(id)) {
// Update the location.
marker_string = markerMap.get(id);
String[] marker_string_split = marker_string.split(",");
double latit = Double.parseDouble(marker_string_split[0]);
double longit = Double.parseDouble(marker_string_split[1]);
String rout_dirc = marker_string_split[2];

LatLng LL_2 = new LatLng(lat, lng);
MarkerOptions markerOpt2 = new MarkerOptions().title(route_direct)
.position(LL_2);

// This here doest work.
marker.remove();

// Remove from the HashMap tp add the new one.
markerMap.remove(id);

ll = new LatLng(lat, lng);
MarkerOptions markerOpt = new MarkerOptions().title(route_direct)
.position(ll);
marker = map.addMarker(markerOpt);

String lat1 = Double.toString(lat);
String lng1 = Double.toString(lng);
String data = lat1 + "," + lng1 + "," + route_direct;
markerMap.put(id, data);
zoom();

} else {
// Add a new marker
String lat1 = Double.toString(lat);
String lng1 = Double.toString(lng);
String data = lat1 + "," + lng1 + "," + route_direct;
markerMap.put(id, data);

ll = new LatLng(lat, lng);
MarkerOptions markerOpt = new MarkerOptions().title(route_direct)
.position(ll);
marker = map.addMarker(markerOpt);
zoom();


}
}
}

最佳答案

marker.remove(); 中的标记似乎设置为 null,除非您有要删除的标记的引用,否则它不会有任何好处。如果您想删除所有旧标记,则可以尝试以下操作:

mMap = super.getMap();
map.clear();

这将删除所有内容。否则,当您添加标记时,如果您以后需要删除它,您应该有一个引用。

例如,你的标记变量是:

Marker marker = map.addMarker(..);

然后你可以通过marker.remove();删除它希望这是有道理的;

关于android - 将字符串转换为谷歌地图中的标记以删除 map 中的旧标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434413/

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