2016-04-01 15 views
7

EDIT: Wie @Symbolix zeigt, ist setMaxBounds wirklich etwas anderes als das, was ich suche. Ich möchte nur das Zoomen vollständig deaktivieren und die Steuerelemente entfernen. Die Option zoomControl, die in der JavaScript-API-Dokumentation für das Faltblatt beschrieben wird, scheint zu sein, was ich möchte, aber ich kann diese Option im R-Paket nicht finden.R Flugblatt zoomControl Option


Ich baue ein Kartenwerkzeug in R Faltblatt mit, und ich möchte den Zoom auf einen bestimmten Bereich beschränken, sondern die setMaxBounds Funktion scheint keine Wirkung zu haben.

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 

Dies zeigt den rechten Bereich der Karte an, verhindert aber nicht das Herauszoomen.

Noch besser wäre es, die Zoom-Regler komplett zu entfernen, um die Navigation durch etwas zu ersetzen, das für die jeweilige Anwendung besser geeignet ist. Ich fand eine zoomControl Option, aber war nicht in der Lage, herauszufinden, wo man in R setzen, um es zur Arbeit zu bringen.

+0

haben yo Sie haben versucht, etwas wie: addProviderTiles ("CartoDB.Positron", Optionen = tileOptions (minZoom = 9)) oder addProviderTiles ("CartoDB.Positron", Optionen = tileOptions (maxZoom = 9)). Sie können die Nummer für das ändern, was Sie wollen. – MLavoie

+0

Das 'setMaxBounds()' verhindert, dass Sie nach links/rechts/oben/unten scrollen (d. H. Die Kartengrenzen), nicht die Zoomstufe. Von '? SetView' aus scheinen die [Zoomoptionen] (http://leafletjs.com/reference.html#map-zoompanoptions), die für' options = list() 'verfügbar sind, nicht * zoomControl *. Funktion – SymbolixAU

+0

@MLavoie, habe ich die maxZoom/MinZoom ausgecheckt, und das kommt nahe, aber es wäre besser, wenn ich auch die Zoom-Tasten entfernen könnte. –

Antwort

9

Um die Zoomsteuerelemente zu entfernen, setzen Sie zoomControl = FALSE in leafletOptions. Zum Beispiel:

Beachten Sie, dass dies das Zoomen nicht durch Doppelklicken oder Scrollen mit dem Mausrad deaktiviert. Sie können die Zoomstufe durch Setzen von minZoom und maxZoom, wiederum unter leafletOptions, steuern. Zum Zoomen deaktivieren, setzen minZoom gleich maxZoom:

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

Als Bonus, falls Sie wollen eine „statische“ Ansicht einer Karte, können Sie auch über die dragging Option deaktivieren ziehen:

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

Beachten Sie, dass Sie benötigen die neueste Version von github leaflet zu implementieren, um die oben genannten Optionen zu installieren:

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