The solution is to create a UIComponent container for the map.  This
works as in the sample below as well as in a popup:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
        xmlns:maps="com.google.maps.*"
        xmlns:mx="http://www.adobe.com/2006/mxml";
        creationComplete="complete()"
        layout="absolute">

        <mx:Script>
                <![CDATA[
                        import com.google.maps.Map;
                        import com.google.maps.MapEvent;

                        private var _map:Map;

                        private function complete():void
                        {
                                _map = new Map();
                                _map.key = "MY SITE KEY";
                                _map.setSize(new Point(mapContainer.width, 
mapContainer.height));
                                _map.addEventListener(MapEvent.MAP_READY, 
mapReady);
                                mapContainer.addChild(_map);
                        }

                        private function mapReady(event:MapEvent):void
                        {
                                trace('mapReady');
                        }
                ]]>
        </mx:Script>

        <mx:Canvas width="100%" height="100%">
                <mx:UIComponent id="mapContainer" width="100%" height="100%"/>
        </mx:Canvas>

</mx:Application>

On Oct 23, 8:35 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
wrote:
> I am trying to integrate google maps into a large java/FDS app I am
> working on.  To make a prototype, I have constructed the following
> example:
>
> APPLICATION MXML:
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> layout="absolute">
>
>         <mx:Script>
>                 <![CDATA[
>                         import mx.managers.PopUpManager;
>
>                        private function popup():void
>                        {
>                               PopUpManager.createPopUp(this, MapPopup, true);
>                        }
>                 ]]>
>         </mx:Script>
>
>         <mx:Canvas width="100%" height="100%">
>                 <mx:Button label="popup" click="popup()" />
>         </mx:Canvas>
> </mx:Application>
>
> MAPPOPUP MXML
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Canvas
>         xmlns:maps="com.google.maps.*"
>         xmlns:mx="http://www.adobe.com/2006/mxml";
>         width="400"
>         height="300">
>
>         <maps:Map width="100%" height="100%" key="MY SITE KEY"/>
>
> </mx:Canvas>
>
> If you run this app and click the popup button, you will get the
> following stack trace:
>
> TypeError: Error #1009: Cannot access a property or method of a null
> object reference.
>         at com.google.maps::Map/drawBackground()
>         at com.google.maps::Map/onAdded()
>         at flash.display::DisplayObjectContainer/addChildAt()
>         at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::
> $addChildAt()[E:\dev\3.1.0\frameworks\projects\framework\src\mx\core
> \UIComponent.as:5061]
>         at mx.core::Container/addChildAt()[E:\dev\3.1.0\frameworks\projects
> \framework\src\mx\core\Container.as:2208]
>         at mx.core::Container/addChild()[E:\dev\3.1.0\frameworks\projects
> \framework\src\mx\core\Container.as:2140]
>         at mx.core::Container/createComponentFromDescriptor()[E:\dev
> \3.1.0\frameworks\projects\framework\src\mx\core\Container.as:3674]
>         at mx.core::Container/createComponentsFromDescriptors()[E:\dev
> \3.1.0\frameworks\projects\framework\src\mx\core\Container.as:3486]
>         at mx.core::Container/createChildren()[E:\dev\3.1.0\frameworks
> \projects\framework\src\mx\core\Container.as:2582]
>         at mx.core::UIComponent/initialize()[E:\dev\3.1.0\frameworks\projects
> \framework\src\mx\core\UIComponent.as:5341]
>         at mx.core::Container/initialize()[E:\dev\3.1.0\frameworks\projects
> \framework\src\mx\core\Container.as:2519]
>         at MapPopup/initialize()[/Users/mreynolds/Documents/gatewayworkspace/
> GoogleMapsTest/src/MapPopup.mxml:0]
>         at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/
> internal::childAdded()[E:\dev\3.1.0\frameworks\projects\framework\src
> \mx\managers\SystemManager.as:1639]
>         at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/
> internal::rawChildren_addChildAt()[E:\dev\3.1.0\frameworks\projects
> \framework\src\mx\managers\SystemManager.as:1689]
>         at mx.managers::SystemManager/addChild()[E:\dev\3.1.0\frameworks
> \projects\framework\src\mx\managers\SystemManager.as:1225]
>         at mx.managers::PopUpManagerImpl/addPopUp()[E:\dev\3.1.0\frameworks
> \projects\framework\src\mx\managers\PopUpManagerImpl.as:263]
>         at mx.managers::PopUpManagerImpl/createPopUp()[E:\dev\3.1.0\frameworks
> \projects\framework\src\mx\managers\PopUpManagerImpl.as:178]
>         at mx.managers::PopUpManager$/createPopUp()[E:\dev\3.1.0\frameworks
> \projects\framework\src\mx\managers\PopUpManager.as:124]
>         at GoogleMapsTest/popup()[/Users/mreynolds/Documents/gatewayworkspace/
> GoogleMapsTest/src/GoogleMapsTest.mxml:87]
>         at GoogleMapsTest/___GoogleMapsTest_Button1_click()[/Users/mreynolds/
> Documents/gatewayworkspace/GoogleMapsTest/src/GoogleMapsTest.mxml:100]
>
> I have seen one other post on this forum that included this error and
> no resolution was posted.  In my real app, I am simply trying to add a
> map to a tab of a tab navigator of the main application view and I get
> this same error.  I am not trying to call any functions or methods on
> the map, the map has no ID, no listeners, nothing.  Still, I can't get
> a map to even initialize, let alone do anything with it after that
> point.  If I move the map mxml tag into the main application, instead
> of in this popup in the example, it works fine.
>
> Can anyone help me?  This issue seems quite easy to reproduce and I
> feel it has been overlooked.  I would like to use google maps in my
> flex app!!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Maps API For Flash" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-maps-api-for-flash?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to