小册子R中地图的自动移动视图

时间:2017-07-24 04:50:12

标签: r shiny leaflet

我需要在地图中将传单地图的设置设置为新的多边形添加:

    observeEvent(input$do, {

    shapeComuna = paste0("cl_",input$interval,"comunas_geo")
    archComuna = paste0("shapefiles/cl_",input$interval,"comunas_geo")
    comuna <- readOGR(dsn = archComuna, layer = shapeComuna)
    names(comuna)[1] <- "ID"
    shapeData2 <- spTransform(comuna, CRS("+proj=longlat +ellps=GRS80"))

    proxy <- leafletProxy("mymap") 
    proxy %>% clearShapes() %>%  addPolygons(
      data = shapeData2,
      smoothFactor = 0.3,
      fillOpacity = 0.45,
      stroke = TRUE,
      opacity = 1,
      weight = 1.8,
      popup = shapeData2$NOMBRE,
      layerId = shapeData2$ID,
      group = "Comunas"
    ) %>% setView()
})

当我点击输入$ do时,清除所有多边形并打印新的多边形,但我无法动态设置该新多边形的视图。

是否存在一个用于搜索新多边形并在其中设置视图的表单?或者需要取一个shapefile并将其传递给setView?

1 个答案:

答案 0 :(得分:0)

您确实可以从形状文件中获取边界,请参阅Here

因此,在您的代码中,您可以执行以下操作:

df = do.call(rbind,lapply(shapeData2, function(x) 
        {data.frame(lon = c(min(x$coords[,1]),max(x$coords[,1])),lat = c(min(x$coords[,2]),max(x$coords[,2]))})

然后使用

map %>% fitBounds(min(df$lon), min(df$lat), max(df$lon), max(df$lat))

相应地修改mpa的界限。注意:由于缺少reproducible example,因此我没有使用此代码,但它可能会指向正确的方向。