我有小面积的矩形 WMS,并希望限制 WMS 扩展外的平移,因此 map 外根本看不到白色或黑色区域。
添加 extent
至 View
对我不起作用,并且在有关此选项的文档中已写入
The extent that constrains the center, in other words, center cannot be set outside this extent.
但据我所知,如果中心在范围内,但在最角落,它会显示此范围之外的白色区域,但我根本不想看到白色区域。
用 OL3 可以实现吗?
最佳答案
这是我的解决方案。我刚刚写了它,所以它没有被广泛测试。例如,如果您开始旋转 map ,它可能会中断,如果您缩小得太远,它可能会出现故障。
var constrainPan = function() {
var visible = view.calculateExtent(map.getSize());
var centre = view.getCenter();
var delta;
var adjust = false;
if ((delta = extent[0] - visible[0]) > 0) {
adjust = true;
centre[0] += delta;
} else if ((delta = extent[2] - visible[2]) < 0) {
adjust = true;
centre[0] += delta;
}
if ((delta = extent[1] - visible[1]) > 0) {
adjust = true;
centre[1] += delta;
} else if ((delta = extent[3] - visible[3]) < 0) {
adjust = true;
centre[1] += delta;
}
if (adjust) {
view.setCenter(centre);
}
};
view.on('change:resolution', constrainPan);
view.on('change:center', constrainPan);
这需要变量
map
, view
(具有明显的含义)和 extent
(您希望可见的 xmin、ymin、xmax、ymax)可用。
关于openlayers-3 - 在 OpenLayers3 中限制 WMS 范围外的平移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27200086/