我在 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 时。
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('© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <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