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

标签 r leaflet

我正在尝试使用在 Shiny 的应用程序中使用 R 创建的传单 map 来可视化从出发地到目的地的装运。

我想添加一个半径对应于 odist 和 的圆形标记ddist 来自一个名为 的响应式(Reactive)数据框的变量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 个单位似乎是任意的(圆圈小于 radius = main()$ddist = 125 的大圆圈,但是当我放大和缩小时,两个圆圈都会放大和缩小)。我希望能够将我的圆形标记的半径设置为以英里为单位的固定半径,但是我无法弄清楚如何这样做。任何帮助是极大的赞赏!

最佳答案

如果您使用 addCircles而不是 addCircleMarkers您的圈子将保持不变 radius (以米为单位)。这是一个使用 的可重现示例 map View 使用 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

如果放大,您会看到最初较小的红色圆圈相对于 中使用的标准蓝色圆圈标记变得更大。 map View

关于r - 在 R 中使用 Leaflet 时如何在 addCircleMarkers() 中指定半径单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38837112/

相关文章:

r - 如何在 lme 中分别拟合两个随机效应?

r - 如何使用dplyr将函数应用于所有非group_by列?

r - knitr:生成带有循环标签的汇总表?

r - 当某些列表元素不可用时,在 R 中创建列表

javascript - 传单编辑多边形问题

android - 彻底摧毁传单 map

r - 相当于 lapply(a, function(x) x[,1])

javascript - 在未定义 JavaScript 对象中导入类时出错

javascript - 在图层控件中设置 Leaflet Overlay Off

javascript - 如何在 Node.js 上加载 JSON 数据