2017-10-17 42 views
2

Je voudrais créer une carte où je peux mesurer interactivement la distance entre 2 points. Heureusement, leaflet.extras a exactement ce dont j'ai besoin, cependant, j'ai du mal à l'obtenir pour produire les sorties en mètres (ou kilomètres) par opposition aux pieds.leaflet.extras: mesurer la distance en mètres

Tenir compte du dessous morceau de code:

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

Il crée la carte suivante: enter image description here

Cependant, this exemple (bloc 3) effectivement le même code pour créer le même outil de mesure (polyligne), sauf qu'il fonctionne en KM, alors que mon exemple fonctionne en pieds.

Si vous avez des conseils qui peuvent m'aider à passer aux compteurs par opposition aux pieds, je l'apprécierais vraiment.

Répondre

1

La fonction drawPolylineOptions ne permet pas de définir l'option feet=FALSE.
Par conséquent, je suggère de modifier drawPolylineOptions comme suit:

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

Sinon, en utilisant addMeasures vous pouvez ajouter à votre carte un outil utile pour mesurer les distances (voir l'icône dans le coin supérieur droit de la carte).
Il est possible de spécifier les unités utilisées pour afficher les résultats de longueur avec l'option 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

Merci, Marco, qui est exactement ce que je cherchais! – IVR

+0

Et à titre de suivi, sauriez-vous s'il existe un moyen facile d'obtenir la fonction "dessiner un cercle" de la fonction 'addDrawToolbar()' pour afficher également le rayon en km? Merci beaucoup :) – IVR

+1

@IVR C'est une question intéressante. S'il vous plaît, postez une nouvelle question pour la communauté SO! –