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

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

谷歌地图 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/

相关文章:

javascript - 在谷歌地图中动态添加监听器,其中 iframe src 为每个标记设置不同

android - 防止在 android 中的谷歌地图上旋转标记

android - 自动重新连接到互联网

android - Parcelable 接口(interface)的 describeContents() 的用途

android - testCoverageEnabled 时未找到测试

Android 位置说明

javascript - 如何在 Ruby on Rails 中将 JSON responseText 应用于 Google map ?

java - Android Studio 中的 Google map 错误

google-maps - 在谷歌地图中获取 (x,y) 中的标记位置

ruby-on-rails - 从 rails 调用 javascript 函数