首页 > 解决方案 > R+Shiny+leaflet:根据缩放级别在地图上聚合值

问题描述

请考虑文章末尾的小例子。我只是在地图上放了很多标记。我希望能够做两件事:

  1. 将一个值(只是一个数字)与地图上的每个标记相关联。当我用鼠标悬停在标记上时,数字应该是可见的。

  2. 为简单起见,假设我们将值 1 与每个标记相关联。如果根据缩放级别适当地汇总总数(附加到标记的各个值的总和),那就太好了。例如,当我缩小时,我应该看到一个值为 40 的标记,然后逐渐增加更多具有相关值的标记,这些值的总和将始终为 40。

有人知道如何实现吗?谢谢!

谢谢!

library(shiny)
library(leaflet)

r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()

ui <- fluidPage(
  leafletOutput("mymap"),
  p(),
  actionButton("recalc", "New points")
)

server <- function(input, output, session) {

  points <- eventReactive(input$recalc, {
    cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)
  }, ignoreNULL = FALSE)

  output$mymap <- renderLeaflet({
    leaflet() %>%
      addProviderTiles(providers$Stamen.TonerLite,
        options = providerTileOptions(noWrap = TRUE)
      ) %>%
      addMarkers(data = points())
  })
}

shinyApp(ui, server)

reprex 包(v0.3.0)于 2020 年 9 月 16 日创建

标签: rshinymapsr-leaflet

解决方案


您必须自己进行聚合,然后使用不同的组 ID 添加它。然后,你可以处理在哪个缩放级别上显示哪个组groupOptions。有关更多信息,您可以查看此答案


推荐阅读