Shiny / Leaflet - 突出显示地图上的特定区域

时间:2015-07-24 08:31:57

标签: shiny leaflet rstudio

我正在创建一个带有已定义区域的传单地图,我已经使用了当鼠标移过它时返回有关该区域的信息的事件,但现在我想使地图动态化并突出显示指针所在的多边形。我想我应该在observeEvent中使用leafletproxy(),但是现在我无法使它工作。

2 个答案:

答案 0 :(得分:0)

this之类的东西?它会变得有点复杂,但基本上你会想要添加一个函数,该函数作为参数是否应该加粗。在示例中,它将是drawStates()

简化的想法是:

  1. 渲染所有多边形(包括多边形A和B)。
  2. (将鼠标指针移到Polygon A上。)
  3. 重新创建鼠标所在的多边形A,但这一次使其变为粗体。
  4. (将鼠标指针移动到多边形B。)
  5. 重新创建多边形A并使其不粗体。
  6. 重新创建多边形B并使其变为粗体。
  7. 如果没有你的代码我就不能说其他话。

答案 1 :(得分:0)

我想过每次鼠标移过新的多边形时重新创建地图,但首先我不太了解addPolygons选项如何在传单中工作以及如何定义多边形(我使用的是包"地图"已经设计好了)。以下是构建地图的代码部分:

output$prodmap <- renderLeaflet({ 

  pal <- colorQuantile("Reds",domain = mapdata(),na.color = "grey", probs = 0.2)
  palleg <- colorNumeric("Reds",domain=mapdata(),na.color = "grey")

  map=leaflet(data = mapStates(),width =500 , height =800 ) %>% addTiles() %>% 
      addPolygons(fillColor = ~pal(mapdata()) , color="black",weight=1 , fillOpacity = 0.7) %>%
      addLegend("topleft", pal = palleg, values = mapdata(),
                title = "Production 2014 :",
                labFormat = labelFormat(suffix= " q/ha"),
                opacity = 1 )
  return(map)
})

reg=reactive({
   return(
     reg=map.where(database = "france", input$prodmap_shape_mouseover[4],input$prodmap_shape_mouseover[3]))})

所以&#34; mapdata()&#34;返回一个按区域排序数据的向量,现在我使用map.where()和mouseover事件来创建一个返回该区域名称的被动反应。我想我应该写一个反应,为指针的每个位置创建一个新的地图,但我怎么能添加一个新的多边形与该区域的名称或坐标?

谢谢