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

标签 android google-maps

我有一个复选框列表,用户可以在其中选择一些路由,然后从服务器获得响应。我有方法 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/

相关文章:

javascript - 无法让 'deviceready' 在 PhoneGap Build 中工作

android - 以编程方式更改 xml 创建的 View

2019 年 1 月 29 日之后创建的带有 API KEY 的 Android Place Picker

安卓刷新 token

android - 在 2 个 Android 应用程序之间共享 SQLite 数据库?

javascript - 试图让简单的谷歌地图示例与 AngularJS 一起工作

android - 打开 map 以通过 intent-Android 显示当前位置的方向

javascript - 实现谷歌地图的最佳方式

android - 如何在 firebase android 的 recyclerview/cardlayout 中将最新帖子显示在顶部而不是底部?

javascript - 如何在谷歌地图上创建右侧菜单侧边栏