如何解决将Leaflet Deflate与Shiny集成
已更新
找到this后,我对问题进行了一些调整。我已经成功加载并使用L.deflate创建了“缩小的功能”。但是现在,我需要以某种方式从地图中获取对象,然后将它们添加到deflate对象中,如leaflet.deflate文档中所述。
我正在尝试使用步骤here将leaflet deflate plugin集成到Shiny应用程序中。我已经加载了插件,但是现在我只想知道如何从“多边形”层中获取对象并将其添加到文档中所述的delate_features对象中。
文档步骤
const map = L.map("map").setView([51.505,-0.09],12);
const deflate_features = L.deflate({minSize: 20});
deflate_features.addTo(map);
// This is the step I am not sure how to handle in the onRender()
const polygon = L.polygon([
[51.509,-0.08],[51.503,-0.06],[51.51,-0.047]
]);
polygon.addTo(deflate_features);
测试应用
library(sf)
library(leaflet)
library(htmltools)
library(htmlwidgets)
js_file <- "https://unpkg.com/Leaflet.Deflate@1.3.0/dist/L.Deflate.js"
ui <- fixedPage(
tags$head(tags$script(src = js_file)),leafletoutput("map")
)
server <- function(session,input,output) {
output$map <- renderLeaflet({
nc <- sf::st_read(system.file("shape/nc.shp",package = "sf"),quiet = TRUE)
leaflet(options = leafletoptions(preferCanvas = TRUE)) %>%
addMapPane(name = "labels",zIndex = 650) %>%
addProviderTiles(providers$Stamen.TonerLabels,options = providerTileOptions(opacity = 0.35,updateWhenZooming = FALSE,pane = "labels")) %>%
addProviderTiles(providers$Stamen.TonerBackground,updateWhenZooming = FALSE)) %>%
addpolygons(data = st_transform(nc,4326)) %>%
onRender("function(el,x,data) {
const deflate_features = L.deflate({ minSize: 20 });
deflate_features.addTo(this);
// How to select the polygons I already have and add them
// to deflate_features????
}")
})
}
shinyApp(ui,server)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。