我正在使用Mapbox-GL-JS构建一个Web应用程序,它使用Mapbox Studio平铺集将图层作为流域地图添加。然而,当我访问图层时,多个要素似乎接收到相同的ID。
这里提到了这是由于我的数据引起的,但是数据集中没有ID字段: https://www.dropbox.com/s/5ci0hosqakvdahx/townships.json?dl=0
在这里有一个示例演示了此问题。
map.on("mousemove", "gemeentes", function (e) {
if (e.features.length > 0) {
if (hoverGemeenteId) {
map.setFeatureState({
source: 'gemeentes-src',
sourceLayer: 'townships-0u4ffk',
id: hoverGemeenteId
}, {hover: false});
}
hoverGemeenteId = e.features[0].id;
console.log(hoverGemeenteId);
map.setFeatureState({
source: 'gemeentes-src',
sourceLayer: 'townships-0u4ffk',
id: hoverGemeenteId
}, {hover: true});
}
});
以下是项目示例内容:
https://docs.mapbox.com/mapbox-gl-js/example/hover-styles/当鼠标悬停在一个城镇上时,它会改变颜色,但由于有多个具有相同ID的城镇,因此多个区域会发光,而不仅仅是悬停的那一个。
编辑: 当我运行以下代码时:
const filtered = map.querySourceFeatures('gemeentes-src', {
sourceLayer: 'townships-0u4ffk',
filter: ['>=', ['id'], 0]
});
很清楚地显示有多个具有相同ID的特征,且没有一个ID超过249。就好像存在一个250的上限,新特征就从0开始。