【问题标题】:Nested Markers in R LeafletR传单中的嵌套标记
【发布时间】: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")))

希望有可能的解决方案 - 非常感谢任何帮助。

【问题讨论】:

    标签: r r-leaflet


    【解决方案1】:

    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))
    

    我添加了弹出窗口以跟踪哪个标记是哪个,但如果颜色或形状更具视觉吸引力,您可以做一些事情。

    附加说明:如您所见,我创建了带有一些用于格式化 (&lt;b&gt;&lt;/b&gt;) 和换行符 (&lt;br&gt;) 的 html 脚本的弹出窗口。如果需要,您可以在这些弹出窗口中使用其他 html 技巧,它通常有效并且高度可定制。 但是,leafpop 包可能是在弹出窗口中添加表格、图像和图表的更快方法。

    【讨论】:

    • 嗨劳拉,感谢您的回答;这几乎正​​是我所需要的!也感谢 HTML 弹出窗口代码!
    猜你喜欢
    • 1970-01-01
    • 2014-11-25
    • 2016-10-18
    • 2010-09-06
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多