<?xml version="1.0" encoding="utf-8"?>
<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>