【发布时间】: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