leaflet.extras:以米为单位测量距离

时间:2017-10-17 07:18:00

标签: r leaflet leaflet.draw

我想创建一个地图,我可以交互式地测量2点之间的距离。幸运的是,leaflet.extras正是我所需要的,但是,我努力让它以(或公里)而非脚来产生输出。

考虑以下代码:

library(leaflet)
library(leaflet.extras)
leaflet() %>% 
  addTiles() %>%
  addDrawToolbar(
    editOptions=editToolbarOptions(selectedPathOptions=selectedPathOptions())
  )

它会创建以下地图: enter image description here

然而,this示例(第3块)实际上是相同的代码来创建相同的测量工具(折线),除了它在KM中工作,而我的示例在脚中工作。

如果你有任何提示可以帮助我切换到米而不是脚,我会非常感激。

1 个答案:

答案 0 :(得分:2)

drawPolylineOptions功能不允许设置选项feet=FALSE 因此,我建议修改drawPolylineOptions如下:

library(leaflet)
library(leaflet.extras)

mydrawPolylineOptions <- function (allowIntersection = TRUE, 
    drawError = list(color = "#b00b00", timeout = 2500), 
    guidelineDistance = 20, metric = TRUE, feet = FALSE, zIndexOffset = 2000, 
    shapeOptions = drawShapeOptions(fill = FALSE), repeatMode = FALSE) {
    leaflet::filterNULL(list(allowIntersection = allowIntersection, 
        drawError = drawError, guidelineDistance = guidelineDistance, 
        metric = metric, feet = feet, zIndexOffset = zIndexOffset,
        shapeOptions = shapeOptions,  repeatMode = repeatMode)) }

leaflet() %>% setView(10.975342,45.421588,9) %>%
  addTiles() %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik) %>%
  addDrawToolbar(
    polylineOptions = mydrawPolylineOptions(metric=TRUE, feet=FALSE),
    editOptions=editToolbarOptions(selectedPathOptions=selectedPathOptions())
  ) 

enter image description here

否则,使用addMeasures,您可以为地图添加一个有用的工具来测量距离(请参见地图右上角的图标)。
可以通过primaryLengthUnit选项指定用于显示长度结果的单位。

leaflet() %>% setView(10.975342,45.421588,9) %>%
  addTiles() %>%
  addProviderTiles(providers$CartoDB.Positron) %>%
  addDrawToolbar(
    editOptions=editToolbarOptions(selectedPathOptions=selectedPathOptions())
  ) %>% 
  addMeasure(primaryLengthUnit="kilometers", secondaryLengthUnit="kilometers")

enter image description here