我正在使用Android版MapBox SDK在地图顶部显示geojson文件。

从geojson的“功能”中,我创建了一些“ 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);
}


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

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


我的问题

queryRenderedFeatures函数,有时会给我返回太多的功能。例如:我搜索一个特定的位置,我得到了三个功能,但是只有第三个具有正确的值,两个第一个具有紧邻图层的值。

例子

android - MapBox queryRenderedFeatures返回的值过多-LMLPHP

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

这是queryrenderedfeatures结果:

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




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

非常感谢您阅读我的内容。

最佳答案

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

07-27 19:19