谷歌地图 API v2
在等待另一个应用程序完成时,我出于兴趣创建了另一个应用程序,一次只能将 1 个标记添加到 map (我喜欢我做的 map )。
我目前有这段代码,如果标记已经存在,它将清除 map ,然后添加另一个标记。但我想要的是它显示一条消息,告诉用户在允许添加另一个标记之前清除 map 。
@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 onMapClick(LatLng position){
if (position != null){
Toast.makeText(this, "Clear map before adding another location", Toast.LENGTH_SHORT).show();
}
else {
mMap.addMarker(new MarkerOptions()
.position(position)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_new)));
}
}
但是即使没有标记存在,它所做的只是显示我想要的消息,因此您实际上不能添加任何标记。我应该在这里使用 ArrayList 吗?根据设计,该应用程序一次只允许使用 1 个标记。在询问之前,我环顾四周,没有找到任何符合我需求的东西。
谢谢
这是我编辑过的代码,但仍然不起作用:
@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){
Toast.makeText(this, "Clear first", Toast.LENGTH_SHORT).show();
/*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)));
}
}
在使用 onMapLongClickListener 清除 map 后,它仍然不让我添加标记
最佳答案
addMarker 返回一个 Marker 对象,您可以使用它来更新或指示您已经创建了 Marker。
您还可以使用 Marker 对象将其从 map 中移除,而不是使用 clear() 来移除所有标记。
伪代码:
Marker marker;
if(marker == null) {
marker = map.addMarker(...)
} else {
....
}
关于android - 在添加另一个之前检查现有标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22957488/