Javascript 如何在可见区域下拉伸地图?

Javascript 如何在可见区域下拉伸地图?,javascript,leaflet,Javascript,Leaflet,在本例中,地图在高度上以最小的缩放进行拉伸。 例如: 我试图找出示例代码,但它很复杂。 我的地图: 我希望您发现这个解决方案很有用 设mapExtent=[0.00000000,-4100.00000000,4100.00000000,0.00000000]; 设minZoom=0; 设maxZoom=6; 设maxBounds=[ [0, 0], [-4100, 4100] ]; 设mapMaxResolution=0.2500000; 设mapMinResolution=Math.pow2

在本例中,地图在高度上以最小的缩放进行拉伸。 例如: 我试图找出示例代码,但它很复杂。 我的地图:


我希望您发现这个解决方案很有用

设mapExtent=[0.00000000,-4100.00000000,4100.00000000,0.00000000]; 设minZoom=0; 设maxZoom=6; 设maxBounds=[ [0, 0], [-4100, 4100] ]; 设mapMaxResolution=0.2500000; 设mapMinResolution=Math.pow2,maxZoom*mapMaxResolution; 设crs=L.crs.Simple; crs.scale=功能缩放{ console.logzoom; 返回Math.pow2,缩放/贴图分辨率; }; crs.zoom=功能缩放{ 返回Math.logscale*mapMinResolution/Math.LN2; }; 设map=L.map'map'{ crs, minZoom, maxZoom, maxBounds, zoomSnap:0,//重要 最大边界粘度:1.0, 属性控制:false, 动物控制:正确 }; L.tileLayer'http://{s}.tile.osm.org/{z}/{x}/{y}.png'{ 属性:“©;参与者”, maxNativeZoom:4, 诺拉普:没错, minZoom, 最大缩放 }.addTomap; map.fitbunds[ crs.Unproject.pointmapExtent[2],mapExtent[3], crs.Unproject.pointmapExtent[0],mapExtent[1] ]; 地图。关于“zoomend”,函数{ document.querySelector.zoom.innerText=map.getZoom; }; html, 身体{ 身高:100%; 保证金:0; } 地图{ 宽度:100%; 身高:100%; } .zoom{ 字号:4rem; 字号:700; 位置:固定; 底部:20px; 左:20px; z指数:999; 颜色:fff; }
抱歉,可能是重复的,但这并不能解决我的问题。地图不会在可见区域的高度上延伸。我复制了你指出的例子。。。而且,它不起作用。但是我在那里使用了maxBoundsViscosity参数来防止平移出世界边。我不确定我是否理解你想要实现的目标。您正在尝试设置“最小/最大缩放”吗?不是这样:当“最小缩放”为1时,贴图比div区域小得多;当“最小缩放”为2时,贴图在垂直方向上比div区域大。我想设置minZoom=2,并将地图拉伸到div的高度。如图所示:Grzegorz T.,再次感谢。关于您在jsfiddle.net上的示例。。。在地图周围缩放=2时,我们会看到一个灰色区域。这就是我想要阻止的——在任何屏幕大小的高度拉伸地图:breamap.hostronavt.ru/Untitled-1.jpgI不知道地图是否可以这样展开。在这个例子中,你给了conan Fatives.net/map/2/-2116.0/2002.0,地图也不是100%的页面高度。她也有同样的边距。@Katamanga我做了一个帖子更新,看到了
<div id="map" style="width: 100%; height: 100%; background: #000000; margin: 0;"></div>
<script type="text/javascript">
    var mapSW = [0, 32768],
        mapNE = [32768, 0];
    var map = L.map('map', {    
        attributionControl:false,
        zoomControl: false,
        maxBoundsViscosity: 1.0,
        }).setView([0, 0], 2);
    var Main_Map = L.tileLayer('map_png/{z}/{x}/{y}.png',{  
        minZoom: 1,
        maxZoom: 7,
        maxNativeZoom: 4,
        continuousWorld: false,
        noWrap: true,
        crs: L.CRS.Simple,
        }).addTo(map);
    map.setMaxBounds(new L.LatLngBounds(    
        map.unproject(mapSW, map.getMaxZoom()),
        map.unproject(mapNE, map.getMaxZoom())
        )); 
    </script>
        var mapExtent = [0.00000000, -4000.00000000, 4000.00000000, 0.00000000];
        var mapMinZoom = 2;
        var mapMaxZoom = 5;
        var mapMaxResolution = 0.25000000;
        var mapMinResolution = Math.pow(2, mapMaxZoom) * mapMaxResolution;
        var tileExtent = [0.00000000, -4000.00000000, 4000.00000000, 0.00000000];
        var maxBounds = [[0,0], [-4000,4000]];
        var crs = L.CRS.Simple;
            crs.transformation = new L.Transformation(1, -tileExtent[0], -1, tileExtent[3]);
            crs.scale = function(zoom) {
                return Math.pow(2, zoom) / mapMinResolution;
            };
            crs.zoom = function(scale) {
                return Math.log(scale * mapMinResolution) / Math.LN2;
            };

        var map = new L.Map('map', {
            renderer: L.canvas,
            maxZoom: mapMaxZoom,
            minZoom: mapMinZoom,
            layers: overlays,
            crs: crs,
            maxBounds: maxBounds,
            maxBoundsViscosity: 1,
            attributionControl:false,
            zoomControl:false

        });

            layer = L.tileLayer('map_png/{z}/{x}/{y}.png', {
            minZoom: mapMinZoom, maxZoom: mapMaxZoom,
            bounds: [[0,0], [-4000,4000]],
            tms: false          
        }).addTo(map);

        map.fitBounds([
        crs.unproject(L.point(mapExtent[2], mapExtent[3])),
        crs.unproject(L.point(mapExtent[0], mapExtent[1]))
        ]);