Query map features
Maps SDK 允许您查询地图图层并返回一个 GeoJSON 特征列表,其中包含关于该特性的几何形状和属性的信息。例如,用户可以通过点击地图查询地图特性,并返回当时作为 GeoJSON 特征存在的任何 POIs。然后,您可以访问特征中的属性,包括作为字符串的 POI 名称。查询地图并不总是返回您正在寻找的信息。可以接收包含0个特征的列表。
查询工作原理
您可以在地图中查询某个点 Point 或边界框 BoundingBox 中存在的特征。除了层之外,还可以查询源以获取与查询匹配的特定信息,无论这些项是否显示在地图上。
由于特征来自 vector tile(或内部转换为 tiles 的 GeoJSON 数据),查询可能会分割特征几何图形,或者跨平铺边界复制它们。因此,特征可能会在查询结果中出现多次。
例如,当通过边界框在包含跨多个tile的高速公路的区域中进行查询时,查询将为高速公路跨的每个tile返回一个单独的特性。每个特征的几何形状将被限制在存在于该块上的高速公路部分。类似地,由于平铺缓冲,靠近平铺边界的点特征可能出现在多个平铺中。
查询显示功能
使用 queryRenderedFeatures 返回当前在设备上呈现的所有地图特性。功能必须在设备的视图中可见,并在访问之前完全呈现。
查询一个点
queryRenderedFeatures 只接受屏幕像素值,而不接受 LatLng ,因此在许多情况下,您需要将屏幕位置转换为地理位置。在下面的示例中,当单击地图时,它提供了一个LatLng,用于获取地图上该点的特性:
@Override
public void onMapClick(@NonNull LatLng point) {
// 将LatLng坐标转换为屏幕像素,只查询呈现的特性。
final PointF pixel = mapboxMa