我正在使用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