У меня есть dataframe
, содержащий вложенные данные экологического обследования. Концептуальное описание данных - на «верхнем» уровне находится сайт обследования;внутри сайтов находятся n ловушки;в ловушках может быть поймано n животных.
Я хотел бы отобразить карту Leaflet
, показывающую маркеры, которые соответствуют верхнему уровню данных (то есть участкам обследования). Когда вы нажимаете на сайт опроса, он должен разветвляться и показывать маркеры каждой ловушки в пределах сайта опроса. При нажатии на ловушку, он должен затем отобразить список животных, пойманных в ловушке (на этом этапе будет нормально всплывающее окно Leaflet
).
Я понятия не имею, возможно ли это вообщев пределах R
Leaflet
, несмотря на многочисленные поиски в Google и / или SO. Я нашел одно потенциальное решение Javascript , но я не знаю, перешло ли оно точно для решения проблемы, с которой я столкнулся. Однако, по крайней мере, наведение на маркер и отображение вложенных маркеров - это та функция, которая мне нужна при просмотре traps на сайтах .
Я включил ниже пример вложенного фрейма данных некоторых фиктивных данных, а также скелеты Leaflet
представ. В фиктивных данных для простоты я назначил каждому site
один и тот же широту / долготу. При нажатии на любой site
(001, 002, 003) ловушки будут разветвляться с этого сайта. На сайте 001 есть только 1 уникальная ловушка (ID = 001-001), но на сайте 2 есть две уникальные ловушки (002-001 и 002-002). На сайте 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")))
Надеясь на решение проблемы - любая помощь будет очень признательна.