R Leaflet 中的嵌套标记
Nested Markers in R Leaflet
我有一个 dataframe
包含嵌套生态调查数据。数据的概念描述 - 在 'top' 级别是一个调查站点;站点内有 n 个陷阱;在陷阱中可以捕获 n 只动物。
我想显示一张 Leaflet
地图,显示对应于数据顶级(即调查站点)的标记。当您单击调查站点时,它应该呈扇形展开并显示调查站点内 每个陷阱的标记。单击陷阱时,它应该会显示陷阱中捕获的动物列表(此时常规 Leaflet
弹出窗口就可以了)。
我不知道这在 R
Leaflet
中是否可行,尽管对 Google and/or SO 进行了多次搜索。我确实找到了 one potential Javascript solution,但我不知道它是否会准确地转换为解决我面临的问题。然而,至少,将鼠标悬停在标记上并显示嵌套标记的行为是我在 sites[=35] 中查看 traps 时所追求的功能=].
我在下面包含了一些虚拟数据的示例嵌套数据框,以及准系统 Leaflet
reprex。在虚拟数据中,为简单起见,我为每个 site
分配了相同的 lat/lon。单击任何 site
(001、002、003)时,陷阱将从该站点散开。在 Site 001 只有 1 个独特的陷阱(ID = 001-001),但 Site 2 有两个独特的陷阱(002-001 和 002-002)。 Site 003 只有一个陷阱。
library(leaflet)
library(tidyverse)
x<-as_tibble(data.frame(site = c("001", "001", "001", "002", "002", "002", "003"),
trap = c("001-001", "001-001", "001-001", "002-001", "002-001", "002-002", "003-001"),
animal = c("001-001-001", "001-001-002", "001-001-003", "002-001-001", "002-001-002", "002-002-003", "003-001-001"),
lat = c(51.1, 51.1, 51.1, 52.4, 52.4, 52.4, 51.5),
lon = c(-1.1, -1.1, -1.1, -1.7, -1.7, -1.7, -1.2)))
leaflet() %>%
addProviderTiles(providers$OpenStreetMap, options = providerTileOptions(noWrap = TRUE), group = "Open Street Map") %>%
setView(lng = -1.900796, lat = 52.479380, zoom = 7) %>%
addLayersControl(baseGroups = c("Open Street Map")))
希望有可能的解决方案 - 非常感谢任何帮助。
addCircleMarkers
函数中有一个创建集群 (clusterOptions = TRUE
) 的选项。
我不确定下面的代码是否生成了您想要的结果,但它可能会帮助您进行下一步。
leaflet() %>%
addProviderTiles(providers$OpenStreetMap, options = providerTileOptions(noWrap = TRUE), group = "Open Street Map") %>%
setView(lng = -1.900796, lat = 52.479380, zoom = 7) %>%
addLayersControl(baseGroups = c("Open Street Map")) %>%
addCircleMarkers(data = x, lng = ~lon, lat = ~lat, clusterOptions = TRUE,
popup = paste("<b>Site:</b>", x$site, "<br>",
"<b>lon:</b>", x$lon, "<br>",
"<b>lat:</b>", x$lat, "<br>",
"<b>trap:</b>", x$trap, "<br>",
"<b>animal:</b>", x$animal))
我添加了弹出窗口来跟踪哪个标记是哪个,但是如果视觉上更具吸引力,您可以使用颜色或形状做一些事情。
附加说明:如您所见,我已经使用一些 html 脚本创建了弹出窗口,用于格式化 (<b></b>
) 和换行符 ( <br>
)。如果需要,您可以在这些弹出窗口中使用其他 html 技巧,它通常有效并且高度可定制。
但是,leafpop
包可能是在弹出窗口中添加表格、图像和图形的更快方法。
我有一个 dataframe
包含嵌套生态调查数据。数据的概念描述 - 在 'top' 级别是一个调查站点;站点内有 n 个陷阱;在陷阱中可以捕获 n 只动物。
我想显示一张 Leaflet
地图,显示对应于数据顶级(即调查站点)的标记。当您单击调查站点时,它应该呈扇形展开并显示调查站点内 每个陷阱的标记。单击陷阱时,它应该会显示陷阱中捕获的动物列表(此时常规 Leaflet
弹出窗口就可以了)。
我不知道这在 R
Leaflet
中是否可行,尽管对 Google and/or SO 进行了多次搜索。我确实找到了 one potential Javascript solution,但我不知道它是否会准确地转换为解决我面临的问题。然而,至少,将鼠标悬停在标记上并显示嵌套标记的行为是我在 sites[=35] 中查看 traps 时所追求的功能=].
我在下面包含了一些虚拟数据的示例嵌套数据框,以及准系统 Leaflet
reprex。在虚拟数据中,为简单起见,我为每个 site
分配了相同的 lat/lon。单击任何 site
(001、002、003)时,陷阱将从该站点散开。在 Site 001 只有 1 个独特的陷阱(ID = 001-001),但 Site 2 有两个独特的陷阱(002-001 和 002-002)。 Site 003 只有一个陷阱。
library(leaflet)
library(tidyverse)
x<-as_tibble(data.frame(site = c("001", "001", "001", "002", "002", "002", "003"),
trap = c("001-001", "001-001", "001-001", "002-001", "002-001", "002-002", "003-001"),
animal = c("001-001-001", "001-001-002", "001-001-003", "002-001-001", "002-001-002", "002-002-003", "003-001-001"),
lat = c(51.1, 51.1, 51.1, 52.4, 52.4, 52.4, 51.5),
lon = c(-1.1, -1.1, -1.1, -1.7, -1.7, -1.7, -1.2)))
leaflet() %>%
addProviderTiles(providers$OpenStreetMap, options = providerTileOptions(noWrap = TRUE), group = "Open Street Map") %>%
setView(lng = -1.900796, lat = 52.479380, zoom = 7) %>%
addLayersControl(baseGroups = c("Open Street Map")))
希望有可能的解决方案 - 非常感谢任何帮助。
addCircleMarkers
函数中有一个创建集群 (clusterOptions = TRUE
) 的选项。
我不确定下面的代码是否生成了您想要的结果,但它可能会帮助您进行下一步。
leaflet() %>%
addProviderTiles(providers$OpenStreetMap, options = providerTileOptions(noWrap = TRUE), group = "Open Street Map") %>%
setView(lng = -1.900796, lat = 52.479380, zoom = 7) %>%
addLayersControl(baseGroups = c("Open Street Map")) %>%
addCircleMarkers(data = x, lng = ~lon, lat = ~lat, clusterOptions = TRUE,
popup = paste("<b>Site:</b>", x$site, "<br>",
"<b>lon:</b>", x$lon, "<br>",
"<b>lat:</b>", x$lat, "<br>",
"<b>trap:</b>", x$trap, "<br>",
"<b>animal:</b>", x$animal))
我添加了弹出窗口来跟踪哪个标记是哪个,但是如果视觉上更具吸引力,您可以使用颜色或形状做一些事情。
附加说明:如您所见,我已经使用一些 html 脚本创建了弹出窗口,用于格式化 (<b></b>
) 和换行符 ( <br>
)。如果需要,您可以在这些弹出窗口中使用其他 html 技巧,它通常有效并且高度可定制。
但是,leafpop
包可能是在弹出窗口中添加表格、图像和图形的更快方法。