Leaflet 尽可能多地显示地图,而不复制或显示地图以外的区域

Leaflet 尽可能多地显示地图,而不复制或显示地图以外的区域,leaflet,Leaflet,我的地图占据了屏幕的100%,当用户加载地图时,我会显示整个世界 在第一次加载时,我试图在以下三个条件下尽可能多地展示世界: 赤道的本初子午线在屏幕上居中 如果未显示纬度90度以上和经度90度以下的区域,则地图会放大到足够大 如果地图左侧和右侧的区域不重复,则地图将被放大到足够大的范围。基本上没有两个或两个以上的阿拉斯加或俄罗斯 目前我正在使用.fitBounds([[-90,-180],[90180])但这只符合我的第一个标准。实现这一点的最佳方法是什么?利用地图,同时调用 也就是说,您希

我的地图占据了屏幕的100%,当用户加载地图时,我会显示整个世界

在第一次加载时,我试图在以下三个条件下尽可能多地展示世界:

  • 赤道的本初子午线在屏幕上居中
  • 如果未显示纬度90度以上和经度90度以下的区域,则地图会放大到足够大
  • 如果地图左侧和右侧的区域不重复,则地图将被放大到足够大的范围。基本上没有两个或两个以上的阿拉斯加或俄罗斯
目前我正在使用
.fitBounds([[-90,-180],[90180])但这只符合我的第一个标准。实现这一点的最佳方法是什么?

利用地图,同时调用

也就是说,您希望计算一个跨越
[-85.0511,-180],[85.0511,180]
的矩形覆盖整个地图视口的缩放级别,然后将地图的
maxZoom
设置为该值

注意,最大和最小纬度为+/-85.0511,而非+/-90;传单默认贴图投影(EPSG:3857 AKA)是一个垂直延伸到无穷远的投影,没有极点的表示

还要注意的是,
getBoundsZoom
的输出取决于的值和贴图容器的大小。无论何时调整贴图的大小,都可能需要重新计算贴图的
maxZoom

tl;dr:
map.setMaxZoom(map.getBoundsZoom([-85.0511,-180],[85.0511180]],true))

利用地图的,同时调用

也就是说,您希望计算一个跨越
[-85.0511,-180],[85.0511,180]
的矩形覆盖整个地图视口的缩放级别,然后将地图的
maxZoom
设置为该值

注意,最大和最小纬度为+/-85.0511,而非+/-90;传单默认贴图投影(EPSG:3857 AKA)是一个垂直延伸到无穷远的投影,没有极点的表示

还要注意的是,
getBoundsZoom
的输出取决于的值和贴图容器的大小。无论何时调整贴图的大小,都可能需要重新计算贴图的
maxZoom

tl;dr:
map.setMaxZoom(map.getBoundsZoom([-85.0511,-180],[85.0511180]],true))