【发布时间】:2014-04-11 13:07:13
【问题描述】:
我有一张地图,一次只允许 1 个标记。但为了防止该标记被意外替换为另一个标记,需要进行设置,以便在添加另一个标记之前清除该标记。
我通过 onMapClick 设置标记并通过 onMapLongClick 清除它们。就目前而言,标记的清除和添加工作正常,但我似乎无法设置地图,因此您需要先清除地图。
我尝试了check for existing markers 的解决方案,但没有奏效。
这是我的设置代码,目前通过清除现有标记并添加另一个标记来工作,而无需先清除原始标记:
@Override
public void onMapLongClick(LatLng position) {
mMap.clear();
Toast.makeText(this, "Position Cleared", Toast.LENGTH_SHORT).show();
position = null;
}
@Override
public void onMapClick(LatLng position){
if (position != null){
mMap.clear();
mMap.addMarker(new MarkerOptions()
.position(position)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_new)));
}
else {
mMap.addMarker(new MarkerOptions()
.position(position)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_new)));
}
}
但我认为应该是这样的:
@Override
public void onMapLongClick(LatLng position) {
mMap.clear();
Toast.makeText(this, "Position Cleared", Toast.LENGTH_SHORT).show();
position = null;
}
@Override
public void onMapClick(LatLng position){
if (position == null){
//mMap.clear();
mMap.addMarker(new MarkerOptions()
.position(position)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_new)));
}
else {
Toast.makeText(this, "Clear first", Toast.LENGTH_SHORT).show();
}
}
但所做的只是给我 Toast 消息,即使在第一次加载地图时也根本无法添加标记。
任何帮助都会很棒
【问题讨论】:
-
你为什么不记得标记参考而不是位置?
map.addMarker()返回对添加标记的引用。然后当您引用为空时添加新标记,当它不为空时要求清除地图(您可以通过调用其remove()方法来删除标记。 -
@BobanS。 - 这就是我正在尝试但未能实现的目标:/
-
我已经修好了。谢谢
标签: android google-maps google-maps-markers google-maps-android-api-2 markers