Siguiendo los tutoriales de google, he podido crear en un fichero mxml mediante ActionScript el mapa. El problema viene a la hora de pasear un archivo XML con las ubicaciones que deseo mostrar en el mapa.
El código que tengo hasta ahora es el siguiente:
Código :
<?xml version="1.0" encoding="utf-8"?> <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <s: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%"/> </s:Panel> <fx:Script> <![CDATA[ import com.google.maps.LatLng; import com.google.maps.LatLngBounds; import com.google.maps.Map; import com.google.maps.MapEvent; import com.google.maps.MapType; import com.google.maps.MapOptions; import com.google.maps.MapMouseEvent; import com.google.maps.InfoWindowOptions; import com.google.maps.overlays.Marker; import com.google.maps.overlays.MarkerOptions; import com.google.maps.controls.ZoomControl; private var map:Map; private var blueIcon:Class; private var greenIcon:Class; private var customIcons:Object = { "restaurant": blueIcon, "bar": greenIcon }; public function onHolderCreated(event:Event):void { map = new Map(); map.key = "ABQIAAAA9iNYq39n_ERvjVXy2sp8hxTWoPrV-LkcatU6FDhi4genfkaxbhRDJBAxj7heO6UlDNKId6WnDajf0w"; 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(); } private function onMapPreinitialize(event:Event):void { var myMapOptions:MapOptions = new MapOptions(); myMapOptions.zoom = 14; myMapOptions.center = new LatLng(40.736072,-73.992062); myMapOptions.mapType = MapType.NORMAL_MAP_TYPE; this.map.setInitOptions(myMapOptions); } public function getXml():void { var xmlString:URLRequest = new URLRequest("http://localhost/php_crearXML.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; for (var i:Number = 0; i < markers.length(); i++) { var marker:XML = markers[i]; var name:String = marker.@nombre; var address:String = marker.@direccion; var type:String = marker.@tipo; var latlng:LatLng = new LatLng(marker.@lat, marker.@lng); (A) var marker = createMarker(latlng, name, address, type); (B) 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; } ]]> </fx:Script> </s:View>
Cuando intento compilar esto, me da dos errores (los he marcado unas lineas mas arriba como (A) y (B) ) que no he sabido solucionar ni he encontrado nada que me sirva de ayuda. Los errores son:
(A) Implicit coercion of a value of type com.google.maps.overlays:Marker to an unrelated type XML. Mapa.mxml
(B) Implicit coercion of a value of type XML to an unrelated type com.google.maps.interfaces:IOverlay.
Alguien tiene idea de que estoy haciendo mal o si me he olvidado de algo? Gracias y un saludo.