OpenLayers 3 显示白色 space 而 dragging/panning
OpenLayers 3 Shows white space while dragging/panning
我现在正在使用 Ol3 显示静态图像(如 http://openlayers.org/en/latest/examples/static-image.html)。虽然当我放大并开始 panning/dragging 时,我可以看到白色 space,如示例所示。我不想看到那个。
是否可以只平移到图像的末尾,这样白色 space 就不会出现?
You can restrict the dragging of the image by restricting its extent.
这是 link 到 fiddle 的内联。
map.on('moveend', 函数(evt){
console.log(view.getZoom());
if(view.getZoom()<=2){
view.setZoom(3);
}
});
var constrainPan = function() {
console.log("move");
var extents=[0, 0, 1024, 968]
var visible = view.calculateExtent(map.getSize());
var centre = view.getCenter();
var delta;
var adjust = false;
if ((delta = extents[0] - visible[0]) > 0) {
adjust = true;
//console.log(delta);
centre[0] += delta;
} else if ((delta = extents[2] - visible[2]) < 0) {
adjust = true;
centre[0] += delta;
}
if ((delta = extents[1] - visible[1]) > 0) {
adjust = true;
centre[1] += delta;
} else if ((delta = extents[3] - visible[3]) < 0) {
adjust = true;
centre[1] += delta;
}
if (adjust) {
view.setCenter(centre);
}
};
view.on('change:resolution', constrainPan);
view.on('change:center', constrainPan);
我现在正在使用 Ol3 显示静态图像(如 http://openlayers.org/en/latest/examples/static-image.html)。虽然当我放大并开始 panning/dragging 时,我可以看到白色 space,如示例所示。我不想看到那个。
是否可以只平移到图像的末尾,这样白色 space 就不会出现?
You can restrict the dragging of the image by restricting its extent.
这是 link 到 fiddle 的内联。
map.on('moveend', 函数(evt){
console.log(view.getZoom());
if(view.getZoom()<=2){
view.setZoom(3);
}
});
var constrainPan = function() {
console.log("move");
var extents=[0, 0, 1024, 968]
var visible = view.calculateExtent(map.getSize());
var centre = view.getCenter();
var delta;
var adjust = false;
if ((delta = extents[0] - visible[0]) > 0) {
adjust = true;
//console.log(delta);
centre[0] += delta;
} else if ((delta = extents[2] - visible[2]) < 0) {
adjust = true;
centre[0] += delta;
}
if ((delta = extents[1] - visible[1]) > 0) {
adjust = true;
centre[1] += delta;
} else if ((delta = extents[3] - visible[3]) < 0) {
adjust = true;
centre[1] += delta;
}
if (adjust) {
view.setCenter(centre);
}
};
view.on('change:resolution', constrainPan);
view.on('change:center', constrainPan);