【发布时间】:2020-02-23 22:05:06
【问题描述】:
我有一个包含嵌套生态调查数据的dataframe。数据的概念描述——在“顶层”是一个调查站点;站点内有 n 个陷阱;在陷阱内可能会捕获 n 只动物。
我想显示一张Leaflet 地图,其中显示对应于数据顶层(即调查地点)的标记。当您单击调查站点时,它应该呈扇形散开并显示调查站点内的每个陷阱的标记。当点击陷阱时,它应该会显示在陷阱中捕获的动物的列表(此时常规的Leaflet 弹出窗口就可以了)。
我不知道这在R Leaflet 中是否可行,尽管对 Google 和/或 SO 进行了多次搜索。我确实找到了one potential Javascript solution,但我不知道它是否会完全转化为解决我面临的问题。然而,至少,悬停在标记上并显示嵌套标记的行为是我在 sites 中查看 traps 时所追求的功能。
我在下面包含了一些虚拟数据的示例嵌套数据框,以及一个准系统Leaflet reprex。在虚拟数据中,为简单起见,我为每个site 分配了相同的纬度/经度。单击任何site(001、002、003)时,陷阱将从该站点散开。在站点 001 只有 1 个独特的陷阱(ID = 001-001),但站点 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")))
希望有可能的解决方案 - 非常感谢任何帮助。
【问题讨论】: