Mapbox Layer имеет дубликаты ID - PullRequest
0 голосов
/ 07 июня 2019

Я создаю веб-приложение с помощью 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.

...