使用r软件包leaflet绘制交互式世界地图时,具有完全相同坐标的数据标记会重叠在一起。
请参见下面的示例:
library(leaflet)
Data <- structure(list(Name = structure(1:3, .Label = c("M1", "M2", "M3"), class = "factor"), Latitude = c(52L, 52L, 51L), Longitude = c(50L, 50L, 50L), Altitude = c(97L, 97L, 108L)), .Names = c("Name", "Latitude", "Longitude", "Altitude"), class = "data.frame", row.names = c(NA, -3L))
leaflet(data = Data) %>%
addProviderTiles("Esri.WorldImagery", options = providerTileOptions(noWrap = TRUE)) %>%
addMarkers(~Longitude, ~Latitude, popup = ~as.character(paste(sep = "",
"<b>",Name,"</b>","<br/>", "Altitude: ",Altitude)))
有可能通过集群选项显示所有坐标,但这远远不是我的目标。我不想要聚类,只有当完全缩放时才显示重叠的标记。当完全缩放时,背景地图变为灰色(“地图数据尚不可用”)。我想要的是重叠标记的蜘蛛视图,但在完全缩放时不需要。
请见下面的示例:
leaflet(data = Data) %>%
addProviderTiles("Esri.WorldImagery", options = providerTileOptions(noWrap = TRUE)) %>%
addMarkers(~Longitude, ~Latitude, popup = ~as.character(paste(sep = "",
"<b>",Name,"</b>","<br/>", "Altitude: ",Altitude)), clusterOptions = markerClusterOptions())
我找到了一些关于我想要的解决方案的文献,但我不知道如何在r leaflet代码/包中实现它。
https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet
另外,如果有其他处理重叠标记的方法,请随意回答。(例如在一个弹出窗口中包含多个标记的信息)
sf
包含sf_jitter
函数,使得这个任务变得更加简单! - D. Woods