2016-10-19 7 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

좋아요. 반짝이는 'sync'또는 'latticeView'라고 불리는 플롯을 어떻게 호출 할 수 있는지 알고 싶습니다. 나는 plotOutput과 leafletOutput을 시도했지만 어떤 디스플레이도 보지 못했다. – SatishR

+0

@timelyportfolio '동기화'와 '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); 
     ") 
관련 문제