2016-10-19 5 views
1

Я попытался реализовать плакат-бок о бок, используя примерные коды от Using arbitrary Leaflet JS plugins with Leaflet for R. Кажется простым, пока ничего успешного. Я не мог понять, что я делаю неправильно. Большое спасибо за ваш ответ. Спасибо,, используя плакат-бок о бок в R

library(leaflet) 
library(htmltools) 
library(htmlwidgets) 


LeafletSideBySidePlugin <- htmlDependency("leaflet-side-by-side","2.0.0", 
              src = c(href="https://github.com/digidem/leaflet-side-by-side"), 
              script="leaflet-side-by-side.js") 

# A function that takes a plugin htmlDependency object and adds 
# it to the map. This ensures that however or whenever the map 
# gets rendered, the plugin will be loaded into the browser. 

registerPlugin <- function(map, plugin) { 
    map$dependencies <- c(map$dependencies, list(plugin)) 
    map 
} 

leaflet() %>% addTiles() %>% 
    setView(lng = 12, lat = 50, zoom = 4) %>% 
    # Register leaflet-side-by-side plugin on this map instance 
    registerPlugin(LeafletSideBySidePlugin) %>% 
    onRender(" 
      function(el, x) { 
var mylayer1 = L.tileLayer(
      'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{ 
      maxZoom: 18 
      }) 
var mylayer2 = L.tileLayer(
      '//stamen-tiles-{s}.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png',{ 
      maxZoom: 14 
      }) 
      L.control.sideBySide(mylayer1, mylayer2).addTo(this); 
      ") 
+1

бок о бок очень приятный. Не совсем то же самое, но «mapview» предлагает буклет-синхронизацию http://environmentalinformatics-marburg.github.io/mapview/sync/sync.html. – timelyportfolio

+0

Отлично. Могу ли я узнать, как я могу назвать «синхронизированные» или «решетчатые» сгенерированные графики блестящими. Я попробовал plotOutput и leafletOutput, но не вижу никакого отображения. – SatishR

+0

@timelyportfolio Я обнаружил, что «sync» и «latticeView» позволяют делать очень приятные вещи и стараются сделать так, чтобы они были блестящими, но безуспешными. Большое спасибо за ваши отзывы: в server.r: output $ plot1 <- renderLeaflet ({ m1 <-leaflet (EUGegrphclData)%>% addPolygons (..., fillColor = "red") m2 <-leaflet (EUGegrphclData)% >% addPolygons (..., fillColor = "blue") sync (m1, m2) }) ' EUGegraphclData - это пространственный объект в ui.r ' leafletOutput ('plot1') – SatishR

ответ

0

просто наткнуться на этот вопрос.

Я думаю, вы пропустите метод addTo() для каждого слоя карты плитки. здесь должно быть.

leaflet() %>% addTiles() %>% 
    setView(lng = 12, lat = 50, zoom = 4) %>% 
    # Register leaflet-side-by-side plugin on this map instance 
    registerPlugin(LeafletSideBySidePlugin) %>% 
    onRender(" 
     function(el, x) { 
      var mylayer1 = L.tileLayer(
      'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{ 
      maxZoom: 18 
      }).addTo(this); 
      var mylayer2 = L.tileLayer(
      '//stamen-tiles-{s}.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png',{ 
      maxZoom: 14 
      }).addTo(this); 
     L.control.sideBySide(mylayer1, mylayer2).addTo(this); 
     ")