private void resetMarkersOverlay() {
    if (mMarkersOverlay != null) {
      mMarkersOverlay.removeAllItems();
      mMapView.removeOverlay(mMarkersOverlay);
    }

    mMarkersOverlay =
        new ItemizedDraggableIconOverlay(
            getActivity().getApplicationContext(),
            new ArrayList<Marker>(),
            new ItemizedIconOverlay.OnItemGestureListener<Marker>() {
              @Override
              public boolean onItemSingleTapUp(int index, Marker item) {
                mMapView.selectMarker(item);
                return true;
              }

              @Override
              public boolean onItemLongPress(int index, Marker item) {
                mMapViewListener.onLongPressMarker(mMapView, item);
                return true;
              }
            });
    mMarkersOverlay.setMarkerDragListener(mMarkerDragHandler);
    mMapView.addItemizedOverlay(mMarkersOverlay);
  }
  @Override
  public void updateMarker(MarkerInfo markerInfo, boolean isDraggable) {
    // if the drone hasn't received a gps signal yet
    final Coord2D coord = markerInfo.getPosition();
    if (coord == null) {
      return;
    }

    final LatLng position = DroneHelper.CoordToLatLng(coord);
    Marker marker = mBiMarkersMap.getValue(markerInfo);
    if (marker == null) {
      marker = new Marker(mMapView, markerInfo.getTitle(), markerInfo.getSnippet(), position);
      mMarkersOverlay.addItem(marker);
      mBiMarkersMap.put(markerInfo, marker);
    } else {
      marker.setTitle(markerInfo.getTitle());
      marker.setDescription(markerInfo.getSnippet());
      marker.setPoint(position);
    }

    // Update the marker
    final Resources res = getResources();
    Bitmap markerIcon = markerInfo.getIcon(res);
    if (markerIcon == null) {
      markerIcon = BitmapFactory.decodeResource(res, R.drawable.ic_action_location);
    }

    marker.setIcon(new Icon(new BitmapDrawable(res, markerIcon)));

    marker.setAnchor(new PointF(markerInfo.getAnchorU(), markerInfo.getAnchorV()));
    marker.invalidate();
    mMapView.invalidate();
  }
 private void removeMarkersOverlay(List<Marker> markers) {
   if (mMarkersOverlay != null) {
     mMarkersOverlay.removeItems(markers);
   }
 }