マーカー付きのレイヤーと、マウスオーバー時にポップアップウィンドウを表示するイベントリスナーがあるとします。
var hints = new OpenLayers.Control.SelectFeature(wplayer, {
hover: true,
eventListeners: {
featurehighlighted: function(event) {
var feature = event.feature;
popup = new OpenLayers.Popup(null,
feature.geometry.getBounds().getCenterLonLat().add(3000, 3000),
new OpenLayers.Size(200,10),
feature.attributes.name, false, null);
...
これはこれまでのところ機能しておりadd(3000, 3000)
、場所を問題なく移動できます。しかし、現在のズームレベルとは関係なく、同じ量のピクセルだけシフトしたいと考えています。実際のマーカーがポップアップによってブロックされないようにします。
つまり、(+15px, +15px) のような変換を現在表示されている openlayers 座標系に変換する必要があります。擬似コード:
feature.geometry.getBounds().getCenterLonLat().add(Pixels(15,15).toMap())
openlayers メソッドでこれを行う方法はありますか?