Может ли mapbox принимать переменную в качестве значения свойства рисования? - PullRequest
0 голосов
/ 19 сентября 2018

Итак, давайте представим, что у меня есть событие масштабирования, которое обновляет текущее значение моего увеличения на карте:

var map_zoom = 8
//Some more code to set up the map
map.on('zoom', function() {
        map_zoom = map.getZoom();
}

Теперь, если у меня есть слой, который рисует круг, как это:

map.addLayer({
        'id': 'population',
        'type': 'circle',
        'source': 'data',
        'paint': {
            'circle-radius': map_zoom,
            'circle-color': 'rgba(252,141,98,1)'

});

И другой слой, который рисует круг, как это:

map.addLayer({
            'id': 'population',
            'type': 'circle',
            'source': 'data',
            'paint': {
                'circle-color': 'rgba(252,141,98,1)'

    });

Какая разница между этими двумя?Я добавил в свой пример кода событие onClick, чтобы получить свойства рисования отдельных кругов, но кажется, что в обоих случаях 'circle-radius' является фиксированным значением.То есть, даже в моем первом случае, когда я установил его в зависимости от переменной, которая обновляется с каждым уровнем масштабирования, его значение фиксировано даже при разных уровнях масштабирования.Это нормально?

Являются ли выражения mapbox единственным способом динамического изменения значения слоя или некоторых свойств рисования?

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете изменить поведение свойств краски, изменив свойства объектов (изменить источник) или используя метод setPaintProperty:

map.on('zoom', function() {
  var map_zoom = map.getZoom() * 5;
  map.setPaintProperty('total', 'circle-radius', map_zoom);
})

[https://jsfiddle.net/pdoa7kLw/]

...