如何防止传单地图重置闪亮的应用程序放大?

Rob*_*ace 3 r leaflet shiny

我和其他人已经建立了一个在线应用程序的原型,以协助交通规划者优先考虑自行车道的新资金:

https://robinlovelace.shinyapps.io/fixMyPath/

我们对结果感到满意,并对Shiny快速为Web部署构建概念的能力印象深刻,而无需编写单行JavaScript.但是,应用程序有一个主要问题,您将通过放大然后调整透明度滑块来看到:每次执行此操作时缩放都会重置.因此问题很简单:如何重写server.R以使地图不重置缩放设置?

整个应用程序可以在下面的链接中看到,并且应该可以在任何R安装上重现,只要您有正确的包(例如rgdal,leaflet,ggmap):

https://github.com/nikolai-b/hackMyRoute/tree/master/R/fixMyPath

有关更多背景信息,请参阅此处.

cho*_*okn 5

我有同样的问题,我想我发现了一些有用的东西:

更改您生成使用地图的方式LeafletProxy描述这里的传单的R页面,在这里显示在SuperZip例子.首先,尝试renderLeaflet像这样设置你的功能:

output$map = renderLeaflet(leaflet() %>% 
  addTiles(urlTemplate = "http://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png") %>%
  setView(...) # add the parameters as appropriate set the view or use fitBounds  
Run Code Online (Sandbox Code Playgroud)

然后使用observe函数LeafletProxy来绘制线条和圆圈,如下所示:

observe({
  leafletProxy("map") %>%
  clearShapes() %>%
  addPolygons(layerId= "layer1"
            , data = leeds
            , fillOpacity = 0.4
            , opacity = (input$transp_zones)*.4
            , fillColor = leeds$color_pcycle
  ) %>%
  addPolyLines(layerId = "layer2"
             , data = lfast, color = "red"
             , opacity = input$transp_fast
             , popup = sprintf("<dl><dt>Distance </dt><dd>%s km</dd><dt>Journeys by bike</dt><dd>%s%%</dd>", round(flows$fastest_distance_in_m / 1000, 1), round(flows$p_cycle * 100, 2))
  ) %>%
# and so on in a similar fashion for the rest of your shapes

})
Run Code Online (Sandbox Code Playgroud)

您需要添加图层ID以确保在更改参数时新形状替换旧形状.这样你就不需要mapOptions(zoomToLimits = "first")你拥有的那个.