Я пытаюсь нарисовать круг, цвет которого зависит от атрибута «группа» в моем геойсоне.Я следовал простому примеру с этими цветами:
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 - зелеными.
Редактировать
Теперь я также видел, что мне, возможно, придется делать это со сверхскоплением, но единственный правильный пример , которыйЯ обнаружил, что сломан (перестает работать, когда мы слишком сильно масштабируем и точки всегда сгруппированы).Также кажется, что это использует старые функции mapbox, которые теперь устарели.Кто-нибудь знает, как легко сделать это на приведенном примере?