闪亮的传单-高亮多边形

Pro*_*nob 4 r leaflet shiny

我有一个简单的闪亮应用程序,上面只有一个下拉列表,列出了阿富汗各地区,并且有相同的传单地图。 在此处输入图片说明

可以通过以下链接访问形状文件-使用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)
Run Code Online (Sandbox Code Playgroud)

我想要一个功能,当我从下拉列表中选择一个区域时,该区域的边框填充会发生变化,而setView函数会使该区域成为焦点。有人可以帮我解决代码吗?我看了这篇文章,但意义不大。

Nic*_*icE 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")
    }
  })
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以尝试在addPolylines中将layerId更改为group。 (2认同)