2016-04-01 4 views
7

EDIT: Come sottolineato da @Symbolix, setMaxBounds è davvero qualcosa di diverso da quello che sto cercando. Voglio solo disabilitare completamente lo zoom e rimuovere i controlli. L'opzione zoomControl descritta nei documenti dell'API JavaScript dell'opuscolo sembra essere quello che voglio, ma non riesco a trovare questa opzione nel pacchetto R.R leaflet zoom Opzione control


Sto costruendo uno strumento mappa in R con foglio, e vorrei limitare lo zoom a una determinata area, ma la funzione setMaxBounds non sembra avere alcun effetto.

library(dplyr) 
library(leaflet) 
library(tigris) 

ohio_map <- leaflet(counties('OH', cb = TRUE)) %>% 
    addProviderTiles("CartoDB.Positron") %>% 
    addPolygons(weight = .3, 
       color = "#229922", 
       layerId = ~NAME) %>% 
    setMaxBounds(lng1 = -84.800, 
       lat1 = 42.000, 
       lng2 = -80.500, 
       lat2 = 38.400) 
ohio_map 

Questo mostra l'area destra della mappa, ma non impedisce lo zoom indietro.

Sarebbe anche meglio rimuovere completamente i controlli dello zoom, in modo da poter sostituire la navigazione con qualcosa di più adatto all'applicazione a portata di mano. Ho trovato un'opzione zoomControl, ma non sono riuscito a capire dove metterlo in R per farlo funzionare.

+0

hanno yo hai provato qualcosa come: addProviderTiles ("CartoDB.Positron", options = tileOptions (minZoom = 9)) o addProviderTiles ("CartoDB.Positron", options = tileOptions (maxZoom = 9)). Puoi cambiare il numero per quello che vuoi. – MLavoie

+0

il 'setMaxBounds()' ti impedisce di scorrere a sinistra/destra/su/giù (ad esempio, i confini della mappa), non il livello di zoom. Da '? SetView' le [opzioni di zoom] (http://leafletjs.com/reference.html#map-zoompanoptions) disponibili per' options = list() 'non sembrano includere * zoomControl *. funzione – SymbolixAU

+0

@MLavoie, ho controllato maxZoom/minZoom, e ciò si avvicina, ma sarebbe meglio se potessi anche rimuovere i pulsanti dello zoom. –

risposta

9

Per rimuovere i controlli dello zoom, impostare zoomControl = FALSE in leafletOptions. Ad esempio:

library(leaflet) 
leaflet(options = leafletOptions(zoomControl = FALSE)) %>% 
    addTiles() 

Si noti che questo non disabiliterà lo zoom tramite doppio clic o lo scorrimento con la rotellina del mouse. È possibile controllare il livello di zoom impostando minZoom e maxZoom, di nuovo in leafletOptions. Per disattivare lo zoom, impostare minZoom pari a maxZoom:

leaflet(options = leafletOptions(zoomControl = FALSE, 
           minZoom = 3, maxZoom = 3)) %>% 
    addTiles() 

Come bonus, nel caso in cui si desidera una vista "statico" di una mappa, è possibile anche disattivare il trascinamento tramite l'opzione dragging:

leaflet(options = leafletOptions(zoomControl = FALSE, 
           minZoom = 3, maxZoom = 3, 
           dragging = FALSE)) %>% 
    addTiles() 

si noti che potrebbe essere necessario installare l'ultima versione di github leaflet per attuare le opzioni di cui sopra:

# install github version of leaflet 
if (!require('devtools')) install.packages('devtools') 
devtools::install_github('rstudio/leaflet')`