0

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

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

    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)));     

有任何想法吗?先谢谢了!

4

1 回答 1

0

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

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));

            }

        });
于 2013-08-19T13:54:21.377 回答