Openlayers Overlay导致偏移
说明:
在做项目过程中,用overlay做了一个infowindow弹窗,但是在使用过程中发现一个bug:overlay.setPosition以后,会出现偏移,但是拖动一下地图或者点击一下地图其他地方就回到正确的位置。
代码如下:
let overlay = new ol.Overlay({ id: "overlay", element: "marks", positioning: "bottom-center", stopEvent: _stopEvent ? _stopEvent : false });
过程:
研究发现positioning改成默认(top-left)就没问题,紧接着试了其他几个参数center-center,bottom-left等,凡是设了center的都会有这个问题。
#参数:'bottom-left'
, 'bottom-center'
, 'bottom-right'
, 'center-left'
, 'center-center'
, 'center-right'
, 'top-left'
, 'top-center'
, 'top-right'
推测overlay在渲染center时有点bug
解决方案:
将overlay的positioning设置在加载后,即可
let overlay = new ol.Overlay({ id: "overlay", element: "marks", //positioning: _position, //这里注释掉 stopEvent: _stopEvent ? _stopEvent : false }); overlay.setPosition([_x,_y]); map.addOverlay(overlay); //解决overlay渲染center时出现偏移的问题 overlay.setPositioning("bottom-center");