如何根据分辨率添加像素

时间:2015-03-30 16:24:19

标签: javascript openlayers-3

目前,我正在使用此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;并且它可以工作,但它不是独立于分辨率的(弹出窗口在更高的缩放级别上离功能太远)。

我想添加一个值,无论分辨率如何,都会将弹出窗口的位置移动所需的像素数量。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

map的方法getCoordinateFromPixel()getPixelFromCoordinate()可以提供帮助。例如,给定特征位置,您可以获得相应的像素,添加一些偏移并再次转换为坐标。这样弹出窗口就不会与您的功能重叠。