我正在使用开放的街道地图和打开的街道图层,我正在尝试创建一张门票(标记)地图,技术人员将前往标记并继续工作并移动到下一个标记。我能够创建标记并具有触发的onclick功能。我无法弄清楚的是如何从标记本身中提取信息。我正在创建像......这样的标记。
addPinViaLongLat: function(icon, long, lat, popupString) {
var icon_marker = new OpenLayers.Icon(icon, null, null);
var marker = new OpenLayers.Marker(new OpenLayers.LonLat(long, lat).transform(rapidSchedulingMap.coor_from, rapidSchedulingMap.coor_to), icon_marker);
var popup;
marker.events.register('mouseover', marker, function(evt) {
popup = new OpenLayers.Popup.FramedCloud("Popup",
new OpenLayers.LonLat(long, lat).transform(rapidSchedulingMap.coor_from, rapidSchedulingMap.coor_to),
null,
popupString,
null,
false);
rapidSchedulingMap.map.addPopup(popup);
});
marker.events.register('mouseout', marker, function(evt) {
popup.hide();
});
rapidSchedulingMap.bindClick(marker);
rapidSchedulingMap.layer.addMarker(marker);
},
我想知道是否有一种方法可以在点击时添加数据,我可以像marker.ticketNumber一样引用它。谷歌搜索它没有看到这样的东西所以我转过来。希望有人有一些想法。
编辑: 我发现how to remove a specific marker in openlayer显示了执行marker.XXXX的能力,然后将标记推送到数组中以跟踪它们。
答案 0 :(得分:2)
我找到了解决方案......
var marker = new OpenLayers.Marker(new OpenLayers.LonLat(long, lat).transform(rapidSchedulingMap.coor_from, rapidSchedulingMap.coor_to), icon_marker);
marker.data = data;
然后当我点击标记时,我能够执行marker.data并拉出我为每个标记存储的对象。无需额外的数组来跟踪任何值。