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 に答える