1

我正在使用 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";

有什么帮助吗?

4

2 回答 2

2

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

于 2012-08-28T10:22:51.293 回答
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;
};
于 2013-11-27T16:27:22.000 回答