это мой первый вопрос по stackoverflow, и английский не является моим родным языком, поэтому я хочу извинить за ошибки.
У меня есть карта 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);
Также, когда я устанавливаю exclusive (второй атрибут addPopup ) в значение true, так чтовсе всплывающие окна будут скрыты, если появится новое событие, которое не было запущено.
Спасибо за помощь.