用聚类标记制作传单地图。markerClusterOptions()中是否有一个参数可根据缩放级别控制组数?例如,在默认缩放下,我的地图仅显示1800个观测值的3个群集。但是,如果在默认缩放下至少有两倍的群集,那将是很好的。
我不想使用freezeAtZoom,因为这样用户将无法放大并看到每个观察结果。
数据来自:https : //data.sccgov.org/Public-Safety/Crime-Reports/n9u6-aijz/data
library(tidyverse);library(leaflet);library(lubridate)
crime_reports <- read_csv("Crime_Reports.csv")
car_burglaries <- crime_reports %>% filter(incident_type_primary=="VEHICLE BURGLARY") %>%
mutate(datetime=mdy_hms(incident_datetime)) %>%
arrange(datetime)
leaflet(car_burglaries) %>% addTiles() %>%
addMarkers(
popup = ~paste(as.character(incident_datetime),",","Case number",as.character(case_number)),
label = ~as.character(address_1),
clusterOptions = markerClusterOptions()
)
Run Code Online (Sandbox Code Playgroud)
R leaflet包文档提到集群是通过一个名为Leaflet javascript库的插件来完成的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()
)
Run Code Online (Sandbox Code Playgroud)
半径较小=群集更多:
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)
)
Run Code Online (Sandbox Code Playgroud)
半径越大=群集越少:
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)
)
Run Code Online (Sandbox Code Playgroud)
如果您具有将鼠标悬停在标记上时显示覆盖区域的默认设置,则应有助于确定所需的半径。
值得注意的是,当前正在显示地图时,半径以像素为单位。这意味着显示的簇数将取决于地图的大小(以像素为单位)。如果您需要更复杂的东西,例如将半径设置为与窗口大小成比例,以便用户可以在调整窗口大小的同时将簇数保持恒定,则可以编写一个函数以将该半径作为变量传递,也可以编写它在javascript中并以某种方式传递。我将其留给其他职位。
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |