如何将传单地图(使用RMAP创建)保存为html小部件?

如何将传单地图(使用RMAP创建)保存为html小部件?,r,leaflet,htmlwidgets,rmaps,R,Leaflet,Htmlwidgets,Rmaps,问题1 我尝试将使用RMAP创建的传单地图保存到html文件中 L2 <- Leaflet$new() L2$setView(c(29.7632836, -95.3632715), 10) L2$tileLayer(provider = "MapQuestOpen.OSM") L2 library(htmlwidgets) saveWidget(L2,"t.html") 答案1 多亏了LukeA,我们可以使用这种合成税: leaflet(width = "100%") %>%

问题1 我尝试将使用RMAP创建的传单地图保存到html文件中

L2 <- Leaflet$new()
L2$setView(c(29.7632836,  -95.3632715), 10)
L2$tileLayer(provider = "MapQuestOpen.OSM")
L2
library(htmlwidgets)

saveWidget(L2,"t.html")
答案1 多亏了LukeA,我们可以使用这种合成税:

leaflet(width = "100%") %>% 
  addProviderTiles("MapQuestOpen.OSM") %>% 
  setView(-95.3632715, 29.7632836, zoom = 10) -> L2 
问题2 但是,如何添加addAssets和setTemplate:

# Add leaflet-heat plugin. Thanks to Vladimir Agafonkin
L2$addAssets(jshead = c(
  "http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js"
))

# Add javascript to modify underlying chart
L2$setTemplate(afterScript = sprintf("
<script>
  var addressPoints = %s
  var heat = L.heatLayer(addressPoints).addTo(map)           
</script>
", rjson::toJSON(crime_dat)
))

L2
#添加传单加热插件。感谢弗拉基米尔·阿加方金
L2$addAssets(jshead=c(
"http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js"
))
#添加javascript以修改基础图表
L2$setTemplate(afterScript=sprintf(“
var addressPoints=%s
var heat=L.heatLayer(地址点).添加到(地图)
,rjson::toJSON(犯罪数据)
))
L2
答案2 再次感谢卢卡,我们得到了答案:

L2$save(tf <- tempfile(fileext = ".html"),standalone=TRUE)

L2$save(tf虽然不是对您的问题的直接回答,但我建议另一种方法可以产生类似的结果:

library(leaflet)
library(htmlwidgets)
leaflet() %>% 
  addProviderTiles("MapQuestOpen.OSM") %>% 
  setView(-95.3632715, 29.7632836, zoom = 10) -> m 
saveWidget(m, tf <- tempfile(fileext = ".html"))

虽然不是对你问题的直接回答,但我建议另一种方法可以产生类似的结果:

library(leaflet)
library(htmlwidgets)
leaflet() %>% 
  addProviderTiles("MapQuestOpen.OSM") %>% 
  setView(-95.3632715, 29.7632836, zoom = 10) -> m 
saveWidget(m, tf <- tempfile(fileext = ".html"))

太好了!谢谢。事实上,我想用这种方式编写Leavet,并添加传单(width=“100%”)。然后当我尝试传单$new(width=“100%”)时,它就不起作用了。所以我想知道参数width是否从此留在函数中。如果是,如何“重新初始化”传单地图?和rmaps示例中,添加了额外的功能。如何使用管道?L2$addAssets(jshead=c(“”)和L2$setTemplate()您可以在
传单()
中设置宽度,例如
传单(width=“50%”)
。关于一些“额外功能”(?)-请通过“额外功能”浏览,我指的是RMAP示例中的那些:addAssets和setTemplate。它们不在传单主页中。我不知道如何在传单包中嵌入传单.heat。可能会发布新问题,或者直接询问包作者?或者使用自定义和静态预计算轮廓?我只是研究了github发行的
传单
:to满足您的需求。太好了!谢谢。事实上,我想用这种方式编写Leavet,并添加传单(width=“100%”)。然后当我尝试传单$new(width=“100%”)时,它就不起作用了。因此我想知道参数width是否从此留在函数中。如果是,如何“重新初始化”传单地图?和rmaps示例中,添加了额外的功能。如何使用管道?L2$addAssets(jshead=c(“”)和L2$setTemplate()您可以在
传单()
中设置宽度,例如
传单(width=“50%”)
。关于一些“额外功能”(?)-请通过“额外功能”浏览,我指的是RMAP示例中的那些:addAssets和setTemplate。它们不在传单主页中。我不知道如何在传单包中嵌入传单.heat。可能会发布新问题,或者直接询问包作者?或者使用自定义和静态预计算轮廓?我只是研究了github发行的
传单
:to满足您的需求。
library(plyr)
library(rCharts)
library(rMaps)
data(crime, package = 'ggmap')
crime_dat = ddply(crime, .(lat, lon), summarise, count = length(address))
crime_dat = toJSONArray(na.omit(unname(crime_dat)), json = F)

L2 <- Leaflet$new()
L2$setView(c(29.7632836,  -95.3632715), 10)
L2$tileLayer(provider = "MapQuestOpen.OSM")
# Add leaflet-heat plugin. Thanks to Vladimir Agafonkin
L2$addAssets(jshead = c(
  "http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js"
))
# Add javascript to modify underlying chart
L2$setTemplate(afterScript = sprintf("
<script>
  var addressPoints = %s
  var heat = L.heatLayer(addressPoints).addTo(map)           
</script>
", rjson::toJSON(crime_dat)
))

L2$save(tf <- tempfile(fileext = ".html"),standalone=TRUE)