Google Maps в Flex без компонента MXML - PullRequest
0 голосов
/ 15 августа 2011

Как добавить карты Google в качестве класса в main.mxml без <maps:Map key="" sensor="" />

как во Flash

ОБНОВЛЕНИЕ:

и если у меня есть класс

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 Ответ

3 голосов
/ 15 августа 2011

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 и затем ссылаться на него программно, используя этот идентификатор в качестве имени свойства:

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

В случае «addChild ()» используйте вместо этого «addElement ()» - это часть изменений между Flex 3 до 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...