首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将传单地图(用rMaps创建)保存为html小部件?

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

Stack Overflow用户
提问于 2016-06-22 14:36:12
回答 1查看 699关注 0票数 1

问题1我尝试将用rMaps 这里创建的传单映射保存到html文件中。

代码语言:javascript
复制
L2 <- Leaflet$new()
L2$setView(c(29.7632836,  -95.3632715), 10)
L2$tileLayer(provider = "MapQuestOpen.OSM")
L2
library(htmlwidgets)

saveWidget(L2,"t.html")

但我有个错误:

代码语言:javascript
复制
Error in envRefInferField(x, what, getClass(class(x)), selfEnv) : 
  ‘width’ is not a valid field or method name for reference class “Leaflet”

答案1多亏了LukeA,我们可以使用这个语法:

代码语言:javascript
复制
leaflet(width = "100%") %>% 
  addProviderTiles("MapQuestOpen.OSM") %>% 
  setView(-95.3632715, 29.7632836, zoom = 10) -> L2 

问题2,但是如何添加addAssets和setTemplate:

代码语言:javascript
复制
# 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

答案2,感谢LukeA,我们得到了答案:

代码语言:javascript
复制
L2$save(tf <- tempfile(fileext = ".html"),standalone=TRUE)

问题3

实际上,我最初的问题是,为了在html文档中直接生成映射,我无法用order方式编写代码。

现在我可以独自拯救地图了。但是如何将其集成到html文档中呢?快速反应的解决办法是制造一个iframe。还有其他更优雅的解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-22 14:45:33

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

代码语言:javascript
复制
library(leaflet)
library(htmlwidgets)
leaflet() %>% 
  addProviderTiles("MapQuestOpen.OSM") %>% 
  setView(-95.3632715, 29.7632836, zoom = 10) -> m 
saveWidget(m, tf <- tempfile(fileext = ".html"))

或者,使用rMaps

代码语言:javascript
复制
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)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37971225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档