【发布时间】:2020-12-08 09:17:43
【问题描述】:
我想自动检测哪个多边形位于地图的中心。当用户在地图中移动时,它应该会动态更新。
目前我找不到一种方法来反向查找哪些多边形上有一些坐标。
我想我可以用 shinyjs 或 javascript 模拟一个input$map_shape_click,然后得到 input$map_shape_click$id,但在我使用这个解决方案之前,我想确保没有其他方法。
这是一个最小的例子
library(leaflet)
library(shiny)
# data source : https://biogeo.ucdavis.edu/data/gadm3.6/Rsp/gadm36_FRA_2_sp.rds
cities <- readRDS(file = "../gadm36_FRA_2_sf.rds")
ui <- fluidPage(leafletOutput("map"))
server <- function(input, output, session) {
rv <- reactiveValues()
output$map <- renderLeaflet({
leaflet() %>%
addProviderTiles(provider = providers$CartoDB.Positron) %>%
setView(lng = 1, lat = 45, zoom = 8) %>%
addPolygons(data = cities,layerId = ~NAME_2,label = ~NAME_2)
})
observeEvent(input$map_bounds,{
rv$center <- c(mean(input$map_bounds$north, input$map_bounds$south), mean(input$map_bounds$east, input$map_bounds$west))
# how can I detect on which polygon the center is ?
})
}
shinyApp(ui = ui, server = server)
【问题讨论】: