我目前正在使用 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 插件吗?
在闪亮的
ui
部分添加以下内容:
tags$head(
tags$script(src="leaflet.polylineoffset.js")
)
并将 javascript 文件放入闪亮应用程序的
www
文件夹中。
然后在 server
部分使用这样的偏移量:
leafletProxy("my_map") %>%
addPolylines(data=coords, weight=1, options=list(offset=3))
在示例中,已经有一个名为“my_map”的初始化地图,并且
coords
包含折线的坐标。 offset
以像素为单位,与缩放级别无关。
bbecquet 在这个插件上做得很好,但不幸的是它对我来说不能正常工作。我稍微调整了 javascript 代码来解决问题。您可以在这里找到我的版本: 修改偏移量javascript
它仅适用于 R
leaflet
软件包版本 2 及更高版本,该版本基于更新版本的 leaflet。