Se vi è capitato di dover inserire dei marcatori su una google map utilizzando le API per Flash Builder 4 vi sarete accorti che non è una cosa banale se, come me, volete anche personalizzare l'icona del marcatore stesso senza "embeddarla" nel codice sorgente ma leggendola in tempo reale da un'altra URL.
Alla fine ho risolto come segue:
// ipotizzando un array di coordinate dove inserire i marcatori
public var markers:Array = new Array(
new LatLng(45.064913,7.660840),
new LatLng(45.064003,7.663393));
// definisco la request ed il loader per caricare l'icona del marcatore
var imgUrl:String = "http://www.icon.com/img.png";
var request:URLRequest = new URLRequest(imgUrl);
var imageLoader:Loader = new Loader();
// aggiungo il listener all'avvenuto caricamento dell'immagine
// al quale abbino una funzione
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (e:Event):void {
// per ogni punto dell'array definisco le option
// del marcatore e lo inseriso sulla mappa
for each (var coord1:LatLng in markers) {
// creo il marcatore
var m1:Marker = new Marker(coord1);
// creo le opzioni
var markerOptions:MarkerOptions = new MarkerOptions();
// creo la bitmap per l'icona
var bmd:BitmapData = Bitmap(e.currentTarget.content).bitmapData;
var b:Bitmap = new Bitmap(bmd);
// setto l'icona
markerOptions.icon = b;
// in base alle dimensioni dell'icona
// definisco il punto di inserimento rispetto al marcatore
markerOptions.iconOffset = new Point((b.width /2)*-1,b.height*-1);
// assegno al marcatore le opzioni
m1.setOptions(markerOptions);
// inserisco il marcatore sulla mappa
map.addOverlay(m1);
}
});
imageLoader.load(request);
Nessun commento:
Posta un commento