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