我正在使用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函数,有时会给我返回太多的功能。例如:我搜索一个特定的位置,我得到了三个功能,但是只有第三个具有正确的值,两个第一个具有紧邻图层的值。
例子
好的值是174,而不是181,颜色应该是深褐色。
这是queryrenderedfeatures结果:
0 = {Feature@6242} : {"value":181}
1 = {Feature@6243} : {"value":181}
2 = {Feature@6244} : {"value":174}
题
我如何知道应该使用哪个功能?
MapBox“知道”,因为显示层的颜色正确。
非常感谢您阅读我的内容。
最佳答案
您可以通过在queryRenderedFeatures
方法中将图层ID作为参数传递来限制要查询的图层。结帐this example。