我正在使用Google Map的ActionScript API在Flash Builder 4中工作。我创建了一个地图,加载了一些自定义标记并为每个标记添加了一些MouseEvent侦听器。动态Google Maps API InfoWindow HTML内容
加载InfoWindow面板时出现问题。我想根据存储在数据库中的信息动态设置htmlContent。麻烦的是,这些信息可以每隔几秒钟更改一次,每个标记都有一个唯一的数据集,因此我无法在实际创建标记时对其进行静态设置。我有一种方法可以每分钟或将数据库中的所有记录加载到Object变量中。我需要在htmlContent中显示的所有内容都包含在此对象的唯一标识符下。
问题的基本症结在于,我无法唯一地识别信息窗口,因此我无法确定要将哪些信息拉入面板。
marker.addEventListener(MapMouseEvent.ROLL_OVER, function(e:MapMouseEvent):void { showInfoWindow(e.latLng) }, false, 0, false);
这是我的鼠标事件监听器。我所说的功能,“showInfowindow”看起来是这样的:
private function showInfoWindow(latlng:LatLng):void
{
var options:InfoWindowOptions = new InfoWindowOptions({title: appData[*I NEED A UNIQUE ID HERE!!!*].type + " Summary", contentHTML: appData[*I NEED A UNIQUE ID HERE!!!*].info});
this.map.openInfoWindow(latlng, options);
}
我以为我到的东西通过能够传递一个变量在我的事件监听器的声明,但它只是讨厌已经通过,它通过一个动态变量只返回最后一个值的使用。
实施例:
marker.addEventListener(MapMouseEvent.ROLL_OVER, function(e:MapMouseEvent):void { showInfoWindow(e.latLng, record.unit_id) }, false, 0, false);
即溶液是痛苦接近工作。当我尝试上述解决方案并滚动一个标记时,我会遍历一个循环来创建我的标记,但是每个标记的信息都反映了创建的最后一个标记的任何信息。
我为长时间的解释道歉,但我只是想让我的问题尽可能清楚。有没有人有任何关于如何修补我在底部发布的解决方案或从底层解决方案中获得的解决方案?
由于提前,
彼得Hanneman的
我没有使用ActionScript的经验,但这看起来像一个封闭的问题。你可能想看看这篇文章:https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Closures#Creating_closures_in_loops.3a_A_common_mistake(关于JavaScript,但我想这同样适用于Action Script) – 2010-07-01 15:30:54