Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在添加其他标记之前检查现有标记_Android_Google Maps_Google Maps Markers_Google Maps Android Api 2 - Fatal编程技术网

Android 在添加其他标记之前检查现有标记

Android 在添加其他标记之前检查现有标记,android,google-maps,google-maps-markers,google-maps-android-api-2,Android,Google Maps,Google Maps Markers,Google Maps Android Api 2,谷歌地图API v2 当我在等待另一个应用程序最终定稿时,出于兴趣,我正在创建另一个应用程序,该应用程序一次只能在地图上添加一个标记(我喜欢地图) 我目前有一个代码,它将清除地图,如果一个标记已经存在,然后添加另一个。但我想让它显示一条消息,告诉用户在允许添加另一个标记之前清除地图 @Override public void onMapClick(LatLng position){ if (position != null){ mMap.clear

谷歌地图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)));           
        }
    }
我试过:

@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对象将其从地图中删除,而不是使用clear()删除所有标记

在伪代码中:

Marker marker;

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

我将首先尝试marker对象更新-因为我不希望用户能够通过点击地图意外删除他们的第一个标记,而他们所要做的只是移动地图(通过让一个笨手笨脚的基本用户尝试发现),刚刚实现了代码,这在一开始是有效的,但是如果你清除了地图,你就不能再添加一个标记,因为你收到了Toast消息。当你清除地图时,别忘了将标记设置为null。是的,谢谢。我想这就是我错过的。一切正常。希望你的答案被标记为正确。谢谢你-我已经添加了我编辑过的代码,因为你提供的答案我无法工作。我需要向onMapLongClickListener添加什么,以便在清除旧标记后添加新标记?