Javascript Mapbox图层具有重复ID

Javascript Mapbox图层具有重复ID,javascript,mapbox,mapbox-gl-js,Javascript,Mapbox,Mapbox Gl Js,我正在用Mapbox GL JS构建一个web应用程序,它使用Mapbox studio tilesets将层添加为Choropleth。但是,当我访问该层时,多个功能似乎接收到相同的ID 这里提到这是由于我的数据,但数据集中没有ID字段: 以下是项目示例: 每当城镇悬停时,它都会改变颜色,但是由于有多个城镇具有相同的ID,因此多个区域会亮起,而不仅仅是悬停的区域 编辑: 当我运行以下代码时: const filtered = map.querySourceFeatures('gemee

我正在用Mapbox GL JS构建一个web应用程序,它使用Mapbox studio tilesets将层添加为Choropleth。但是,当我访问该层时,多个功能似乎接收到相同的ID

这里提到这是由于我的数据,但数据集中没有ID字段:

以下是项目示例:

每当城镇悬停时,它都会改变颜色,但是由于有多个城镇具有相同的ID,因此多个区域会亮起,而不仅仅是悬停的区域

编辑: 当我运行以下代码时:

const filtered = map.querySourceFeatures('gemeentes-src', {
        sourceLayer: 'townships-0u4ffk',
        filter: ['>=', ['id'], 0]
    });

它清楚地表明,有多个功能具有相同的id,没有id超过249。几乎就好像有一个250上限,新功能又从0开始。

添加源代码时,您可以使用选项
promoteId
根据属性为功能分配唯一ID

例如():


我不知道为什么,但JSBin只是为我呈现了一个白色页面。我可以看到它正在获取Mapbox资源,但没有显示任何内容。谢谢!应该说
“promoteId”:{“original”:“country”}
“original”这里是一个“源层”
const filtered = map.querySourceFeatures('gemeentes-src', {
        sourceLayer: 'townships-0u4ffk',
        filter: ['>=', ['id'], 0]
    });
map.addSource('counties', {
    "type": "vector",
    "url": "mapbox://mapbox.82pkq93d",
    "promoteId": {"original": "COUNTY"}
});
...
map.setFeatureState({
    source: 'counties', 
    sourceLayer: 'original', 
    id: 'Marin County' // reference a feature by a county name for feature-state
}, {hover: true});