Google Maps API pour Flash CS3
Bien qu’il existe une API d’utilisation de Google Maps en AS3 celle-ci ne reste utilisable qu’Ã partir du flex SDK.
Cependant il existe un petit hack pour l’utiliser depuis l’environnement Flash grâce à une bien belle nouveauté de l’AS3 : le getDefinition.
Il faut tout d’abord télécharger le composants SWC fournit par Google.
Ce fichier SWC est en fait une archive contenant un SWF compilé avec toutes les classes d’utilisations de Google Maps. En l’ouvrant avec winrar par exemple vous pourrez extraire le fichier “library.swf” et le garder bien avec vous.
L’étape suivante consistera à charger “library.swf” et à récupérer les classes pour pouvoir utiliser notre google map.
function GoogleMaps ( ) {
var libraryLoader : Loader = new Loader();
libraryLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, configureLibrary);
libraryLoader.load(new URLRequest("gmaplibrary.swf"));
}
public function configureLibrary ( e : Event ) : void
{
e.target.addEventListener(Event.COMPLETE, configureLibrary);
Security.allowDomain("*"); // permet a google d'acceder a notre swf.
var appDomain : ApplicationDomain = e.target.applicationDomain;
Map = appDomain.getDefinition("com.google.maps.Map") as Class;
MapEvent = appDomain.getDefinition("com.google.maps.MapEvent") as Class;
MapType = appDomain.getDefinition("com.google.maps.MapType") as Class;
LatLng = appDomain.getDefinition("com.google.maps.LatLng") as Class;
MapMouseEvent = appDomain.getDefinition("com.google.maps.MapMouseEvent") as Class;
ZoomControl = appDomain.getDefinition("com.google.maps.controls.ZoomControl") as Class;
PositionControl = appDomain.getDefinition("com.google.maps.controls.PositionControl") as Class;
myMap = new Map();
myMap.key = '
myMap.addEventListener(MapEvent.MAP_READY, _onMapReady);
myMap.setSize(new Point(800,350));
addChild(myMap);
}
protected function _onMapReady ( e ) : void
{
myMap.removeEventListener(MapEvent.READY, _onMapReady);
myMap.enableScrollWheelZoom();
myMap.enableContinuousZoom();
myMap.setCenter(new LatLng(48.25, 11.00), 4, MapType.NORMAL_MAP_TYPE);
myMap.addControl(new PositionControl());
myMap.addControl(new ZoomControl());
}
C’est une solution un peu sale, étant donné que le typage des Class devient impossible, il faudra être minutieux afin d’éviter les erreurs.
J’ai aussi tenté de décompilé le “library.swf” avec SWF Decompiler afin d’utiliser les classes directement, mais le code est trop complexe, le code décompilé est buggué et inutilisable… dommage.
Téléchargez ici l’exemple complet.
Mots Clés:AS3 developpement
12 October 2008 at 11:46 pm
Ton blog est trop souvent mis à jour, j’arrive pas à suivre!
Il paraît que tu bosses à Paris?