在用 R 中的传单创建的世界地图中缩小时,世界的多个副本

Bog*_*ogs 5 r leaflet

我在 R 中使用传单库,我正在使用以下代码创建世界地图:

 leaflet(data = sPDF) %>%

  addProviderTiles("Stamen.Watercolor") %>%
  addPolygons(fillColor = ~pal(sPDF$Colonizer_col), 
              fillOpacity = 0.8, 
              color = "#BDBDC3", 
              weight = 1, 
              popup = state_popup) %>%
  addLegend("bottomright", pal = pal, values = ~na.omit(Colonizer),
            title = "Colony Information",
            labFormat = labelFormat(prefix = ""),
            opacity = 1 ) %>%

  addCircles(data=left, lng = ~LONG, lat = ~LAT, weight = 1,
             radius = ~sqrt(Totals)*300, popup = ~area_popup_left) %>%


  addCircles(data=arrived, lng = ~LONG, lat = ~LAT, weight = 1,
             radius = ~sqrt(Totals)*300, popup = ~area_popup_arrive, fillColor = "Green" )%>%


  setView(lng = -1.5, lat = 53.4, zoom = 2.5)#%>%# set centre and extent of map 
Run Code Online (Sandbox Code Playgroud)

当地图在 R 中显示时一切正常,但是当我将其导出到 .html 文件时,它允许用户缩小到世界地图的三个副本。我想设置它以便最大缩小只允许将地图的一个副本作为网页(与在 R 中呈现的方式相同)。我试过, tileOptions(maxZoom=5) 但这只会影响在 R 中查看地图时的缩放,而不是导出到 html 时。

iH8*_*iH8 9

Leaflet 的L.Map类有一个选项来停止复制地图的叠加层:

启用此选项后,当您平移到世界的另一个“副本”时,地图会跟踪并无缝跳转到原始世界,以便标记和矢量图层等所有叠加层仍然可见。

http://leafletjs.com/reference.html#map-worldcopyjump

确保用户不会平移特定区域的正确方法是使用L.Map'smaxBounds选项:

设置此选项后,地图会将视图限制在给定的地理范围内,当用户尝试在视图外平移时将其弹回。

http://leafletjs.com/reference.html#map-maxbounds

在代码中:

leafletMap(
    "map", "100%", "100%",
    initialTileLayer = "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
    initialTileLayerAttribution = HTML('&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://cartodb.com/attributions">CartoDB</a>'),
    options=list(
        center = c(0, 0),
        zoom = 0,
        worldCopyJump = FALSE,
        maxBounds = list(
            list(-90, -180),
            list(90, 180)
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

您确实noWrap可以通过在您的选项上设置选项来解决L.TileLayer这个问题,但实际上所做的只是阻止瓷砖重复,这不是您实际问题的解决方案:

如果设置为 true,则图块不会在世界宽度(-180 到 180 经度)之外加载,而不是重复加载。

http://leafletjs.com/reference.html#tilelayer-nowrap