【问题标题】:How to remove map markers如何删除地图标记
【发布时间】:2013-08-19 21:54:21
【问题描述】:

我想实现一个地图系统,用户可以在其中选择起点和终点作为两个不同的标记。

当用户长按地图时,他们可以选择一个按钮来将此位置用作起点或终点。

    case (R.id.setStart):
        markerStart = mMap.addMarker(new MarkerOptions()
        .position(this.startPoint)
        .title("Start")
        .draggable(true)
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));       
        outputName = rGC.getStringFromCoordinates(this.startPoint.latitude, this.startPoint.longitude);
        autocompleterStart.setText(outputName); 
        break;
    case (R.id.setEnd):
        markerEnd = mMap.addMarker(new MarkerOptions()
        .position(this.endPoint)
        .title("End")
        .draggable(true)
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); 

但是,当用户重复相同的过程(选择一个新位置作为开始/结束)时,我希望能够删除以前的标记。因此,如果他们选择相同的 START 按钮,则会删除之前的开始标记并创建一个新标记。

有没有办法检查地图上是否存在特定标记。我尝试添加marker.remove();,但它给了我一个空指针异常。

        case (R.id.setEnd):
        markerEnd.remove();
        markerEnd = mMap.addMarker(new MarkerOptions()
        .position(this.endPoint)
        .title("End")
        .draggable(true)
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));     

有什么想法吗?提前致谢!

【问题讨论】:

  • 如果你得到一个空点异常,那是因为marker 是空的。尝试在其前面添加if(marker!=null),以便在未设置标记时第一次跳过命令。
  • @Robadob 它仍然不起作用,因为我需要在方法开始时初始化两个标记。所以它不会删除任何东西。
  • 也许您应该将标记存储在您班级的某个地方?您可以重新获得标记句柄的唯一其他方法是用户单击它们。
  • 谢谢,我搞定了,我只是把标记放在了方法之外。

标签: java android google-maps


【解决方案1】:

你可以使用我在我的应用程序中实现的方法并且工作正常......对我来说

LatLng  latpoint;

MAP.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {

            @Override
            public void onMapLongClick(LatLng point) {
                // TODO Auto-generated method stub

                // MAP.clear();
                if (marker != null) {
                    marker.remove();
                }
                latpoint = point;
                marker = MAP.addMarker(new MarkerOptions()
                        .position(
                                new LatLng(latpoint.latitude,
                                        latpoint.longitude))
                        .title(point.toString()).draggable(true)
                        .visible(true));

            }

        });

【讨论】:

  • 这也是对的,我的错误是我在方法中初始化了标记。
猜你喜欢
  • 2019-07-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 2011-01-28
  • 1970-01-01
  • 2013-06-18
  • 2020-04-02
  • 2013-12-09
相关资源
最近更新 更多