微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将Leaflet Deflate与Shiny集成

如何解决将Leaflet Deflate与Shiny集成

已更新

找到this后,我对问题进行了一些调整。我已经成功加载并使用L.deflate创建了“缩小的功能”。但是现在,我需要以某种方式从地图中获取对象,然后将它们添加到deflate对象中,如leaflet.deflate文档中所述。


我正在尝试使用步骤hereleaflet 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 举报,一经查实,本站将立刻删除。