如何偏移折线?

问题描述 投票:0回答:1

我目前正在使用 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

查看示例当前的样子。

enter image description here

有人有更好的想法或知道如何在 R 中使用 PolylineOffset 插件吗?

r shiny gis r-leaflet
1个回答
2
投票

在闪亮的

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。

© www.soinside.com 2019 - 2024. All rights reserved.