我正在使用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 函数,有时候,给我太多的功能,例如:我搜索一个特定的位置,我得到三个功能,但只有第三个有正确的值,这两个首先有来自旁边的图层的值。
好的值是174而不是181,颜色应该是暗的。
这是 queryrenderedfeatures 结果:
0 = {Feature@6242} : {"value":181}
1 = {Feature@6243} : {"value":181}
2 = {Feature@6244} : {"value":174}
我如何知道应该使用哪个功能? MapBox“知道”,因为显示层的颜色是正确的。
非常感谢你读过我。