我正在尝试为每个标记附加一个弹出窗口(我为此使用 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 函数在执行时启动,而不是等待标记被单击。我一直在寻找答案,但似乎没有任何帮助。
谢谢!