2011-08-14 172 views
0

如何添加谷歌地圖爲Class到main.mxml withiout <maps:Map key="" sensor="" />谷歌地圖

像在Flash

UPDATE:

,如果我有類

package{ 
import com.google.maps.Map; 

public function myMap extends MovieClip { 
    var map:Map = new Map(); 
    map.setSize(new Point(300, 300)); 
    this.addChild(map); 
} 
} 

如果我在mxml中使用它

myMap:myMap = new myMap(); 
addChild(myMap); 

返回錯誤

addChild() is not available in this class. Instead, use addElement() or modify the skin, if you have one. 

,如果我用這個

var container:UIComponent = new UIComponent(); 
container.width = 300; 
container.height = 300; 
addChild(container); 

myMap:myMap = new myMap(); 
container.addChild(myMap); 

沒有什麼是不添加

感謝名單

+1

爲什麼你忽略錯誤?使用addElement()。 –

回答

3

MXML是聲明標記是在編譯時轉換成實際情況。

例如:

<s:Label text="Something" /> 

是一樣的運行

var label:Label = new Label(); 
label.text = "Something"; 
this.addElement(label); 
你的情況

所以,只要指定功能在組件生命週期的某些點,可以執行和保持參考地圖在班級。 (我使用例如一些VGroup組件)

<s:VGroup creationComplete="onCrtComplete()" ...> 
    <fx:Script> 
    <![CDATA[ 
     private var map:Map; 

     private function onCrtComplete():void 
     { 
      maps = new Map(); 

      //now you can do something with the map. 
     } 
    ]]> 
    </fx:Script> 
</s:VGroup> 

或者,你可以一個id屬性添加到MXML,然後以編程方式使用該ID作爲屬性名稱引用它:

<maps:Map id="map" key="" sensor="" /> 

在在「addChild()」的情況下,使用「addElement()」代替 - 它是Flex 3到4之間變化的一部分。

+0

我更新了我的問題,請看看:)謝謝 – AHOYAHOY