Comunidad de diseño web y desarrollo en internet online

Aplicativo con google maps y ????????????

Citar            
MensajeEscrito el 14 Sep 2010 03:50 pm
Saludos

bueno, debo desarrollar un aplicativo similar al utilizado en [url=http://ciudadenlinea.net/][/url] como pueden ver cualquier persona que ingrese al sitio puede marcar un lugar, poner su descripción y/o sus fotos.

se que el mapa se trae a flash usando la API de google maps, tambien se que debo usar PHP para guardar la informacion, las coordenadas y las fotos en una base de datos.

lo que no se como lograr es:

1. como hacer para que cualquier usuario SIN ESTAR REGISTRADO en google maps pueda definir sitios de interes.
Para solucionar este punto se me ocurre lo siguiente: para que el usuario no tenga que estar registrado en google maps hacer que el aplicativo se autologuee en el sistema de google maps, asi cada que un usuario registre un sitio de interes lo estara haciendo desde una cuenta unica de google.

2. como guardar y en donde (GOOGLE - SITIO WEB) los sitios generados por los visitantes del sitio web donde estara el aplicativo
3. Como posicionar las coordenadas de los sitios generados por los uusuarios dentro del mapa traido de google

Si alguien tiene ideas le estare bastante agradecido

hasta pronto

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 14 Sep 2010 05:36 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Sep 2010 07:35 pm
hola ummagumma! como va ?

Mira, primero te comento la lógica q se me ocurre...

1) El sistema se conectará con la api de google maps solo para navegar en sus mapas.
2) El usuario podrá navegar por tu aplicación mirando los mapas tranquilamente, y cuando decida que quiere agregar algún lugar de interés. bastará con que cliquee en el mapa y luego mediante una interfaz de tu propia app agregará los detalles del lugar que está creando. (nombre, descripción, bla bla bla .. y todo lo que quieras)
3) esta info no se guardará en google map, (es decir q no es necesario que la aplicación o el usuario "haga login" con google maps) sino que la información q entrará el usuario se guardará en tu propia base de datos.
4) cada vez que tu sitio se cargue, levantarás desde tu base de datos todos los lugares que los usuarios hayan agregado( obviamente esto es a criterio de tu aplicación, si solo te interesa mostrar lo que ha creado determinado usuario, muestras eso y punto).

bien, ahora si te parece bien podemos ir a la codificación.
el punto (1) está a tu cargo y como bien comentó solsarg, la documentación está muy buena.
el punto (2) no es tan compleja como parece , y resolviendo esta, ya tienes parte del punto(4).
para esta parte te voy a remitir a una pregunta que acabo de contestar en el foro (que también consultaban por el uso del api de google maps) http://foros.cristalab.com/google-maps-y-as3-t91103
en ese hilo, lo que dantero quería era que al cliquear en determinado lugar del mapa, se agregara un marcador. bueno, para tí sería parecido, solo que además de agregar un marcador, harías un URLLoader para guardar la info que el usuario acaba de ingresar (y entre esa info obviamente mandarías las coordenadas de latitud / longitud).
bien, para el punto (4) como te decía, basta con que cargues los datos desde la base y al tomar las latitudes y longitudes guardadas, las muestres de igual forma en el mapa.

creo q eso te podría servir.

saludos!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 15 Sep 2010 08:24 pm
Saludos Solisarg y Debosotnas, antes que nada agradecerles sus prontas y utiles respuestas.

Efectivamente el uso de la API de google, ademas de estar muy bien documentado no es tan complejo, de hecho ya tengo el mapa montado, con algunas modificaciones y demas, incluso con lo que necesita dantero por lo que en un momento le pegare el codigo comentado para que le quede mas sencillo su uso.

Con respecto a la logica que plantea Debosotnas, eso es lo que necesito... debo comunicar mi aplicacion flash con php y xml para cargar todos los marcadores creados por los usuarios desde la base de datos y mostrarlos en mi aplicacion.

para eso se me ocurre la primer pregunta

Como hago para poder ubicar elementos en mi aplicacion flash?? es que cuando cargo el mapa, sin importar las capas no me muestra ningun elemento.

Pense en llamar un SWF externo con los controles necesarios, pero me parece bastante complicado al tratar de mandar variables - parametros entre pelis y luego al php.

Como puedo entonces crear elementos para la peli donde cargo el mapa con la API de google??

PD: pego el codigo que utilizo y funciona para cargar el mapa por si alguien lo necesita

Código ActionScript :

//IMPORTAR LAS CLASES NECESARIAS
import com.google.maps.LatLng;
import com.google.maps.Map;
import com.google.maps.MapEvent;
import com.google.maps.MapType;
import com.google.maps.controls.*;
import com.google.maps.LatLng;
import com.google.maps.overlays.*;
import com.google.maps.MapMouseEvent;
import com.google.maps.InfoWindowOptions;

//DEFINE ANCHO Y ALTO DE LA PELICULA
var ANCHO:int = stage.stageWidth;
var ALTO:int = stage.stageHeight;

//CREA EL MAPA
var map:Map = new Map();

//SE CREA UNA VARIABLE TIPO MARKER PARA LOS MARCADORES
var marker:Marker;

//LA GOOGLE API KEY(LA DA GOOGLE)
map.key = "ABQIAAAAvvxprSVgDmort-nQvP9UOBRcIBM5SEgUYyuJIuqH4Qf0kgkYgBT_K4sLwopPkxZFAw-tlQLIRz3sTA";

//ANCHO Y ALTO DEL MAPA = A LOS DE LA PELI
map.setSize(new Point(ANCHO, ALTO));

//DETECTAR SI EL MAPA YA CARGO
map.addEventListener(MapEvent.MAP_READY, onMapReady);

//SE CARGA EL MAPA PARA LA VISUALIZACION
this.addChild(map);

//SE DEFINE EL CAMPO DE TEXTO Y SUS ATRIBUTOS PARA LAS COORDENADAS DEL CENTRO
var texto:TextField = new TextField();
var formatoTexto:TextFormat = new TextFormat();
this.addChild(texto);
formatoTexto.font = "arial";
formatoTexto.size = 12;
formatoTexto.align = TextFormatAlign.LEFT;
formatoTexto.bold = true;
texto.multiline = true;
texto.background = true;
texto.autoSize = TextFieldAutoSize.LEFT;
texto.defaultTextFormat = formatoTexto;

//SE DEFINE EL CAMPO DE TEXTO Y SUS ATRIBUTOS PARA LAS COORDENADAS DE LOS MARKERS
var texto1:TextField = new TextField();
var formatoTexto1:TextFormat = new TextFormat();
this.addChild(texto1);
formatoTexto1.font = "arial";
formatoTexto1.size = 12;
formatoTexto1.align = TextFormatAlign.RIGHT;
formatoTexto1.bold = true;
texto1.multiline = true;
texto1.background = true;
texto1.autoSize = TextFieldAutoSize.RIGHT;
texto1.defaultTextFormat = formatoTexto1;

//SI TODO SE CARGO OK EJECUTA
function onMapReady(event:Event):void {
    //CENTRAR EL MAPA, DEFINIR EL ZOOM Y EL TIPO DE MAPA
    map.setCenter(new LatLng(6.186255,-75.562156), 18, MapType.SATELLITE_MAP_TYPE);
    //MUESTRA EL CONTROL DE ZOOM
    map.addControl(new ZoomControl());
    //MUESTRA EL CONTROL DE POSICIÓN
    map.addControl(new PositionControl());
    //MUESTRA EL CONTROL DE TIPO DE MAPA
    map.addControl(new MapTypeControl());    
    //CREA UN MARKER
    marker=new Marker(new LatLng(6.186255,-75.562156));
    //Y LO AGREGA A LA VISUALIZACION DEL MAPA
    map.addOverlay(marker);
    //DEFINE LAS OPCIONES DEL MARKER
    var options:MarkerOptions =
    new MarkerOptions( { fillStyle: { color: 0x000080 }} );
    marker.setOptions(options);
    //HABILITA IMPRIMIR LAS COORDENADAS EN EL MAPA
    map.addEventListener(Event.ENTER_FRAME,coordenadas);
    //HABILITA LOS CLIC EN EL MAPA PARA CREAR UN MARKER Y MOSTRAR SUS COORDENADAS
    map.addEventListener(MapMouseEvent.CLICK,mapaClic);    
}
    //MUESTRA LAS COORDENADAS DEL CENTRO DEL MAPA
    function coordenadas(e:Event):void {
        texto.text = "Lat/Lng: "+e.currentTarget.getCenter()+"\rZoom: "+e.currentTarget.getZoom() ;
        texto.x = (ANCHO-texto.textWidth)-10;
        texto.y = (ALTO-texto.textHeight)-30;
    }
    //CREA UN MARKER Y MUESTRA SUS COORDENADAS
    function mapaClic(e:MapMouseEvent):void {
        //CREA UN MARKER Y LO UBICA EN LAS COORDENADAS DEL CLIC
        marker=new Marker(e.latLng);
        //LO AGREGA A LA VISUALIZACION DEL MAPA
        map.addOverlay(marker);
        //MUESTRA LAS COORDENADAS DEL MARKER CREADO EN EL CAMPO DE TEXTO PREPARADO ANTES
        texto1.text = "" + e.latLng;
        texto1.x = (ANCHO-texto.textWidth)-10;
        texto1.y = (ALTO-texto.textHeight)-60;
    }


Muchas gracias de nuevo

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Sep 2010 03:34 pm
Cómo va ummagumma?

Ok, voy de nuevo con alguna pregunta, y disculpame que a veces soy algo lento para entender :P ...
primero que nada me dice que lo que yo te planteaba te sirve, perfecto!.

y luego dices:

ummagumma escribió:

debo comunicar mi aplicacion flash con php y xml para cargar todos los marcadores creados por los usuarios desde la base de datos y mostrarlos en mi aplicacion.


No me queda claro qué es lo que estarías necesitando (o qué es lo que te faltaría) exactamente.
así q intento responderte (me corriges si me equivoco):

- Para comunicar flash con php lo haces cargando info (por ejemplo xml) via un php. Eso seguramente está claro, así que al cargar tu swf (preloader, main o el que tengas/quieras) llamas a un php q te devolverá todos los nodos (que tendran detalles de los markers) que necesites mostrar.

ummagumma escribió:


Como hago para poder ubicar elementos en mi aplicacion flash?? es que cuando cargo el mapa, sin importar las capas no me muestra ningun elemento.


Esa parte (lo de "importar capas") no la entendí...
¿lo que preguntas es cómo mostrar esos markers (cómo mostrarlos en el mapa) una vez cargados desde php si aun no se cargó el mapa?

si esa es tu pregunta, entonces es sencillo lo que te falta. Necesitas que en el método que se despacha cuando el mapa está pronto (en tu caso el método "onMapReady"), se carguen (via addOverlay) todos los markers que hayas previamente traido en el php.

ummagumma escribió:


Pense en llamar un SWF externo con los controles necesarios, pero me parece bastante complicado al tratar de mandar variables - parametros entre pelis y luego al php.
Como puedo entonces crear elementos para la peli donde cargo el mapa con la API de google??


Esto último no lo entendí del todo... así que si aun te quedan dudas, por favor comentame.

Saludos!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Sep 2010 04:45 pm
Hola Debosotnas

gracias por la respuesta, mira te cuento mejor que es lo que necesito

Ya tengo el mapa creado y ubico marcadores mediante codigo AS, hasta ahi todo muy bien.

Como podes ver en [/url] en la parte superior izquierda hay 2 botones, uno que dice "REGISTRAR SITIO" yo necesito poder posicionar elementos (botones, clips de pelicula, etc) en el escenario, que se muestren sobre el mapa previamente cargado con la API Google.

El boton debe activar la posibilidad de que el usuario pueda crear marcadores, esa parte ya la tengo, pero viene el problema... cuando el usuario de clic sobre el mapa en X lugar donde quiere crear un marcador, necesito que se abra un movie clip imitando un pop up donde debe digitar el titulo del sitio de interes a registrar y va a tener un boton de examinar donde va a cargar la imagen, estos datos, junto con las coordenadas del punto donde clickó van a ser guardadas en una base de datos desde donde mediante php voy a generar un XML con toda la info para que al ser llamado por el flash se van a posicionar los marcadores y toda la info que los usuarios hayan guardado

si me hice entender?

para que tengas una idea mas cercana visita [url=http://ciudadenlinea.net]
y registra un sitio eso te va a aclara el panorama

gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Sep 2010 07:43 pm
perfecto ummagumma,

ummagumma escribió:


...
El boton debe activar la posibilidad de que el usuario pueda crear marcadores, esa parte ya la tengo,
...


Ok,

ummagumma escribió:


...
pero viene el problema... cuando el usuario de clic sobre el mapa en X lugar donde quiere crear un marcador, necesito que se abra un movie clip imitando un pop up donde debe digitar el titulo del sitio de interes a registrar y va a tener un boton de examinar donde va a cargar la imagen, estos datos, junto con las coordenadas del punto donde clickó van a ser guardadas en una base de datos desde donde mediante php voy a generar un XML con toda la info para que al ser llamado por el flash se van a posicionar los marcadores y toda la info que los usuarios hayan guardado
...


Como siempre, vamos con la lógica primero y luego vemos cómo hacer lo q necesitamos. La idea creo q podría andar así...
tendremos un boton ("registrar") que al igual que en la web q pasaste (ciudadenlinea.net). Este botón activará/desactivará la posibilidad de que en el click sobre el mapa, se muestre un formulario.

Una variable booleana nos ayudará a monitorear cuando el boton registro haya sido cliqueado.
Previamente a entrar más en detalles con el click y el formulario, necesitamos mediante un listener decirle al mapa que cuando hagamos click sobre él nos muestre el formulario (siempre y cuando nuestra variable booleana esté activa, sino el mapa debería reaccionar normalmente ante los clicks).
supongamos ya hemos cliqueado el boton registro, entonces nuestra variable booleana ya esta "activa", si ya hicimos la parte del listener todo deberá ir normalmente (no olvidar que de por sí el evento que es despachado desde el mapa al cliquear, ya tiene una propiedad latitud/longitud que se utilizará para ubicar nuestro contenido).

Vamos al código...

Lo primero sería armar un formulario con estos elementos.

- titulo del sitio
- una imagen a guardar
- las coordenadas del punto donde cliqueó
- etc (todos los otros datos que te interesen)

Este formulario sería un movieclip siempre oculto (al que denominaremos a efectos simplemente didácticos, "mi_form_mc").

Código ActionScript :

public var mi_form_mc:FormularioRegistroMapa;

Como ves, declaré el clip formulario con el nombre "mi_form_mc" y dije que iba a hacer del tipo "FormularioRegistroMapa" (esta es una clase nueva que crearás donde pondrás la lógica del guardar los datos desde el formulario a la base).

Bien, ahora que ya tenemos el formulario creado y oculto... lo que necesitamos es determinar en qué momento se muestra.

Para ello, siguiendo nuestra lógica (y el código que ya tienes escrito) primero declararemos la propiedad:

Código ActionScript :

private var mostrar_formulario_con_click:Boolean = false;


ahora, agregaremos lo siguiente a tu método mapaClic (el cual ya tienes creado):

Código ActionScript :

if(mostrar_formulario_con_click){
      mi_form_mc.setValuesClick(e.latLng);
      mi_form_mc.visible = true;
      mostrar_formulario_con_click = false;
}


como puedes ver en el código, uso el método (del que no habíamos hablado) "setValuesClick" del objeto "mi_form_mc", la idea es que este método te permita guardar los datos de latitud/longitud sobre los que acaba de cliquear (por eso le paso como parámetro "e.latLng") el cual junto con el resto de los campos del formulario, guardarás en la base.

finalmente como ya hice click, "mostrar_formulario_con_click" vuelve a estar false, para así dejar al mapa con el funcionamiento de click normal.

Saludos!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Sep 2010 08:21 pm
Saludos Debosotnas, vos como siempre tan agil y claro en las respuestas

He estado trabajando toda la mañana en esta aplicacion y pues bueno, ya consigo mostrar el formulario que tengo en un MC, lo estoy llamando con addchild asi:

Defino una variable y le cargo el MC previamente vinculado para AS desde la biblioteca

Código ActionScript :

var clip1:movieclip = new movieclip();


Luego en la funcion donde habilito el mapa para crear marcadores con un clic, creo el listener para cargar el MC

Código ActionScript :

map.addEventListener(MapMouseEvent.CLICK, verInfo);

Por ultimo creé una función para lanzar el MC que simula un popup

Código ActionScript :

function verInfo(e:MapMouseEvent):void {
    clip1.x = stage.stageWidth/2;
    clip1.y = stage.stageHeight/2;
    addChild(clip1);
}

Hasta ahí todo bien, me lanza el MC con el formulario.

Ahora necesito saber como poder cerrar dicho MC, intenté de la siguiente manera sin resultados

Código ActionScript :

guardar.addEventListener(MouseEvent.CLICK,cerrar);

function cerrar(e:MouseEvent):void {
    stage.removeChild(clip1);
}

Donde "guardar" es el nombre de instancia que le di al boton de guardar

Me saca el error: "Símbolo 'poup', Capa 'Capa 5', Fotograma 1, Línea 4 1120: Acceso a una propiedad clip1 no definida."

he estado leyendo y consultando y solo encuentro que asi se debe remover el child donde cargue el MC pero no pasa nada...

de verdad muchas gracias por tu tiempo y esfuerzo

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Sep 2010 08:37 pm
Hola Debosotnas,, ya esta listo lo de cerrar el popup

lo hice de la ste manera

clip1.guardar.addEventListener(MouseEvent.CLICK,cerrar);

function cerrar(e:MouseEvent):void {
removeChild(clip1);
}

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.