2008年11月17日月曜日

OpenLayers 16d Popupの非表示/表示

ポップアップを非表示から始めたい場合は次のようにします。
次のスクリプトをコメントアウトします。

/*popup = new OpenLayers.Popup(
"chicken",
new OpenLayers.LonLat(-25500,-74500),
new OpenLayers.Size(100,100),
"<img src='./mapsign/tatsu2.png'></img>",
true);
map.addPopup(popup);
*/

次の行を追加します。

AutoSizePopup = OpenLayers.Class(OpenLayers.Popup, {
autoSize: true,
maxSize: new OpenLayers.Size(100,100) // 最大サイズ autoSizeとペアで使用
});
popupClass = AutoSizePopup;
popupContentHTML = "<img src='./mapsign/tatsu2.png' width='150px' height='150px'></img>";
// ここから変更なし
var markers = new OpenLayers.Layer.Markers("Markers");
map.addLayer(markers);

var ll = new OpenLayers.LonLat(-26000,-74000);
var feature = new OpenLayers.Feature(markers, ll);
// ここまで
feature.popupClass = popupClass; // 追加
feature.data.popupContentHTML = popupContentHTML; // 追加
---

*AutoSizePopup 内の autoSize と maxSize はペアで使用します。
*<img src='./mapsign/tatsu2.png' width='150px' height='150px'></img>の width と height を指定しないと最初の表示でポップアップの大きさが、0px x 0px になります。

function mousedown(evt) を次のように修正します。

function mousedown(evt) {
if (popup == null) {
popup = feature.createPopup();
map.addPopup(popup);
} else {
popup.toggle();
}
OpenLayers.Event.stop(evt);
}

0 件のコメント: