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]))
]);