我在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
当地图显示在R中时它很好但是当我将它导出到.html文件时,它允许用户缩小太多以至于有三个世界地图副本。
我想设置它,以便最大缩小允许只有一个地图副本作为网页(与R中显示的方式相同)。
我试过了
tileOptions(maxZoom=5)
但是这只会在R中查看地图时影响缩放,而不是在导出到html时。
答案 0 :(得分:4)
Leaflet的L.Map
课程可以选择停止复制地图的叠加层:
启用此选项后,地图会跟踪您平移到另一个"复制"世界的并且无缝地跳转到原始世界,以便所有覆盖图如标记和矢量图层仍然可见。
http://leafletjs.com/reference.html#map-worldcopyjump
确保用户不会突破特定区域的正确方法是使用L.Map
maxBounds
选项:
设置此选项后,地图会将视图限制为给定的地理边界,当用户尝试在视图外平移时,会将用户弹回。
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)
)
)
)
你可以通过在noWrap
上设置L.TileLayer
选项来实现这一目标,但实际上所做的一切就是停止重复切片,这不是你实际问题的解决方案:
如果设置为true,则瓷砖不会在世界宽度(-180到180经度)之外加载而不是重复。