2
這是我在stackoverflow上的第一個問題,而英語不是我的母語,所以我想爲錯誤辯解。OpenLayers.Popup closeBoxCallback未解僱
我有一個標記OpenLayers地圖。每一個標記都有它自己的彈出窗口,當點擊它時顯示。如果點擊標記,它應該消失,只有彈出窗口應該可見。當彈出窗口關閉時,標記應該再次出現。
var map = new OpenLayers.Map({
div: 'map'
});
var markers = new OpenLayers.Layer.Markers('Markers');
map.addLayers([new OpenLayers.Layer.Google('Google Streets'), markers]);
var closeCallback = function() {
console.log("CLOSE!!!");
this.marker.display(true);
this.hide();
};
var clickCallback = function(event) {
for (var i = 0; i < map.popups.length; i = i + 1) {
if (map.popups[i].visible()) {
map.popups[i].hide();
}
}
if (map.popups.indexOf(this.popup) == -1) {
map.addPopup(this.popup, false);
this.popup.marker = this.marker;
}
this.popup.show();
this.marker.display(!this.popup.visible());
OpenLayers.Event.stop(event);
};
var lonLat1 = new OpenLayers.LonLat(0, 0).transform(defaultProjection, map.getProjectionObject());
var feature1 = new OpenLayers.Feature(markers, lonLat1);
var marker1 = feature1.createMarker();
var popup1 = new OpenLayers.Popup.FramedCloud(
'popup1',
lonLat1,
new OpenLayers.Size(200, 200),
'loading...',
null,
true,
closeCallback
);
feature1.data.icon = icon.clone();
feature1.popup = popup1;
markers.addMarker(marker1);
marker1.events.register('mousedown', feature1, clickCallback);
var lonLat2 = new OpenLayers.LonLat(0, 0.5).transform(defaultProjection, map.getProjectionObject());
var feature2 = new OpenLayers.Feature(markers, lonLat2);
var marker2 = feature2.createMarker();
var popup2 = new OpenLayers.Popup.FramedCloud(
'popup2',
lonLat2,
new OpenLayers.Size(200, 200),
'loading...',
null,
true,
closeCallback
);
feature2.data.icon = icon.clone();
feature2.popup = popup2;
markers.addMarker(marker2);
marker2.events.register('mousedown', feature2, clickCallback);
如果點擊彈出窗口的關閉按鈕,會觸發事件。但是,如果我點擊另一個標記,它不會被解僱。
map.addPopup(this.popup, false);
而且當我設置獨家爲true(addPopup的第二個屬性),所以,如果一個新出現的事件不解僱所有彈出窗口會被隱藏。
謝謝你的幫助。