OpenLayersを使用してマップとプロットの場所を作成しています。各場所にはマーカーとポップアップがあり、OpenLayersを使用して作成されています。フィーチャ - ここでは私の快適ゾーンの外にあるので、サンプルコードを一緒に飾っています。OpenLayersからすべてのポップアップを削除する機能
function addMarker(ll, popupClass, popupContentHTML, closeBox, overflow, type)
{
var feature = new OpenLayers.Feature(markerLayer, ll);
feature.closeBox = closeBox;
feature.popupClass = popupClass;
feature.data.icon = icon;
feature.data.popupContentHTML = popupContentHTML;
feature.data.overflow = (overflow) ? "auto" : "hidden";
var marker = feature.createMarker();
var markerClick = function (evt) {
if (this.popup == null) {
this.popup = this.createPopup(this.closeBox);
map.addPopup(this.popup);
this.popup.show();
} else {
this.popup.toggle();
}
currentPopup = this.popup;
OpenLayers.Event.stop(evt);
};
marker.events.register("mousedown", feature, markerClick);
markerLayer.addMarker(marker);
}
マップは、多くのマーカーを含むことができます(私は簡潔にするために明白な変数割り当てであることを望むものをみじん切りしました)次のように
マーカーが作成されます。
マーカーをクリックすると、ポップアップがオン/オフを切り替えます。私が夢中にしているのは、新しいマーカーがクリックされてポップアップがオンになったときにマップ上のすべてのマーカーに関するすべてのポップアップを閉じることです。つまり、一度に1つのポップアップを表示するだけです。
私のアプローチはすべて間違っているかもしれませんが、ポインタには感謝しています。
感謝をコメントのために、私はjQueryを使用してそれを見せかけ、今のところトグルなしで仕事をしています: ' var markerClick = function(evt){ $("。olPopup ")。hide(); this.popup = this.createPopup(this.closeBox); map.addPopup(this.popup); allPopups.push(this.popup); this.popup.show(); currentPopup = this.popup; OpenLayers.Event.stop(evt); }; ' –
Ahk - コメントでコードブロックを取得する方法は完全な謎です... –
コメントボックスの横にあるヘルプをクリックすると、それが表示されます。 ''コード '' – capdragon