docs: @Override
      public boolean onSingleTapConfirmed(final MotionEvent event, final MapView mapView) {
          if(!mStyle.mClickable) return false;
          float hyp;
          Float minHyp = null;
          int closest = -1;
          Point tmp = new Point();
          Projection pj = mapView.getProjection();
  
          for(int i = 0; i < mPointList.size(); i++) {
              if(mPointList.get(i) == null) continue;
              // TODO avoid projecting coordinates, do a test before calling next line
              pj.toPixels(mPointList.get(i), tmp);
              if(Math.abs(event.getX() - tmp.x) > 50 || Math.abs(event.getY() - tmp.y) > 50) continue;
              hyp = (event.getX() - tmp.x) * (event.getX() - tmp.x)
                      + (event.getY() - tmp.y) * (event.getY() - tmp.y);
              if(minHyp == null || hyp < minHyp) {
                  minHyp = hyp;
                  closest = i;
              }
          }
          if(minHyp == null) return false;
          setSelectedPoint(closest);
          mapView.invalidate();
          if(clickListener != null) clickListener.onClick(mPointList, closest);
          return true;
      }