我正在尝试从每个循环中获取特定变量。这些变量用于在地图上的标记上显示单击事件。如果单击地图上的标记,则会在其上显示详细信息。现在,每次循环开始时(50次)都会覆盖这些细节。我正在寻找的解决方案,让我在地图上选择一个带有相应细节的标记。
可能有一个简单的解决方案,但我还没有找到它。
代码:
for each(artistXML in artistList.events.event)
{
var gLat:int = artistXML.venue.location.*::point.*::lat;
var gLong:int = artistXML.venue.location.*::point.*::long;
var evntLng:LatLng = new LatLng(gLat,gLong);
var title:String = artistXML.title;
var wanneer:String = artistXML.startDate;
var waar:String = artistXML.venue.location.city;
var pic:String = artistXML.venue.image.(@size=="medium");
var marker:Marker = new Marker(new LatLng(gLat, gLong));
var info:InfoWindowOptions = new InfoWindowOptions();
marker.addEventListener(MapMouseEvent.CLICK, function(event:Event):void {
var marker:Marker = event.target as Marker;
marker.openInfoWindow(new InfoWindowOptions({contentHTML: "<p><b>" + title + "</b></p><br/><p>" + wanneer + "</p> <br/> <p>" + waar + "</p>"}));
});
map.addOverlay(marker);
Goverlay++;
}
由于
答案 0 :(得分:1)
在开始下一个循环之前,您需要在某处存储对值的引用。
我不确定您的Marker
和InfoWindowOptions
类的结构是什么,所以可能有更好的方法,但这是一个天真的解决方案:
创建名为mapMarkers
和infoWindows
的2个数组。对于每个循环,将新的Marker和新的InfoWindowOptions实例推送到适当的数组中。您还需要在InfoWindowOptions上设置这些变量。然后在您的单击处理程序中,您可以查找单击的标记索引(mapMarkers.indexOf(marker)
)并使用该索引获取相应的InfoWindowOptions。