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.
