各マーカーにポップアップを添付しようとしています (これには OpenLayers と OpenStreetMaps を使用しています)。各マーカーは、対応するポップアップを表示する「クリック」イベントに登録されています。
ただし、特定のマーカーのクリックを待つのではなく、起動時にすべてのポップアップを実行するだけです。
約 1000 個のマーカーがあるため、このループを使用してマーカーとポップアップ (作成時に非表示) を設定しています。
for (var i = 0; i < data.length; i++)
{
if (i == 1) {
var lonLat = new OpenLayers.LonLat(data[i].Lon, data[i].Lat).transform(fromProjection, toProjection);
var zoom = 5;
map.setCenter(lonLat, zoom);
}
var lonLat = new OpenLayers.LonLat(data[i].Lon, data[i].Lat).transform(fromProjection, toProjection);
AddingPopup(lonLat);
AddingMarker(i, lonLat);
そして、これらは両方を作成するための私の関数です:
function AddingMarker(i, lonLat) {
var marker = new OpenLayers.Marker(lonLat);
markers.addMarker(marker);
marker.events.register('click', marker, PopupsShow(i));
};
function AddingPopup(lonLat) {
var popup = new OpenLayers.Popup("Popup", lonLat, null, "text", true);
map.addPopup(popup);
popup.hide();
};
これは、実行時にすべてのマーカーに対して自動起動される関数です。
function PopupsShow(i) {
map.popups[i].show();
};
ここで何が欠けていますか。実行時に PopupsShow 関数が開始され、マーカーがクリックされるのを待っていないのはなぜですか。私は答えを探し回っていますが、何も役に立たないようです。
ありがとう!