Управляемый данными цвет кластера с mapboxgl - PullRequest
0 голосов
/ 17 сентября 2018

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

 map.addSource("data", {
    type: "geojson",
    data: url,
    cluster: true,
    clusterMaxZoom: 12, // Max zoom to cluster points on
    clusterRadius: 20 // Radius of each cluster when clustering points (defaults to 50)
});
map.addLayer({
        'id': 'population',
        'type': 'circle',
        'source': 'data',
        'paint': {
            // make circles larger as the user zooms from z12 to z22
            'circle-radius': {
                'base': 1.75,
                'stops': [[12, 2], [22, 180]]
            },
            // color circles by ethnicity, using a match expression
            // https://www.mapbox.com/mapbox-gl-js/style-spec/#expressions-match
            'circle-color': {
                'property': 'group',
                'type': 'categorical',
                stops: [
                ['1', 'rgba(252,141,98,0.5)'],
                ['2', 'rgba(141,160,203,0.5)'],
                ['3', 'rgba(141,160,203,0.5)'],
                ['4', 'rgba(141,160,203,0.5)'],
                ['5', 'rgba(141,160,203,0.5)'],
                ['6', 'rgba(141,160,203,0.5)'],
                //'4', '#3bb2d0',
                /* other 'rgba(102,194,165,0.1)'*/
                ]
            }
        }
    },'3d-buildings');

Теперь я также хотел бы, чтобы мои кластеры следовали некоторому цветному рисунку.Например, если кластеры содержат большую часть группы 1, тогда они получают цвет группы 1. То же самое для группы 2 и т. Д.

Но все, что я для точек кластера, это черные точки.Мне бы очень хотелось узнать, есть ли способ сделать это лучше.

Я следовал этому примеру и обновил его дополнительными "type":"categorical" в соответствии с требованиями новоговерсии mapboxgl.

Мои данные - это геойсон, который выглядит следующим образом:

{"type": "FeatureCollection", "features": [{"id": 1, "type": "Feature", "properties": {"group":1}, "geometry": {"type": "Point", "coordinates": [17.8304903812012, 59.1886524824444]}}

Кто-нибудь знает, как этого добиться с помощью mapbox?

Редактировать:

Два изображения, чтобы показать проблемы, которые у меня есть в настоящее время.Первое изображение - это, по сути, моя некластеризованная визуализация, в которой вы видите два разных цвета на основе двух групп.

Второе изображение - это кластеризованная версия, в которой отображаются только черные кластеры.Я хотел бы, чтобы кластеры с большей частью группы 1 были оранжевыми, а кластеры с большей частью группы 2 - зелеными.

Image 1, without clusters Image 2, rendering with clusters


Редактировать

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

...