3

当我在闪亮的应用程序中添加一个简单的地图时,没有添加多边形,缩放参数可以正常工作,并且地图会按应有的方式初始化。

另一方面,当我使用 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")
})

4

1 回答 1

4

当您通过其中一个add_函数添加图层时,该图层将计算适合窗口框架中的全部数据所需的缩放级别。您可以使用停止此行为update_view = FALSE

这是一个可重现的示例

在 mapdeck() 中设置位置

在这里,add_polygon()图层将重新缩放地图以显示图层中的所有数据。这是您看到的行为。

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
    )

在此处输入图像描述

于 2019-05-16T22:28:03.127 回答