2010-06-15 118 views
0

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

+1

我沒有使用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

回答

0

我創建了一個非常難看的解決方法暫時..

由於每個標記的經度&緯度是唯一我加了一些代碼,其中標記會添加到地圖中,從而創建一個全局可見的關聯數組,該數組使用Google Map的API位置對象的散列作爲關鍵字,並使用我的唯一標識符作爲值。然後,當我的事件偵聽器解僱時,我可以從返回的事件中抽取位置對象,對其進行散列,在我的數組中執行查找,並將唯一ID拉出以將標記特定信息拖入InfoWindow。

它的功能非常好,但它讓我感覺很髒。請告訴我有人有更好的解決方案?

+0

我認爲這很漂亮很多正確的解決方案。即使Google Maps API網站上的示例使用全局標記數組將InfoWindow從一個切換到另一個... – Alexandra 2013-02-06 21:37:49

相關問題