Я создаю веб-приложение с помощью Mapbox-GL-JS, и оно использует наборы мозаики студии mapbox для добавления слоев в виде слоев.Однако, когда я получаю доступ к слою, несколько объектов, кажется, получают один и тот же идентификатор.
https://github.com/mapbox/mapbox-gl-js/issues/8284 Здесь было упомянуто, что это из-за моих данных, однако в наборе данных нет поля идентификатора: https://www.dropbox.com/s/5ci0hosqakvdahx/townships.json?dl=0
https://jsbin.com/cuhewomepo/1/edit?html,js,output
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/
Всякий раз, когда поселение находится в городе, оно меняет цвет, однако, посколькунесколько населенных пунктов с одинаковым идентификатором, вместо того, чтобы зависать, загораются несколько областей.
РЕДАКТИРОВАТЬ: Когда я запускаю следующий код:
const filtered = map.querySourceFeatures('gemeentes-src', {
sourceLayer: 'townships-0u4ffk',
filter: ['>=', ['id'], 0]
});
Это ясно показывает, что естьнесколько функций с одинаковым идентификатором и без идентификатора превышают 249. Это похоже на ограничение 250, а новые функции просто начинаются с 0.