MapBox queryRenderedFeatures返回的值太多

时间:2017-02-17 11:02:59

标签: android mapbox geojson

我正在使用MapBox SDK for Android在地图上显示geojson文件。

从geojson“features”,我创建了一些“fillLayer”,它们中的每一个都与geojson中属性对象的值相关联。 我用对应于该值的颜色填充每个图层。

要从特定的本地化获取此值,我使用API​​调用: “queryRenderedFeatures”

以下是我如何从以前创建的geojsonSource对象创建图层:

for (int i=0; i < list_value_geojson.size(); i++){
    Map.Entry<Integer, GeoJsonSource> entry = list_value_geojson.get(i);
        mapboxMap.addSource(entry.getValue());
        FillLayer fillLayer = new FillLayer(entry.getValue().getId(), entry.getValue().getId());
        fillLayer.setProperties(PropertyFactory.fillColor(Color.parseColor(hashMapColors.get(entry.getKey()))));
        mapboxMap.addLayer(fillLayer);
}

这里,我如何使用“Location”对象中的queryRenderedFeatures:

final PointF pixel = my_mapboxMap.getProjection().toScreenLocation(new LatLng(location.getLatitude(), location.getLongitude()));
List<Feature> features = my_mapboxMap.queryRenderedFeatures(pixel);

我的问题

queryRenderedFeatures 函数,有时候,给我太多的功能,例如:我搜索一个特定的位置,我得到三个功能,但只有第三个有正确的值,这两个首先有来自旁边的图层的值。

为例

Wrong value

好的值是174而不是181,颜色应该是暗的。

这是 queryrenderedfeatures 结果:

0 = {Feature@6242} : {"value":181}
1 = {Feature@6243} : {"value":181}
2 = {Feature@6244} : {"value":174}

问题

我如何知道应该使用哪个功能? MapBox“知道”,因为显示层的颜色是正确的。

非常感谢你读过我。

1 个答案:

答案 0 :(得分:1)

您可以通过将图层ID作为参数传递到queryRenderedFeatures方法来限制您要查询的图层。结帐this example