Cerca nel blog

mercoledì 28 aprile 2010

Angolo nerd: custom marker icon in Flash Builder 4

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