在添加另一个之前检查现有标记

And*_*ter 4 android google-maps google-maps-markers google-maps-android-api-2

谷歌地图API v2
虽然我正在等待另一个应用程序最终确定我正在创建另一个兴趣,只能使一个标记一次添加到地图(我喜欢我做的地图).

我目前有这个代码,如果标记已经存在,将清除地图,然后添加另一个.但我想要的是它显示一条消息告诉用户清除地图之前它将允许添加另一个标记.

@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)));           
        }
    }
Run Code Online (Sandbox Code Playgroud)

我试过了:

@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)));           
        }
    }
Run Code Online (Sandbox Code Playgroud)

但所有这一切都是显示我想要的信息,即使没有标记存在,所以你实际上不能添加任何标记.我应该在这里使用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)));           
        }
    }
Run Code Online (Sandbox Code Playgroud)

在使用onMapLongClickListener清除地图后,仍然没有让我添加标记

Raa*_*nan 5

addMarker返回一个Marker对象,您可以使用该对象来更新或指示您已经创建了Marker.

您还可以使用Marker对象将其从地图中删除,而不是删除所有标记的clear().

在伪代码中:

Marker marker;

if(marker == null) {
   marker = map.addMarker(...)
} else {
   ....
}
Run Code Online (Sandbox Code Playgroud)