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
-~----------~----~----~----~------~----~------~--~---