使用map_shape_click在R flexdashboard中使用R Shiny leaflet突出显示单击的多边形

时间:2018-01-03 21:22:18

标签: r shiny leaflet flexdashboard

我有一个flexdashboard( .rmd 文件),其中有一个地图(多边形地图)。地图的数据源是ArcGIS shapefile。我能够使用 Shiny leaflet 在地图上制作Choropleths。除此之外,我还想在每次点击地图中的一个时突出显示一个多边形(突出显示多边形的板)。此外,显示点击多边形数据分布的条形图将显示在仪表板的右侧。但是,我无法突出显示多边形。当我点击闪亮的传单中的输入$ map_shape_click 时,多边形没有突出显示。请参阅下面的 R 代码。

library(shiny)
library(flexdashboard)
library(plotly)
library(dplyr)
library(rgdal)
library(sp)
library(leaflet) 
library(shiny)

CNT <- readOGR(dsn=path.expand("./ABC_Polygon"),layer="CNT10_ABM", GDAL1_integer64_policy = TRUE)
df_travel <- read.csv("./CNT_trip.csv")
CNT_Trip <- df_travel %>% 
        group_by(origcnt) %>%
        summarise(cnttrips=n())
cnt_mdata <- merge(CNT,CNT_Trip, by.x="CNT10", by.y="origcnt")

TAZ Level Travel
======================================================================

Column {data-width=650}
---------------------------------------------------------------------
### County trip map 

```{r}  

bins <- c(0, 50, 100, 300, 600, 1000, 2000, 5000, Inf)
pal <- colorBin("YlOrRd", domain = cnt_mdata$cnttrips, bins = bins)

renderLeaflet({
 map  <- leaflet(cnt_mdata)%>%
    addProviderTiles("CartoDB.Positron")%>%
    addPolygons(
            fillColor = ~pal(cnttrips),
            weight=0.1,
            opacity = 1,
            fillOpacity = 0.7,
            layerId = cnt_mdata$CNT10)%>%
      addLegend(position = 'bottomright', pal = pal, 
            values = cnt_mdata$cnttrips, title = 'Number of Trips')

 })

click_cnt <- eventReactive(input$map_shape_click, {

        x <- input$map_shape_click
        y <- x$id
        return(y)

 })


 observe({

  req(click_cnt()) # do this if click_cnt() is not null

  # Add the clicked cnt to the map in aqua, and remove when a new one 
  # is clicked
   map <- leafletProxy('map') %>%
      removeShape('selected') %>%
      addPolygons(data = cnt_mdata[cnt_mdata$CNT10 == click_cnt(), ], 
                  fillcolor = FALSE,
                  color = '#00FFFF', opacity = 1, layerId = 'selected')

    })

  # taz_data <- reactive({
  #   
  #     # Fetch data for the clicked tract
  #     return(df_travel[df_travel$origcnt == click_cnt(), ])
  # 
  #   })


  leafletOutput('map')  

```

CNT10 是数据 cnt_mdata CNT 文件中多边形的数字指示符。 origcnt 也是数据文件 CNT_Trip df_travel 中多边形的数字指示符。我在控制台中运行了上面的代码块,没有显示任何错误和警告。但是,当我通过单击RStudio中的“运行文档”运行 .rmd 文件时,它确实显示了等值区域图。但是当我点击多边形时,没有任何东西出现。我无法找出我的代码有什么问题。

0 个答案:

没有答案