微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

解决方法

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

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

在伪代码中:

Marker marker;

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐