2012-08-22 48 views
1

我正在使用Openlayers-2.12版本。 但锚定的弹出偏移量无法正常工作。它在地图的另一半中显示左侧的弹出框,尽管我给出了相对定位为“tr”。Openlayers中锚定弹出的偏移量

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

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

+2

偏移属性是否已被删除?我没有看到它在目前的规格,它似乎没有任何影响。 – Damon

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; 
};