public Recordset HitTest(DatasetVector datasetVector, float x, float y) {
    final float tolerance = dip2px(10.0f);

    // 地理范围和手机屏幕的坐标是相反的
    Point lb = new Point((int) (x - tolerance), (int) (y + tolerance));
    Point rt = new Point((int) (x + tolerance), (int) (y - tolerance));
    Point2D leftBottom = mMapControl.getMap().pixelToMap(lb);
    Point2D rightTop = mMapControl.getMap().pixelToMap(rt);

    // 投影转换
    leftBottom =
        mapShow.convertMapToDatasetPoint(leftBottom, datasetVector.getPrjCoordSys().getType());
    rightTop = mapShow.convertMapToDatasetPoint(rightTop, datasetVector.getPrjCoordSys().getType());

    // 构造屏幕当前点10像素范围的查询Bounds
    Rectangle2D queryBounds = new Rectangle2D(leftBottom, rightTop);

    QueryParameter param = new QueryParameter();
    param.setAttributeFilter("");
    param.setSpatialQueryObject(queryBounds);
    param.setSpatialQueryMode(SpatialQueryMode.INTERSECT);
    param.setCursorType(CursorType.DYNAMIC);
    // 空间和属性联合查询
    Recordset recordset = datasetVector.query(param);

    return recordset;
  }