2011-08-14 86 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