在R中使用leaflet-side-by-side插件

时间:2016-10-19 19:22:05

标签: r shiny leaflet htmlwidgets

我尝试使用Using arbitrary Leaflet JS plugins with Leaflet for 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);
            ")

2 个答案:

答案 0 :(得分:0)

只是偶然发现了这个问题。

我认为你错过了每个瓷砖地图图层的addTo()方法。这应该是。

Option Private Module
Option Explicit

Public Sub RunBatchReport()
    Dim report As BatchReport
    Set report = New BatchReport
    report.Run
End Sub    

答案 1 :(得分:0)

我要赞扬阿布(Abuw)的回答。 如果有人想知道为什么它仍然不起作用,那是因为onRender JavaScript中有一个不匹配的'{'。

还要确保您的htmlDependency源确实存在。 jsdelivr以应用程序/ JavaScript格式提供了通过npm和github提供的大多数js库。使用它而不是原始的github路径,完整的工作代码如下:

#include<iostream>

int main() 
{ 
  std::unique_ptr<int> d;
}