如何在R中使用Leaflet时在addCircleMarkers()中指定半径单位

时间:2016-08-08 19:30:06

标签: r leaflet

我正在尝试使用在闪亮的应用程序中使用R创建的传单地图来显示从始发地到目的地的货件。

我想添加一个半径对应于 odist ddist 变量的圆圈标记,这些变量来自一个名为 main()的反应数据框

下面的

是相关快照,附带代码:

Pic1

output$leaflet1 <- renderLeaflet({
  leaflet() %>%
    addCircleMarkers(data = main(), lng = main()$Olong, lat = main()$Olat, color = 'black', fillColor = coyGreen,
                     radius = main()$odist, opacity = .5) %>% 
    addCircleMarkers(data = main(), lng = main()$Dlong, lat = main()$Dlat, color = 'black', fillColor = coyGreen, 
                     radius = main()$ddist, opacity = .3)
})

对于上面的示例,参数radius = main()$odist等同于radius = 50。然而,50个单位似乎是任意的(cirlce小于radius = main()$ddist = 125的较大单位,但是当我放大和缩小时,两个圆都放大和缩小)。我希望能够将我的圆圈标记的半径设置为以英里为单位的固定半径,但是我无法弄清楚如何这样做。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

如果您使用addCircles代替addCircleMarkers,则您的圈子将会有radius(以米为单位)。以下是使用{strong> mapview 的可重现示例,该示例使用addCircleMarkers。最重要的是,我们使用addCircles

绘制相同的位置
library(mapview)

m <- mapview(breweries91) # uses addCirclemarkers so circle radius changes with zoom

m@map %>% 
  addCircles(data = breweries91, color = "red", radius = 100) # circle radius constant

如果你放大,你会看到最初较小的红色圆圈会变得比 mapview

中使用的标准蓝色圆圈标记更大

答案 1 :(得分:0)

记住地图投影很重要。

这也取决于您在 Leaflet 中使用的投影,最好使用 Leaflet 的测量工具进行检查,或者您是否知道位置。查看我推荐的预测

crsDF <- rgdal::make_EPSG()
View(crsDF)

就我而言,我在智利(一个狭长的国家),我在某些地方使用此投影:

CRS 9155 =

"+proj=utm +zone=19 +south +ellps=GRS80 +units=m +no_defs +type=crs"

你可以看到我使用的单位是米

在这里,我留下了对我的国家的一些预测的图像。

View(crsDF)

View(crsDF)

您可以在以下位置找到更多信息:

问候