Problem to display 3D google map.
- by nemade-vipin
hello friends,
I have implemented one Flex application in which I want to display 3D google map.In which I am getting the error the NUll object reference during map display.
Here is my code:-
    
   import com.google.maps.controls.MapTypeControl;
   import adobe.utils.XMLUI;
   import mx.rpc.events.FaultEvent;
   import mx.controls.Alert;
   import generated.webservices.*;
   import mx.collections.ArrayCollection;
   import mx.controls.*;
   import generated.webservices.*;
   import com.google.maps.LatLng; 
import com.google.maps.Map3D; 
import com.google.maps.MapEvent; 
import com.google.maps.MapMouseEvent; 
import com.google.maps.services.GeocodingEvent; 
import com.google.maps.services.ClientGeocoder; 
import com.google.maps.overlays.Marker; 
import com.google.maps.InfoWindowOptions; 
import com.google.maps.MapOptions; 
import com.google.maps.MapType; 
import com.google.maps.View; 
import com.google.maps.controls.NavigationControl; 
import com.google.maps.geom.Attitude; 
import mx.controls.Alert; 
     [Bindable]
        private var childName:ArrayCollection;
     [Bindable]
        private var childId:ArrayCollection;  
        private var photoFeed:ArrayCollection;
        private var trackinginfochild:TrackingInfo;
        private var arrayOfchild:Array;
        private var newEntry:GetSBTSMobileAuthentication;
        private var trackinginfo:GetSBTSTrackingInfo;
        private var childObj:Child;
        private var UserId:int;
        private var lat:int;
        private var long:int;
        private var latlong:LatLng; 
    public var user:SBTSWebService;
    public function authentication():void
    {
           // Instantiate a new Entry object.
            user = new SBTSWebService();
            if(user!=null)
            {
            user.addSBTSWebServiceFaultEventListener(handleFaults);
            user.addgetSBTSMobileAuthenticationEventListener(authenticationResult);
            newEntry = new GetSBTSMobileAuthentication(); 
                if(newEntry!=null)
                {
                newEntry.mobile=mobileno.text;
                newEntry.password=password.text;
                user.getSBTSMobileAuthentication(newEntry);
                }
            }
    }
    public function handleFaults(event:FaultEvent):void
    {
        Alert.show("A fault occured contacting the server. Fault message is: " + event.fault.faultString);
    }
    public function authenticationResult(event:GetSBTSMobileAuthenticationResultEvent):void
    {
        if(event.result != null && event.result._return>0) 
        {
           if(event.result._return > 0)
           {
              UserId = event.result._return;
             loginform.enabled = false;
              getChildList(UserId);       
              viewstack2.selectedIndex=1;
           }
           else
           {
             Alert.show("Authentication fail");
           }
        }
    }
  public function getChildList(userId:int):void
  {
     var childEntry:GetSBTSMobileChildrenInfo = new GetSBTSMobileChildrenInfo();
     childEntry.UserId = userId;
     user.addgetSBTSMobileChildrenInfoEventListener(sbtsChildrenInfoResult);
     user.getSBTSMobileChildrenInfo(childEntry);
  }
   public function sbtsChildrenInfoResult(event:GetSBTSMobileChildrenInfoResultEvent):void
    {
        if( event.result._return!=null) 
        {
        arrayOfchild  = event.result._return as Array;
        photoFeed = new ArrayCollection(arrayOfchild);
        childName = new ArrayCollection();
       for( var count:int=0;count<photoFeed.length;count++)
       {
           childObj = photoFeed.getItemAt(count,0) as Child;
           childName.addItem(childObj.strName); 
       }
        }
    }
private function trackingInfo():void
{
              for( var count:int=0;count
                        user.getSBTSTrackingInfo(trackinginfo);
                }
              }
           }
}   
private function getTrackingInfo(event:GetSBTSTrackingInfoResultEvent):void
 {
        if(event.result._return != null)
        {
            trackinginfochild = event.result._return as TrackingInfo;
           lat = trackinginfochild.dblLatitude;
           long = trackinginfochild.dblLongitude;
          latlong  = new LatLng(lat,long);
         }
 }
private function onMapPreinitialize(event:MapEvent):void { 
var myMapOptions:MapOptions = new MapOptions(); 
myMapOptions.zoom = 12; 
myMapOptions.center =  latlong;
myMapOptions.mapType = MapType.NORMAL_MAP_TYPE; 
myMapOptions.viewMode = View.VIEWMODE_PERSPECTIVE; 
myMapOptions.attitude = new Attitude(20,30,0); 
buslocation.setInitOptions(myMapOptions); 
buspath.setInitOptions(myMapOptions);
} 
   private function onMapReady(event:MapEvent):void 
   { 
     this.buslocation.addControl(new NavigationControl()); 
     this.buslocation.addControl( new MapTypeControl());   
} 
]]>
<mx:Move id="hideEffect"
    yTo="-500" />
<mx:Move id="showEffect"
    xFrom="500"/>
<mx:Panel width="100%" height="100%"
    headerColors="[#000000,#FFFFFF]" hideEffect="{hideEffect}" showEffect="{showEffect}">
    <mx:TabNavigator id="viewstack2" selectedIndex="0" creationPolicy="all" 
    width="100%" height="100%"> 
        <mx:Form label="Login Form" id="loginform" hideEffect="{hideEffect}" showEffect="{showEffect}">
         <mx:FormItem label="Mobile NO:" creationPolicy="all">
            <mx:TextInput id="mobileno"/>
         </mx:FormItem>
        <mx:FormItem label="Password:" creationPolicy="all">
            <mx:TextInput displayAsPassword="true" id="password" />
       </mx:FormItem>
        <mx:FormItem>
            <mx:Button label="Login" click="authentication()"/>
       </mx:FormItem>
        </mx:Form>
           <mx:Form label="Child List" id="childForm" hideEffect="{hideEffect}" showEffect="{showEffect}">
              <mx:Label width="100%" color="blue" 
                   text="Select Child."/>
              <mx:RadioButtonGroup id="radioGroup" itemClick="trackingInfo()"/>
                 <mx:Repeater id="fieldRepeater" 
                                dataProvider="{childName}">
                                <mx:RadioButton groupName="radioGroup" 
                                            label="{fieldRepeater.currentItem}"
                                            value="{fieldRepeater.currentItem}"/>
                 </mx:Repeater>
          </mx:Form>
          <mx:Form label="Child Information" hideEffect="{hideEffect}" showEffect="{showEffect}">
                <mx:FormItem>
                      <mx:DataGrid id="childinfo">
                            <mx:columns>
                                  <mx:DataGridColumn headerText="Child Name" dataField="strName"/>
                                  <mx:DataGridColumn headerText="School Name" dataField="strSchoolName"/>
                                  <mx:DataGridColumn headerText="Pick Up Point" dataField="strPickUpPointName"/>
                                  <mx:DataGridColumn headerText="Drop Down Point" dataField="strDropDownPointName"/>
                            </mx:columns>
                      </mx:DataGrid>
                </mx:FormItem>
               <mx:FormItem>
                      <mx:Button label="click here to see bus location"/>
                </mx:FormItem>
          </mx:Form>
          <mx:Form label="Bus Location" hideEffect="{hideEffect}" showEffect="{showEffect}">
         <maps:Map3D xmlns:maps="com.google.maps.*" mapevent_mappreinitialize="onMapPreinitialize(event)" id="buslocation"  
         width="100%" height="100%" url="http://code.google.com/apis/maps/" key="ABQIAAAAXuX6aG-r_N0-tQNxUEV-vRSE8al1BQssMxLXJiP75kIjR3ssLxT3D52_u94hI-dMIkD72FmnK-P4og"/> 
         </mx:Form>
          <mx:Form label="Bus path" hideEffect="{hideEffect}" showEffect="{showEffect}">
          <maps:Map3D xmlns:maps="com.google.maps.*" mapevent_mappreinitialize="onMapPreinitialize(event)" id="buspath"  
         width="100%" height="100%" url="http://code.google.com/apis/maps/" key="ABQIAAAAXuX6aG-r_N0-tQNxUEV-vRSE8al1BQssMxLXJiP75kIjR3ssLxT3D52_u94hI-dMIkD72FmnK-P4og"/> 
         </mx:Form>
    </mx:TabNavigator>
</mx:Panel>
I am getting this error :-
TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at com.google.maps.geom::Geometry$/computeSeparatingAxes()
    at com.google.maps.geom::TileEnumerator/enumerateTiles()
    at com.google.maps.core::PerspectiveTilePane/computeOptimalSet()
    at com.google.maps.core::PerspectiveTilePane/render()
    at com.google.maps.core::PerspectiveTilePane/configure()
    at com.google.maps.managers::PerspectiveTileManager/updateView()
    at com.google.maps.managers::PerspectiveTileManager/initializePanes()
    at com.google.maps.managers::PerspectiveTileManager/onInitialize()
    at MethodInfo-190()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9298]
    at com.google.maps.wrappers::BaseEventDispatcher/dispatchEvent()
    at com.google.maps.wrappers::EventDispatcherWrapper/dispatchEvent()
    at com.google.maps.core::MapImpl/size()
    at com.google.maps.core::MapImpl/setSize()
    at com.google.maps.wrappers::IMapWrapper/setSize()
    at com.google.maps::Map/internalSetSize()
    at com.google.maps::Map/onUIComponentResized()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9298]
    at mx.core::UIComponent/dispatchResizeEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:7077]
    at mx.core::UIComponent/setActualSize()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:6706]
    at mx.containers.utilityClasses::BoxLayout/updateDisplayList()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\containers\utilityClasses\BoxLayout.as:219]
    at mx.containers::Form/updateDisplayList()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\containers\Form.as:375]
    at mx.core::UIComponent/validateDisplayList()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:6351]
    at mx.core::Container/validateDisplayList()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\Container.as:2677]
    at mx.managers::LayoutManager/validateDisplayList()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:622]
    at mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:695]
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8628]
    at mx.core::UIComponent/callLaterDispatcher()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8568]
Please resolve my issue.