Есть несколько способов добавить круги на вашу карту, основываясь на свойствах ваших данных. Рекомендуемый подход заключается в добавлении слоя circle
, где circle-color
свойства paint
определяется выражением has
:
map.addLayer({
'id': 'colored-circles',
'type': 'circle',
'source': 'points',
'paint': {
'circle-radius': 10,
/**
* color circles by the refill property, using a 'case' and 'has' expression
* https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#case
* https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#has
*/
'circle-color': [
'case',
['has', 'refill'],
'#fbb03b',
/* other */ '#3bb2d0'
]
}
});
Полные подробности реализации можно найти в этом JSFiddle : https://jsfiddle.net/3r8zxf17/3/. Добавьте свой токен доступа к Mapbox, где это указано, чтобы просмотреть получившуюся карту и круги.
Однако при вышеупомянутом подходе круги будут находиться в одном слое. Если вы хотите, чтобы все объекты со свойством refill
находились в отдельном слое, вы можете добавить на карту два слоя, как показано ниже, используя свойство circle-opacity
.
/* Add a circle layer for features with the 'refill' property. */
map.addLayer({
'id': 'has-refill',
'type': 'circle',
'source': 'points',
'paint': {
'circle-radius': 10,
'circle-color': '#fbb03b',
'circle-opacity': [
'case',
['has', 'refill'],
1,
/* other */ 0
]
}
});
/* Add a circle layer for features without the 'refill' property. */
map.addLayer({
'id': 'no-refill',
'type': 'circle',
'source': 'points',
'paint': {
'circle-radius': 10,
'circle-color': '#3bb2d0',
'circle-opacity': [
'case',
['has', 'refill'],
0,
/* other */ 1
]
}
});
Полный код находится в этом JSFiddle: https://jsfiddle.net/9apcge3n/. Вы также можете добавить свой токен доступа Mapbox, чтобы просмотреть результат здесь.
Вот снимок экрана визуального результата для обоих указанных выше подходов: