gpt4 book ai didi

r - 如何防止传单 map 在 Shiny 的应用程序中重置缩放?

转载 作者:行者123 更新时间:2023-12-01 11:34:47 24 4
gpt4 key购买 nike

我自己和其他人已经建立了一个在线应用程序的原型(prototype),以帮助交通规划人员优先考虑为自行车道提供新资金:

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

我们对结果很满意,并且对 Shiny 无需编写任何 JavaScript 代码即可快速原型(prototype)化 Web 部署概念的能力印象深刻。但是,该应用程序有一个主要问题,您将通过放大然后调整透明度 slider 看到:每次执行此操作时缩放都会重置。因此问题很简单:如何重写 server.R 这样 map 就不会重置它的缩放设置?

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

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

更多上下文,请参阅 here .

最佳答案

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

使用 LeafletProxy 更改生成 map 的方式如所述here on the Leaflet for R page并在 SuperZip example 上显示.首先,尝试设置您的 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像这样画线和圆:
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

})

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

关于r - 如何防止传单 map 在 Shiny 的应用程序中重置缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28393310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com