2015-02-08 20 views
3

我和其他人建立了一个原型的在线应用,协助交通规划中优先考虑自行车道的新资金:如何防止传单映射重置放大闪亮的应用程序?

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

我们很高兴与结果,并留下了深刻印象闪亮的能力,快速原型概念的而无需编写单行JavaScript代码。但是,该应用程序存在一个主要问题,您将通过放大然后调整透明度滑块来看到:缩放会在每次执行此操作时重置。因此,问题很简单:如何重写server.R以使地图不重置其缩放设置?

整个应用程序可以在下面的链接中可以看出,应该是对任何R安装过程中可重复的,只要你有正确的包装(如rgdal,传单,ggmap):

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

更多的上下文请参阅here

回答

5

我有同样的问题,我想我找到了一些工作:描述here on the Leaflet for R page这里显示在SuperZip example

更改您使用LeafletProxy作为生成地图的方式。首先,尝试设置您的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 

然后使用observe函数LeafletProxy画出这样的线条和圆圈:您需要添加层的ID,以确保

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 

}) 

当您更改参数时,新形状会替换旧形状。这样你就不需要你有的mapOptions(zoomToLimits = "first")

相关问题