add_polygon 在 mapdeck 中缩小地图

add_polygon in mapdeck zooms out the map

当我向闪亮的应用程序添加一个简单的地图时,没有添加多边形,缩放参数工作正常,并且地图按预期初始化。

另一方面,当我使用 add_polygon() 添加多边形时,地图被初始化为比应有的缩小得更多。

为什么会这样?

这是我的代码:

library(mapdeck)
library(sf)

sf = st_as_sf(my_LargeSpatialPolygonDataframe)

output$my_map = renderMapdeck({

    mapdeck(token = mytoken, location = c(a, b), zoom = 12,
            bearing = -45.00, pitch = 0, style = 'mapbox://styles/mapbox/light-v9') %>%

    add_polygon(data = sf,
                stroke_colour = "#000000",
                stroke_width = 20,
                stroke_opacity = 200,
                fill_opacity = 0,
                layer = "init_polygons")
})

当您通过 add_ 函数之一添加图层时,该图层将计算适合 window 框架中整个数据所需的缩放级别。您可以使用 update_view = FALSE

停止此行为

这是一个可重现的例子

在 mapdeck() 中设置位置

此处add_polygon()图层将re-zoom地图显示图层中的所有数据。这就是您所看到的行为。

library(mapdeck)

set_token("MAPBOX_TOKEN")

mapdeck(
  location = c(144.9, -37.8)
  , zoom = 11
  , bearing = -45.00
  , pitch = 0
  , style = mapdeck_style("light")
  ) %>%
  add_polygon(
    data = spatialwidget::widget_melbourne
    , stroke_colour = "#000000"
    , stroke_width = 20
    , stroke_opacity = 200
    , fill_opacity = 0
    , layer_id = "init_polygons"
    )

使用 update_view = FALSE

这会告诉图层不要更新视图,因此将使用您的原始 location() 值。

mapdeck(
  location = c(144.9, -37.8)
  , zoom = 11
  , bearing = -45.00
  , pitch = 0
  , style = mapdeck_style("light")
  ) %>%
  add_polygon(
    data = spatialwidget::widget_melbourne
    , stroke_colour = "#000000"
    , stroke_width = 20
    , stroke_opacity = 200
    , fill_opacity = 0
    , layer_id = "init_polygons"
    , update_view = F
    )