*.jsに保存されている座標に基づいてマップ上に配置される一連のマーカーがあります
(図に示すように)各マーカーにポップアップを追加することはできましたが、それは私が望んでいたものではありません。
https://dl.dropbox.com/u/108179246/Cattura.JPG
マーカーごとに、それぞれのマーカーをクリックしたときにのみ開くポップアップを挿入しようとしています。これは私がこれまでに使用したコードです。
function showConsideredSamplingPoints() {
var consideredMarkers = new OpenLayers.Layer.Markers( "Considered samplings (" + consideredPoints.length + ")");
var lonLat = null;
for (var i = 0, len = consideredPoints.length; i < len; i++) {
lonLat = new OpenLayers.LonLat(consideredPoints[i].lon, consideredPoints[i].lat)
.transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
osmmap.getProjectionObject() // to Spherical Mercator Projection
);
var marker= new OpenLayers.Marker(lonLat);
consideredMarkers.addMarker(marker, iconRed.clone());
popup = new OpenLayers.Popup.FramedCloud(i,
lonLat,
new OpenLayers.Size(200, 200),
"example popup"+osmmap.popups.length,
null, true);
popup.autoSize = true;
marker.events.register("click", marker, function(e){
osmmap.popups[i].show();
});
osmmap.addPopup(popup);
}
osmmap.addLayer(consideredMarkers);}
ご覧のとおり、マーカーごとにイベントを挿入しようとしましたが、機能しませんでした。なんで?エラーは何ですか?
解決策:私の友人のおかげで、私は解決策を見つけました。イベントの宣言に誤りがありました。コードを正しく完全に実行します。
var consideredMarkers = new OpenLayers.Layer.Markers("Considered samplings (" + consideredPoints.length + ")")
, marker = []
, lonLat = null
, len
, i
, num
, osmid
, popup;
for (i = 0, len = consideredPoints.length; i < len; i++) {
lonLat = new OpenLayers.LonLat(consideredPoints[i].lon, consideredPoints[i].lat).transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
osmmap.getProjectionObject() // to Spherical Mercator Projection
);
num = consideredPoints[i].num;
osmid = consideredPoints[i].osmid;
marker[i] = new OpenLayers.Marker(lonLat);
consideredMarkers.addMarker(marker[i], iconRed.clone());
popup = new OpenLayers.Popup.FramedCloud(
i, //id
lonLat, // lonlat
new OpenLayers.Size(200, 200), // size
"Point:" + num + " OsmId:" + osmid + "<---", // content
null, // anchor
true // close
);
popup.autoSize = true; // initial setting
popup.hide(); // hide this popup!
osmmap.addPopup(popup); // add to the osmmap popup list
marker[i].events.register("click", popup, function () { // add click event
this.toggle(); // show or hide
});
}
osmmap.addLayer(consideredMarkers);
}