2012-08-22 51 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; 
};