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

leaflet.extras: measure distance in metres

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

考虑以下代码:

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

它创建了以下地图:

但是,this 示例(块 3)实际上使用相同的代码来创建相同的测量工具(折线),只是它适用于 KM,而我的示例适用于英尺。

如果您有任何提示可以帮助我改用米而不是英尺,我将不胜感激。

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())
  ) 

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

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