闪亮传单 - 高亮多边形

问题描述 投票:0回答:1

我有一个简单的闪亮应用程序,其中只有一个下拉列表,列出了阿富汗的地区和相同的传单地图。 enter image description here

可以通过此链接访问形状文件 - 使用 http://www.gadm.org/download

中的 AFG_adm2.shp

这是应用程序代码:

library(shiny)
library(leaflet)
library(rgdal)
library(sp)

afg <- readOGR(dsn = "data", layer ="AFG_adm2", verbose = FALSE, stringsAsFactors = FALSE)

ui <- fluidPage(
    titlePanel("Test App"),
    selectInput("yours", choices = c("",afg$NAME_2), label = "Select Country:"),
    leafletOutput("mymap")

)

server <- function(input, output){
  output$mymap <- renderLeaflet({
    leaflet(afg) %>% #addTiles() %>%
       addPolylines(stroke=TRUE, color = "#00000", weight = 1) 
  })
}

# Run the application 
shinyApp(ui = ui, server = server)

我想要这样的功能:当我从下拉列表中选择一个区域时,该区域的边框填充会发生变化,并且 setView 函数会将该区域置于焦点中。有人可以帮我解决代码吗?我看过this帖子,但不太明白它的意义。

r shiny r-leaflet
1个回答
5
投票
当用户选择一个地区时,您可以使用

leafletProxy

 更改地图。您可以在之前绘制的多边形顶部添加一个稍粗的红色多边形以突出显示它,并使用 
setView
 移动视图。

这是我要补充的:

proxy <- leafletProxy("mymap") observe({ if(input$yours!=""){ #get the selected polygon and extract the label point selected_polygon <- subset(afg,afg$NAME_2==input$yours) polygon_labelPt <- selected_polygon@polygons[[1]]@labpt #remove any previously highlighted polygon proxy %>% removeShape("highlighted_polygon") #center the view on the polygon proxy %>% setView(lng=polygon_labelPt[1],lat=polygon_labelPt[2],zoom=7) #add a slightly thicker red polygon on top of the selected one proxy %>% addPolylines(stroke=TRUE, weight = 2,color="red",data=selected_polygon,group="highlighted_polygon") } }) }
    
© www.soinside.com 2019 - 2024. All rights reserved.