Mapbox - обновить управляемый данными стиль в сеансе - PullRequest
0 голосов
/ 04 мая 2018

Существует несколько учебных пособий по стилю, управляемому данными, на сайте Mapbox, но ни одно из них не рассматривает, как обновить существующий стиль, управляемый данными (созданный в Mapbox Studio) во время сеанса. Например, скажем, я хочу создать набор из штатов США, раскрашенных по площади. Затем пользователь выбирает «цвет по совокупности», и цвет состояний обновляется соответственно.

Я нашел несколько ресурсов , которые позволили бы достичь этого путем добавления геоджона всех состояний и затем выполнения map.addLayer, однако геоджон, с которым я работаю (переписные участки), слишком массивный, чтобы добавить его во внешний интерфейс, поэтому мне нужно было изменить управляемый данными стиль существующего слоя (или найти аналогичный способ обхода). Данные должны быть постоянным набором плиток из mapbox studio, при этом пользователь должен обновлять окраску данных на основе свойств geojson.

Любые идеи или примеры будут высоко оценены.

1 Ответ

0 голосов
/ 04 мая 2018

Обновление управляемых данными стилей во время выполнения является простым. Вы просто звоните map.setPaintProperty.

Я обычно реализую это с помощью одной функции, которая генерирует значение свойства. Примерно так:

function fillColorByPopulation(min, max) {
    return {
        property: 'pop',
        stops: [
            [min, 'red'],
            [max, 'blue']
        ],
        type: 'exponential'
    }
}
function updateStyle(prop) {
    if (prop === 'population') {
        map.setPaintStyle('regions', 'fill-color', fillColorByPopulation(data.minpopulation, data.maxpopulation));
    } else {
        map.setPaintStyle('regions', 'fill-color', 'transparent');
    }
}

Обычно я не создаю стили, управляемые данными, в Mapbox Studio. Проще создать их все в Javascript.

...