如何在android中使用mMap.clear()删除除长按下实现的所有标记之外的所有标记

时间:2017-04-11 16:11:16

标签: android google-maps google-maps-api-3

我仍然在学习机器人并且仍在努力解决一些问题..所以请耐心等待! 我有一个用于我的谷歌地图的微调器,它会删除所有标记并根据用户想要看到的内容放置新标记。

     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Toast.makeText(parent.getContext(),
            "You have selected : " + parent.getItemAtPosition(position).toString(),
            Toast.LENGTH_SHORT).show();

    String selectedItem = parent.getItemAtPosition(position).toString();
    if (selectedItem.equals("Landmarks")) {
        landMarkMarkers();
    } else if (selectedItem.equals("Trees")) {
        TreeMarkers();
    }
}

landMarkMarkers()和TreeMarkers()检查地图是否为空,否则使用mMap.clear()然后添加新标记。

        private void landMarkMarkers() {
    float[] distance = new float[2];
    if (mMap != null) {
        mMap.clear();
    } else {
        Log.d("Maps: :", "mMap is null");
    }

    Marker1 = mMap.addMarker(new MarkerOptions()
            .position(new LatLng(51.59757, -4.00102))
            .title("Entrance 1")
            .snippet("Entrance to the park.")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)));

    Marker2= mMap.addMarker(new MarkerOptions()
            .position(new LatLng(51.59679, -4.00678))
            .title("Entrance 2")
            .snippet("Entrance to the park.")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)));
在onMapReady中我使用longClickListener为人们添加标记,以便他们自己为使用该应用程序找到的地方添加标记。它使用EditActivity,因此可以标记标记。

    mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
        @Override
        public void onMapLongClick(LatLng latLng) {
            Intent edit = new Intent(MapsActivity.this, EditActivity.class);
            edit.putExtra("location", latLng);
            MapsActivity.this.startActivityForResult(edit, EDIT_REQUEST);
        }
    });

   @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode) {
        case (EDIT_REQUEST) : {
            if (resultCode == Activity.RESULT_OK) {
                MarkerOptions markerOptions = data.getParcelableExtra("marker");
                mMap.addMarker(markerOptions);
            }
            break;
        }

我的问题是我该怎么做,以便当用户将微调器从树木更改为地标,反之亦然,并打开和关闭应用程序。通过LongClick添加的标记将始终显示在地图上,我相信我需要将标记添加到数组中,但我似乎无法使用我实现它的方式。  感谢有时间的人,请尽量保持简单。我还在学习!

1 个答案:

答案 0 :(得分:0)

尝试收集集合中的所有标记,并为每个标记调用Marker.remove()方法,除了通过长按实现的标记。