我有一个向量瓷砖层,面积从100万英亩到不到20英亩,大约有120个特征。我有鼠标盖的问题,大的特征遮挡了它们后面的小瓷砖。
我认为这与源数据有关,源数据是按位置名称按字母顺序排序的。碰巧的是,“卡森国家森林”,这是大,是顶部的“瓦勒维达尔”,这是小得多。所以我不能通过鼠标交互来选择后者。
是按面积按升序排序特性并重新导入数据集的解决方案,还是在Mapbox中我可以做一些事情来交换它们的位置?
谢谢!

发布于 2020-09-24 03:21:20
你的问题有两种解决方案。
我假设你的多边形有一个area属性。
在鼠标上找到最小的多边形
首先,大多边形实际上不会阻止小多边形触发“鼠标操作”事件。该事件由鼠标下面的所有功能触发。所以你可以故意选择最小的。
map.on('mouseover', e => {
e.features.sort((a, b) => a.properties.area - b.properties.area);
const smallestFeature = e.features[0];
});如果您没有area属性,则此方法也有效--您可以使用Turf动态计算它,尽管它在瓷砖边界上是不正确的。
使用fill-sort-key对多边形进行排序
另一种方法是在层定义中使用fill-sort-key属性:
layout: {
'fill-sort-key': ['-', ['get', 'area']]
}https://stackoverflow.com/questions/64032432
复制相似问题