目前,我正在使用此utility by Matt Walker在我的地图上显示弹出窗口。
我的代码是这样的:
map.defaultPopup = new ol.Overlay.Popup({ panMapIfOutOfView: false });
map.addOverlay(map.defaultPopup);
// ...
var select = new ol.interaction.Select(options));
select.getFeatures().on('change:length', function (e) {
this.map.defaultPopup.hide();
if (e.target.getArray().length > 0) {
var feature = e.target.item(0);
var center = feature.getCenter(); // getCenter is defined elsewhere
//center[1 /* Y */] += ????;
map.defaultPopup.show(center, "<p>Lorem ipsum dolor sit amet.</p>");
}
});
map.addInteraction(select);
我可以添加一个偏移&#34; ????&#34;并且它可以工作,但它不是独立于分辨率的(弹出窗口在更高的缩放级别上离功能太远)。
我想添加一个值,无论分辨率如何,都会将弹出窗口的位置移动所需的像素数量。有没有办法实现这个目标?
答案 0 :(得分:0)
map
的方法getCoordinateFromPixel()
和getPixelFromCoordinate()
可以提供帮助。例如,给定特征位置,您可以获得相应的像素,添加一些偏移并再次转换为坐标。这样弹出窗口就不会与您的功能重叠。