2016-04-01 33 views
7

EDIT: Như được chỉ ra bởi @Symbolix, setMaxBounds thực sự là một cái gì đó khác với những gì tôi đang tìm kiếm. Tôi thực sự chỉ muốn vô hiệu hóa thu phóng hoàn toàn và xóa các điều khiển. Tùy chọn zoomControl được mô tả trong tài liệu JavaScript API của tờ rơi dường như là những gì tôi muốn, nhưng tôi không thể tìm thấy tùy chọn đó trong gói R.R tờ rơi tùy chọn zoomControl


Tôi đang xây dựng một công cụ bản đồ trong R sử dụng tờ rơi, và tôi muốn để hạn chế zoom vào một khu vực nhất định, nhưng setMaxBounds chức năng dường như không có hiệu lực.

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 

Điều này cho biết khu vực bên phải của bản đồ nhưng không ngăn cản thu nhỏ.

Sẽ tốt hơn hết là xóa toàn bộ các điều khiển thu phóng để tôi có thể thay thế điều hướng bằng một thứ gì đó phù hợp hơn với ứng dụng trong tầm tay. Tôi tìm thấy một tùy chọn zoomControl, nhưng không thể tìm ra nơi để đặt nó trong R để làm cho nó hoạt động.

+0

có yo u đã thử một cái gì đó như: addProviderTiles ("CartoDB.Positron", options = tileOptions (minZoom = 9)) hoặc addProviderTiles ("CartoDB.Positron", options = tileOptions (maxZoom = 9)). Bạn có thể thay đổi số cho những gì bạn muốn. – MLavoie

+0

'setMaxBounds()' ngăn bạn di chuyển sang trái/phải/lên/xuống (tức là ranh giới bản đồ), không phải mức thu phóng. Từ '? SetView' [tùy chọn thu phóng] (http://leafletjs.com/reference.html#map-zoompanoptions) có sẵn cho' options = list() 'không xuất hiện để bao gồm * zoomControl *. chức năng – SymbolixAU

+0

@MLavoie, tôi đã kiểm tra maxZoom/minZoom và điều đó sẽ đến gần, nhưng sẽ tốt hơn nếu tôi cũng có thể xóa các nút thu phóng. –

Trả lời

9

Để xóa điều khiển thu phóng, hãy đặt zoomControl = FALSE trong leafletOptions. Ví dụ:

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

Lưu ý rằng thao tác này sẽ không tắt thu phóng bằng cách nhấp đúp hoặc cuộn bằng bánh xe chuột của bạn. Bạn có thể kiểm soát mức thu phóng bằng cách đặt minZoommaxZoom, một lần nữa trong leafletOptions. Để vô hiệu hóa zoom, thiết minZoom bằng maxZoom:

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

Như một phần thưởng, trong trường hợp bạn muốn một cái nhìn "tĩnh" của bản đồ, bạn cũng có thể vô hiệu hóa kéo qua dragging tùy chọn:

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

Lưu ý rằng bạn có thể cần phải cài đặt phiên bản mới nhất của github leaflet để thực hiện các tùy chọn ở trên:

# install github version of leaflet 
if (!require('devtools')) install.packages('devtools') 
devtools::install_github('rstudio/leaflet')` 
Các vấn đề liên quan