<?xml version="1.0" encoding="utf-8"?>
<!--
 Copyright 2008 Google Inc. 
 Licensed under the Apache License, Version 2.0:
    http://www.apache.org/licenses/LICENSE-2.0
-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  width="100%" height="100%" layout="absolute" viewSourceURL="srcview/index.html">
 <mx:Panel title="Xml Parsing with Google Maps Demo" width="100%" height="100%">
  <mx:UIComponent id="mapHolder"
      initialize="onHolderCreated(event);"
      resize="onHolderResized(event)"
      width="100%" height="100%"/>
 </mx:Panel>
 <mx:Script>
    <![CDATA[
      import com.google.maps.Map;
      import com.google.maps.LatLng;
      import com.google.maps.LatLngBounds;
      import com.google.maps.MapEvent;
      import com.google.maps.MapMouseEvent;
      import com.google.maps.MapType;
      import com.google.maps.InfoWindowOptions;
      import com.google.maps.overlays.Marker;
      import com.google.maps.overlays.MarkerOptions;
      import com.google.maps.controls.ZoomControl;
      import mx.controls.Alert;

      private var map:Map;

      [Embed(source="../../images/blue-dot.png")] private var blueIcon:Class;
      [Embed(source="../../images/green-dot.png")] private var greenIcon:Class;
      private var customIcons:Object = 
        { "restaurant": blueIcon, 
          "bar": greenIcon
        };
        
      public function onHolderCreated(event:Event):void {
        map = new Map();
        map.key = "ABQIAAAA7QUChpcnvnmXxsjC7s1fCxQGj0PqsCtxKvarsoS-iqLdqZSKfxTd7Xf-2rEc_PC9o8IsJde80Wnj4g";
        map.addEventListener(MapEvent.MAP_READY, onMapReady);
        mapHolder.addChild(map);
      }

      public function onHolderResized(event:Event):void {
        map.setSize(new Point(mapHolder.width, mapHolder.height));
      }

      private function onMapReady(event:Event):void {
        map.enableScrollWheelZoom();
        map.enableContinuousZoom();
        map.setCenter(new LatLng(47.614495, -122.341861), 13);
        map.addControl(new ZoomControl());
        getXml();
     }
     
     public function getXml():void {
         var xmlString:URLRequest = new URLRequest("http://imagine-it.org/mashplanet/phpsqlajax_genxml2.php");
          var xmlLoader:URLLoader = new URLLoader(xmlString);
          xmlLoader.addEventListener("complete", readXml);
    }
      
    public function readXml(event:Event):void{
        var markersXML:XML = new XML(event.target.data);
        var markers:XMLList = markersXML..marker;
        var markersCount:int = markers.length();
        var i:Number;
        for (i=0; i < markersCount; i++) {
            var markerXml:XML = markers[i];
            var name:String = markerXml.@name;
            var address:String = markerXml.@address;
            var type:String = markerXml.@type;
            var latlng:LatLng = new LatLng(markerXml.@lat, markerXml.@lng);
            var marker:Marker = createMarker(latlng, name, address, type);
            map.addOverlay(marker);
        }
    }


      public function createMarker(latlng:LatLng, name:String, address:String, type:String): Marker {
          var marker:Marker = new Marker(latlng, new MarkerOptions({icon: new customIcons[type], iconOffset: new Point(-16, -32)}));
        var html:String = "<b>" + name + "</b> <br/>" + address;
        marker.addEventListener(MapMouseEvent.CLICK, function(e:MapMouseEvent):void {
          marker.openInfoWindow(new InfoWindowOptions({contentHTML:html}));
        });
        return marker;
     } 
 
    ]]>
  </mx:Script>
</mx:Application>