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

时间:2014-04-09 08:56:22

标签: android google-maps google-maps-markers google-maps-android-api-2

Google Maps API v2
当我在等待另一个应用程序最终确定时,我正在创建另一个感兴趣的东西,只能一次将1个标记添加到地图中(我喜欢我做的地图)。

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

@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清除地图后,仍然没有让我添加标记

1 个答案:

答案 0 :(得分:5)

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

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

伪代码中的

Marker marker;

if(marker == null) {
   marker = map.addMarker(...)
} else {
   ....
}