2012-08-22 4 views
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"; 

도움이 필요하십니까?

답변

2

나는 다른 사람들을 도울 수 있다고 생각하여 내 자신의 질문에 대답하고 있습니다. 고정 된 팝업 대신 팝업 만 사용하면 정상적으로 작동합니다.

+2

offset 속성을 제거 했습니까? 나는 현재의 스펙에서 그것을 볼 수 없으며 아무런 영향을 미치지 않는 것으로 보인다. – 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; 
}; 
관련 문제