openlayers中锚定弹出窗口的偏移量

时间:2012-08-22 09:42:47

标签: openlayers

我正在使用Openlayers-2.12版本。 但锚定的弹出偏移不能正常工作。它在地图的另一半显示左侧的弹出窗口,虽然我给出了相对定位为“tr”。

var popup = new OpenLayers.Popup.Anchored("popup");
var offset = {'size':new OpenLayers.Size(10,12),'offset':new OpenLayers.Pixel(0,-12)};
popup.offset = offset;
popup.relativePosition = "tr";

任何帮助?

2 个答案:

答案 0 :(得分:2)

我正在回答我自己的问题,认为它可以帮助别人。 如果我只使用弹出窗口而不是锚定弹出窗口,它工作正常。

答案 1 :(得分:1)

它似乎是一个偏移属性,它们可以访问用于计算x,y位置的函数。

popup.calculateNewPx = function(px){
    // modify OpenLayers.Pixel object here
    return px;
}

参考:http://dev.openlayers.org/docs/files/OpenLayers/Popup/Anchored-js.html#OpenLayers.Popup.Anchored.calculateNewPx

更具体地说,这就是我最终要做的事情。

popup.calculateNewPx = function(px){
    if (popup.size !== null){
        switch (popup.relativePosition){
            case 'tl':
                px = px.add((popup.size.w * -1) - popup.offset, (popup.size.h * -1) - popup.offset);
                break;
            case 'bl':
                px = px.add((popup.size.w * -1) - popup.offset, popup.offset);
                break;
            case 'tr':
                px = px.add(popup.offset, (popup.size.h * -1) - popup.offset);
                break;
            case 'br':
                px = px.add(popup.offset, popup.offset);
                break;
        }
    }
    return px;
};