2017-10-17 194 views
2

我想創建一個地圖,我可以交互地測量2個點之間的距離。幸運的是,leaflet.extras正是我所需要的,然而,我正在努力讓它產生(或公里)而不是腳的輸出。leaflet.extras:以米爲單位的距離測量

考慮下面的代碼段:

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

它創建下列圖: enter image description here

然而,this實例(塊3)實際上是相同的代碼來創建相同的測量工具(折線),除了它在KM中工作,而我的例子以腳爲單位。

如果您有任何提示可以幫助我切換到米而不是腳,我會非常感激。

回答

1

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

+0

謝謝你,馬可,這正是我一直在尋找! – IVR

+0

作爲後續工作,您是否知道是否有一種簡單的方法可以讓addDrawToolbar()函數的「繪製圓」功能也以km爲單位顯示半徑?非常感謝:) – IVR

+1

@IVR這是一個有趣的問題。請發佈SO社區的新問題! –