在地图上突出显示特定区域

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

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

r shiny r-leaflet
2个回答
1
投票

类似这个?它会变得有点复杂,但基本上你会想要添加一个函数,该函数将是否应该加粗作为参数。在示例中,它将是

drawStates()

简化的想法是:

  1. 渲染所有多边形(包括多边形 A 和 B)。
  2. (将鼠标指针移到多边形 A 上。)
  3. 在鼠标所在的位置重新创建多边形 A,但这次将其设为粗体。
  4. (将鼠标指针移至多边形B。)
  5. 重新创建多边形 A 并使其不加粗。
  6. 重新创建多边形 B 并将其加粗。

没有你的代码我不能说太多。


0
投票

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

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]))})

因此“mapdata()”返回一个带有按区域排序的数据的向量,现在我使用map.where()和鼠标悬停事件来创建一个返回区域名称的反应。我认为我应该编写一个反应式,为指针的每个位置创建一个新地图,但是如何添加一个带有区域名称或坐标的新多边形?

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.