Пакет документов R leaflet
упоминает , что кластеризация осуществляется через плагин для библиотеки javascript Leaflet под названием Leaflet.markercluster
, здесь задокументировано . Многие функции в пакете R leaflet
упоминают, что дополнительные аргументы в ...
будут переданы базовым библиотекам javascript, но для их использования полезно знать, как обращаться с документами по javascript. Что касается кластеризации, вы были правы, заметив, что markerClusterOptions
передаст более сложные параметры.
Документы markercluster
говорят, что есть аргумент maxClusterRadius
:
Максимальный радиус, который кластер будет охватывать от центрального маркера (в пикселях). По умолчанию 80. Уменьшение составит больше, меньшие кластеры. Вы также можете использовать функцию, которая принимает масштаб текущей карты и возвращает максимальный радиус кластера в пикселях.
Так что я возился с парой вариантов. Скриншоты с моей панели просмотра RStudio:
Радиус по умолчанию 80 пикселей:
leaflet(car_burglaries) %>%
addTiles() %>%
addMarkers(
popup = ~paste(as.character(incident_datetime),",","Case number",as.character(case_number)),
label = ~as.character(address_1),
clusterOptions = markerClusterOptions()
)
![default radius](https://i.stack.imgur.com/Fh40y.jpg)
Меньший радиус = больше кластеров:
leaflet(car_burglaries) %>%
addTiles() %>%
addMarkers(
popup = ~paste(as.character(incident_datetime),",","Case number",as.character(case_number)),
label = ~as.character(address_1),
clusterOptions = markerClusterOptions(maxClusterRadius = 50)
)
![smaller radius](https://i.stack.imgur.com/S84ho.jpg)
Больший радиус = меньше кластеров:
leaflet(car_burglaries) %>%
addTiles() %>%
addMarkers(
popup = ~paste(as.character(incident_datetime),",","Case number",as.character(case_number)),
label = ~as.character(address_1),
clusterOptions = markerClusterOptions(maxClusterRadius = 200)
)
![bigger radius](https://i.stack.imgur.com/1KtOB.jpg)
Если у вас есть настройка по умолчанию, показывающая зону покрытия при наведении на маркер, это должно помочь определить необходимый радиус.
Стоит отметить, что радиус измеряется в пикселях, так как карта отображается в данный момент. Это означает, что количество отображаемых кластеров будет зависеть от размера карты в пикселях. Если вам нужно что-то более сложное, например, установить радиус в соответствии с размером окна, чтобы пользователи могли изменять размер окна, сохраняя количество кластеров примерно постоянным, вы можете написать функцию для передачи этого радиуса в виде переменной или, возможно, записать ее. в JavaScript и передать его как-нибудь. Я оставлю это для другого поста.