我目前正在使用 R/shiny 中的传单绘制几个城市连接(折线),效果非常好。但是,有几条线相互重叠,我希望能够抵消这些重叠的线。
bbecquet 已经为 leaflet 提供了一个很棒的插件来完成这项工作,但它尚未在 R 包中实现(还?)。
https://github.com/bbecquet/Leaflet.PolylineOffset
我当前的解决方案几乎是“动手实践”,因为我只是根据缩放级别移动线条。
# temp2 is a SpatialLinesDataFrame
negs <- as.matrix(coordinates(temp2[1,])[[1]][[1]])
negs[,1] <- (negs[,1])+exp(input$map_zoom)
negs[,2] <- (negs[,2])+exp(input$map_zoom)
temp2@lines[[1]]@Lines[[1]]@coords[] <- negs
查看示例当前的样子。
有人有更好的想法或知道如何在 R 中使用 PolylineOffset 插件吗?干杯!
最佳答案
在 Shiny 的 ui
部分添加以下内容:
tags$head(
tags$script(src="leaflet.polylineoffset.js")
)
并将 javascript 文件放入 Shiny 应用程序的 www
文件夹中。
然后在 server
部分使用如下所示的偏移量:
leafletProxy("my_map") %>%
addPolylines(data=coords, weight=1, options=list(offset=3))
在示例中,已经有一个名为“my_map”的初始化 map ,并且 coords
包含折线的坐标。 偏移
以像素为单位,与缩放级别无关。
bbecquet 在这个插件上做得很好,但不幸的是它对我来说不能正常工作。我稍微调整了 javascript 代码来解决问题。您可以在这里找到我的版本: modified offset javascript
它仅适用于 R leaflet
软件包版本 2 及更高版本,该版本基于更新版本的 leaflet。
关于r - 如何使用传单在r中偏移折线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40159581/