openlayer 3:如何添加可见的pan控件

时间:2015-01-09 18:14:24

标签: openlayers-3

openlayer 2.13具有可见的平移控制但不具有ol3。 我尝试在这里添加一个:http://jsfiddle.net/tr8691ev/13/

var v=map.getView();
var c=v.getCenter();
c[1]=+2;
// p=ol.animation.pan({duration:600,source:v.getCenter()});
//map.beforeRender(p);
v.setCenter(c,v.getZoom());

这个不能正常工作。 这有什么问题?感谢。

2 个答案:

答案 0 :(得分:1)

如果用户在区域外平移,我会执行更改中心的功能。 在这种情况下,重要的是处理地图的分辨率,以了解区域的大小取决于缩放。

在用户点击左侧的情况下,您应该更改中心

var mapHorizontalMove = (mapSize[0] * resolution) / 10.0;
var mapVerticalMove = (mapSize[1] * resolution) / 10.0;

//left
center[0] -= mapHorizontalMove;
//right
center[0] += mapHorizontalMove;
//down
center[1] -= mapVerticalMove ;
//up
center[1] += mapVerticalMove ;

MYSAMPLE:

var maxExtent = [-79.59975, -1.200, -53.03076, 13.72883];
view.on('change:center', function (evt) {
    var center = view.getCenter();
    var x = center[0];
    var y = center[1];
    var resolution = view.getResolution();
    var mapSize = map.getSize();

    var mapHalfWidth = (mapSize[0] * resolution) / 2.0;
    var mapHalfHeight = (mapSize[1] * resolution) / 2.0;

    if (center[0] - mapHalfWidth < maxExtent[0]) {
        x = maxExtent[0] + mapHalfWidth;
    } else if (center[0] + mapHalfWidth > maxExtent[2]) {
        x = maxExtent[2] - mapHalfWidth;
    }
    if (center[1] - mapHalfHeight < maxExtent[1]) {
        y = maxExtent[1] + mapHalfHeight;
    } else if (center[1] + mapHalfHeight > maxExtent[3]) {
        y = maxExtent[3] - mapHalfHeight;
    }

    if (center[0] != x || center[1] != y) {
        view.setCenter([x, y]);
    }
});

答案 1 :(得分:0)

<强>:|女巫到达这里的对象就像我一样:

如果您有OpenLayers的地图而没有任何可见的控件,则 在你的代码中,每件事看起来都很好,

只需在Head标记中添加ol.css,所有内容都会回来。