docs: @Override
      public boolean onTap(LatLong tapLatLong, Point layerXY, Point tapXY) {
          this.expanded = !this.expanded;
  
          double centerX = layerXY.x + this.getHorizontalOffset();
          double centerY = layerXY.y + this.getVerticalOffset();
  
          double radiusX = this.getBitmap().getWidth() / 2;
          double radiusY = this.getBitmap().getHeight() / 2;
  
          double distX = Math.abs(centerX - tapXY.x);
          double distY = Math.abs(centerY - tapXY.y);
  
          if (distX < radiusX && distY < radiusY) {
              if (this.expanded) {
                  // remove all child markers
                  for (Layer elt : this.layers) {
                      if (elt instanceof ChildMarker) {
                          this.layers.remove(elt);
                      }
                  }
  
                  // begin with (n). than the child marker will be over the line.
                  int i = this.children.size();
                  for (ChildMarker marker : this.children) {
                      marker.init(i, getBitmap(), getHorizontalOffset(), getVerticalOffset());
                      // add child to layer
                      this.layers.add(marker);
                      i--;
                  }
              } else {
                  // remove all child layers
                  for (ChildMarker childMarker : this.children) {
                      this.layers.remove(childMarker);
                  }
              }
              return true;
          }
          return false;
      }