如何在 OpenLayers3 中居中平铺图层
how to center tile layer in OpenLayers3
我正在尝试在 OpenLayers 3 中居中切片图层,但它似乎忽略了地图的中心属性。如果有帮助,我知道原始大图像的高度和宽度。
这是我的代码(也可以在JSBIN中找到):
<!DOCTYPE html>
<html>
<head>
<title>XYZ</title>
<link rel="stylesheet" href="http://openlayers.org/en/v3.13.0/css/ol.css" type="text/css">
<script src="http://openlayers.org/en/v3.13.0/build/ol.js"></script>
</head>
<body>
<div id="map" class="map" style="width: 100%; height: 500px; border: 1px solid #000;"></div>
<script>
var layer = new ol.layer.Tile({
source: new ol.source.XYZ({
url: 'http://thinker.cloudapp.net/test/{z}-{x}-{y}.png',
wrapX: false
})
});
var map = new ol.Map({
target: 'map',
layers: [layer],
view: new ol.View({
center: [0,0],
zoom: 2
})
});
</script>
</body>
</html>
如何使地图居中,并在可能的情况下缩放以适应屏幕宽度或高度?
更新:
我已经更新了代码并添加了一个 jsbin 链接。如果有帮助,原始图像大小为 4864x3328。
我认为这与投影和以像素为单位设置网格大小有关,但我找不到任何有用的东西。
我的第一个答案不是一个好答案。走这条路:
var pixelProj = new ol.proj.Projection({
code: 'pixel',
units: 'pixels',
extent: [0, 0, 4864, 3328]
});
var layer = new ol.layer.Tile({
source: new ol.source.XYZ({
projection: pixelProj,
wrapX: false,
url: 'http://thinker.cloudapp.net/test/{z}-{x}-{y}.png'
})
});
var map = new ol.Map({
target: 'map',
layers: [layer],
view: new ol.View({
zoom: 2,
center: [1364, 2400],
projection: pixelProj
})
});
http://jsfiddle.net/jonataswalker/6f233kLy/
要实现此目的,您需要等到加载完所有切片,然后获取图层范围,最后将视图拟合到此范围。
var tile_loading = 0, tile_loaded = 0;
yourTileLayer.getSource().on('tileloadstart', function(evt){
++tile_loading;
});
yourTileLayer.getSource().on('tileloadend', function(evt){
++tile_loaded;
if(tile_loaded === tile_loading){
tile_loading = 0;
tile_loaded = 0;
// put some logic here to do just once
// all tiles are loaded - get the layer extent
var extent = yourTileLayer.getExtent();
map.getView().fit(extent, map.getSize());
}
});
相关文章:
- 更改图层中单个矢量特征的图标
- 图层删除(图像);在 Kinetic.js 中不起作用
- 无法让 jQuery floatThead 处理嵌入在选项卡式图层中的表
- 如何在开放层 3 中设置矢量图层选择的样式
- 在鼠标单击时添加标记并删除打开图层中现有的标记
- 如何在打开的图层中删除选定的形状
- 确定要放置在固定图层中的图像数量
- 如何在 Photoshop 填充图层中检索颜色
- 如何在开放图层中访问 kml 中的嵌套标签
- 更改开放图层中 ol.geom.LineString 的颜色 3.
- 如何在开放图层中获取矢量图层的要素(点)的名称
- 在图层中找到一个特定的组并重新绘制它
- 打开图层中的矢量样式3
- KineticJS如何从图层中获取颜色(从图层中选取颜色)
- 如何从Openlayers 3图层中获取像素的颜色值
- 如何使用传单在地图图层中设置不同的缩放级别
- 在图层中绘制图像并将其对齐为矩阵
- Arcgis为要素图层中的每个图形设置不同的符号
- 从不起作用的开放图层中删除图层
- 在kineticjs中添加一组形状到图层中