GoogleMaps + AS3

GoogleMaps with AS3

Hola a todos, aquí os dejo un ejemplo para que os lo podáis descargar y trastear,
se trata de un mini ejercicio para poder insertar googlemaps en flash. Decir que está
programado con AS3. He deshabilitado opciones que tenia más desarrolladas para que fuera más sencillo de entender y no liaros tanto. Podéis hacer zoom, hacer una búsqueda, cambiar de vista, moveros por el dragPanel, y ver como se posiciona una marca customizada.

Este seria el código que como veréis no es muy complejo ni muy largo. Más adelante quizás incorporo alguna utilidad más como poner videos o que se yo :p…


 
/*
  
   * BUSCADOR  GOOGLE MAPS WITH AS3
   *
   * @author     Isaac León (KAAX)
   * @version    1.0.0
   * @code       AS 3.0
   * @email      hola@isaacleon.com
   * @url        www.isaacleon.com
   * @blog       www.isaacleon.com/blog
  
*/
 
package com.kaax.clases {
  
 
        //IMPORTS//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    import com.google.maps.controls.*;
    import com.google.maps.styles.FillStyle;
    import com.google.maps.styles.StrokeStyle;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.geom.*;
    import com.google.maps.LatLng;
    import com.google.maps.Map;
    import com.google.maps.MapEvent;
    import com.google.maps.MapMouseEvent;
    import com.google.maps.MapType;
    import com.google.maps.services.ClientGeocoder;
    import com.google.maps.services.GeocodingEvent;
    import com.google.maps.overlays.Marker;
    import com.google.maps.overlays.MarkerOptions;
    import com.google.maps.InfoWindowOptions;
    import flash.display.Stage;
    
      public class Buscador{
      
       //INICIALIZAMOS VARIABLES//////////////////////////////////////////////////////////////////////////////////////////////////////////////
      
        // ESTA APPYKEY TENÉIS QUE CAMBIARLA  POR LA VUESTRA PARA QUE ESTÉ ASOCIADA A VUESTRO DOMINIO
            private var appyKey:String ="ABQIAAAA6wzkJ5pSCnsden7rffzX1BSZMDsZNlBtwbn4yRg11-JRawRw8BSe_1VnBDtJk4ejkS6488Fc0fGzgQ";
        private var map:Map;
            private var punto:Marker;
            private var geo:ClientGeocoder;
            private var gps:MovieClip;
            private var control:MovieClip;
      private var mcStage:Stage;
      
      
      
      public function Buscador( _mc:Sprite, control:MovieClip, gps:MovieClip){
        
         this.mcStage = _mc.stage;
         this.control=control;
         this.gps=gps;
      }
    
      //INICIAMOS LOS OBJETOS EN ESCENA
           public function main():void {
  
      
          // CREAMOS UN CONTENEDOR PARA EL MAPA
          var puntoMapa:MovieClip = new MovieClip();
          puntoMapa.x = 235;
          puntoMapa.y = 175;
            this.mcStage.addChild(puntoMapa);
          
          
          //AÑADIMOS EL MAPA A SU CONTENEDOR
          map = new Map();
          map.key = appyKey;
          map.setSize(new Point(573, 420));
          map.addEventListener(MapEvent.MAP_READY, iniciarMapa);
          puntoMapa.addChild(map);
          
          
          //AÑADIMOS AL ESCENARIO LOS DOS ASSETS, LA PANTALLA DEL GPS Y EL PANEL DE CONTROL
          gps.buttonMode = false;
          gps.mouseChildren = false
          gps.x = 133;
          gps.y = 60;
          this.mcStage.addChild(gps);
          gps.mouseEnabled = false;
          control.x = 133;
          control.y = 60+gps.height;
          this.mcStage.addChild(control);
          control.bt_buscar.buttonMode=true;
 
             }
      
       public function colocamosPuntoInicial():void{
  
  
          map.clearOverlays();
          
          //CREAMOS ESTILOS PARA EL PUNTO
          var estilos:MarkerOptions = new MarkerOptions({
                                  
              strokeStyle: {
                
              color: 0×8F053D
              
              },
              fillStyle: {
              color: 0×000000,
              alpha: 0.8
              },
              label: "Hi ! ",
              labelFormat: {
              color: 0xffffff,
              size:20,
              bold: true
              },
              
              radius: 32,
              hasShadow: true,
              clickable: false,
              draggable: true,
              gravity: 0.5,
              distanceScaling: false
          });
          // CREAMOS UN PUNTO EN EL LUGAR ESPECIFICADO
          punto= new Marker(new LatLng(41.387917,2.1699187),estilos);
          //TEXTO PARA EL TOOLTIP
          var fraseTooltip:String = "Bienvenido a Barcelona!" ;
          //  SI PULSAS LA MARCA APARECE EL TOOLTIP CON EL MENSAJE DE TEXTO
          punto.addEventListener(MapMouseEvent.CLICK, function(event:MapMouseEvent): void {;
          map.openInfoWindow(event.latLng, new InfoWindowOptions({tailAlign: InfoWindowOptions.ALIGN_CENTER, contentHTML:fraseTooltip }));
          });
          map.addOverlay(punto);
      }
      
      // INICIALIZAMOS EL MAPA
      public function iniciarMapa(event:Event):void {
        
        map.removeEventListener(MapEvent.MAP_READY, iniciarMapa);
        map.enableContinuousZoom();
        map.enableScrollWheelZoom();
        map.setCenter(new LatLng(41.387917,2.1699187), 14, MapType.NORMAL_MAP_TYPE);
        //COLOCAMOS LA LANGITUD Y LA LATITUD EN EL PANEL DE CONTROL CON SOLO 3 DECIMALES
         control.long.text = (41.387917).toFixed(3);
         control.lat.text = (2.1699187).toFixed(3);
        colocamosPuntoInicial();
        //AÑADIMOS CONTROLES AL MAPA
        map.addControl(new OverviewMapControl());// CONTROL PARA ARRSTRAR EL MAPA POR ZONAS
        map.addControl(new MapTypeControl());// CONTROLES PARA CAMBIAR LAS VISTAS
        map.addControl(new PositionControl());// CONTROLES PARA NAVEGAR DE FORMA DIRECCIONAL
        map.addControl(new ZoomControl());// CONTROLES PARA EL ZOOM
        
        //INICIALIZAMOS EL OBJETO CLIENTGEOCODER
        geo = new ClientGeocoder();
        
        // BOTON DE BUSQUEDA
        control.bt_buscar.addEventListener(MouseEvent.CLICK, buscar);
        
        // EN CASO DE ÉXITO O ERROR, LLAMAREMOS ACTUAREMOS DEPENDIENDO DEL RESULTADO
        geo.addEventListener(GeocodingEvent.GEOCODING_SUCCESS, exitoBusqueda);
        geo.addEventListener(GeocodingEvent.GEOCODING_FAILURE, errorBusqueda);
        
        
      }
      public function buscar(event:Event):void {
        
        //LLAMAMOS A LA FUNCION QUE NOS DEVUELVE LA LATITUD Y LA LONGITUD DE UNA DIRECCIÓN BUSCADA
        geo.geocode(control.direccion.text);
        control.mensaje.text = "BUSCANDO...";
        
      }
      public function errorBusqueda(event:GeocodingEvent):void {
        
        //DAMOS UN MENSAJE DE ERROR EN EL CASO DE NO ENCONTRAR UNA DIRECCION
        control.mensaje.text = "DIRECCION INCORRECTA";
      }
      public function exitoBusqueda(event:GeocodingEvent):void {
  
         //OCULTAMOS MENSAJE DE BUSCANDO
         control.mensaje.text = "";
        //SI SE HA ENCONTRADO LA DIRECCIÓN COLOCAMOS UNA MARCA Y COMO ES POSIBLE QUE HAYAN VARIOS LUGARES
        //QUE SE LLAMEN DE LA MISMA FORMA, COLOCAREMOS EL PRIMER RESULTADO DEL ARRAY
        if (event.response.placemarks.length > 0) {
          
          map.clearOverlays();
          //CENTRAMOS EL MAPA EN LA DIRECCIÓN BUSCADA CON EL ZOOM QUE LE INDIQUEMOS
          map.setCenter(event.response.placemarks[0].point, 7);
          
          
          //CREAMOS ESTILOS PARA EL PUNTO
          var estilos:MarkerOptions = new MarkerOptions({
                                  
              strokeStyle: {
                
              color: 0×8F053D
              
              },
              fillStyle: {
              color: 0×000000,
              alpha: 0.8
              },
              label: "Hi ! ",
              labelFormat: {
              color: 0xffffff,
              size:14,
              bold: true
              },
              
              radius: 26,
              hasShadow: true,
              clickable: false,
              draggable: false,
              gravity: 0.5,
              distanceScaling: false
          });
          // CREAMOS UN PUNTO EN EL LUGAR ESPECIFICADO Y LE PASAMOS ESTILOS
          punto= new Marker(event.response.placemarks[0].point,estilos);
          
          //TEXTO PARA EL TOOLTIP
          var html:String = "Bienvenido a " + control.direccion.text;
          //  SI PULSAS LA MARCA APARECE EL TOOLTIP CON EL MENSAJE DE TEXTO
          punto.addEventListener(MapMouseEvent.CLICK, function(event:MapMouseEvent): void {
             map.openInfoWindow(event.latLng, new InfoWindowOptions({tailAlign: InfoWindowOptions.ALIGN_CENTER, contentHTML:html }));
          });
          //AÑADIMOS PUNTO
          map.addOverlay(punto);
        }
        //COLOCAMOS LA LANGITUD Y LA LATITUD EN EL PANEL DE CONTROL CON SOLO 3 DECIMALES
         control.long.text = (event.response.placemarks[0].point.lng()).toFixed(3);
         control.lat.text = (event.response.placemarks[0].point.lat()).toFixed(3);
        
      }
      
      
    
   }
}

 

Espero que os guste!

saludos!
Ver Buscador
Descargar Buscador

7 Responses to “GoogleMaps + AS3”

  1. ==cubik== » Blog Archive » Integrar Google maps en Flash con AS3 Says:

    [...] Podéis descargar el archivo y el código aquí. [...]

  2. Ateneu Popular » Blog Archive » Buscador de Google Maps en Flash con AS3 Says:

    [...] Descargar buscador y código [...]

  3. GoogleMaps con Flash y AS3 Says:

    [...] Codigo y Ejemplo [...]

  4. zguillez Says:

    Wow! muy buen ejemplo (y)

  5. buububu Says:

    espectacular el tutorial, la verdad es hace rato q te sigo y siempre q publicas algo, es espectacular, espero poder seguir viendo buenos aportes como este.
    saludos

  6. Administrador Says:

    me alegro de que os guste!!

    un saludo!!

  7. Sento Says:

    Hola, tengo un problema, Al intentar abrir el fichero no puedo, me da error, seguramente es porque tengo el Flash CS3 y esta hecho en el 4. Tienes un archivo para la versión que utilizo?

    Muchisimas gracias, y un gran trabajo.

Leave a Reply