Ayuda - Búsqueda - Miembros - Calendario
Versión Completa: Como Se Hace Para Trazar Una Linea Entre Coordenadas?
Swishmax.es. Foro de consulta en español > SwishMax > SwishMax 1
yenssen
Hola amigos!

Tengo un reto que no sé por donde abordar, espero poderme explicar. Lo que intento es trazar en un mapa por donde ha recorrido un viajero. El problema es que no hay forma de saber de antemano por donde pasará. Entonces lo que quiero es poder grabar coordenadas "x" y "y" en una base de datos y que el viajero las suba desde un teléfono celular con gps. Hacer que la pelicula swf lea las coordenadas y dibuje un punto en ese lugar. Luego dibujar una linea entre todos los puntos, en orden cronológico.

Yo ya pude resolver lo de la base de datos y que la pelicula flash las reciba, pero ahora que hago para graficar esos datos?

Por favor si alguien tiene alguna idea de por donde puedo empezar, desde ya gracias por su ayuda.

Saludos!
juyyu
Hola yenssen; haber si entendí lo que quieres lograr? te muestro algo para ver si te sirve, espero tu respuesta para estar seguro.
yenssen
Hola juyuu!
Si, eso es muy parecido a lo que quiero hacer, solo que yo quiero darle las coordenadas antes de abrir la pelicula, no después. Me parece muy interesante ese ejemplo que subiste, muchas gracias! Ya habia considerado hacer todo el trabajo a mano y actualizar el swf a diario. Ojalá se pueda hacer algo con tu ejemplo. :)

Un abrazo,
yenssen
juyyu
Hola nuevamente yenssen, entiendo a lo que te refieres pero como tú mismo indicaste, ya tienes la integración con la base de datos, yo te hice solamente lo que requerías, considerando los propósitos, hice las cajas de texto para que notaras las coordenadas; de manera que puedes modificar a tu gusto los datos cambiando el evento del mouse a un botón y que haga el trazo al presionar; pero bueno, te doy algunas ideas más.
  • Podrías cargar las coordenadas de la base de datos filtrada en una matriz bidimensional para x e y.
  • Como ya viste, la función que se encarga de hacer el trazo cuenta con parámetros como las coordenadas iniciales y finales, grosor, color y transparencia; de manera que puedes cambiar los valores o talvez hacerlos constantes; lo que si debe ser variable para tu caso, son las coordenadas y es lo que tomarás de la matriz anteriormente creada.
  • Para hacer varios trazos lo que sugiero es un bucle con la cantidad de los datos cargados en la matriz, tomando como punto de inicio los primeros datos de la matriz y como final los segundos y para el siguiente trazo como inicio los segundos datos de la matris y como final los terceros, así sucesivamente, esto debe hacerse automáticamente jugando con los índices de la matriz y las coordenadas hasta llegar al último dato; este proceso debe hacerse en el evento de un botón para que no se muestre al inicio.
Espero que ésta explicación te sirva, esperamos tu respuesta para ver cómo te va.
Saludos
Julito Luza
yenssen
Me parece perfecto!
Ojalá puedas poner aqui el archivo fuente para ponerme a jugar un rato y aqui subo los resultados por si le sirven a alguien más.
Gracias una vez mas.

yenssen
juyyu
Claro mi estimado, es cuanto subas tu avance, podré hacerle los cambios que requieres para que puedas ver el código fuente y que sea objeto de análisis; estaremos a la espera.
Saludos
Julito Luza
yenssen
Ok juyyu tuve que hacer unas pequeñas modificaciones al archivo para que funcionara offline y lo pudieran revisar fuera del servidor. Dejenme explicar la mecanica del proyecto:

-Un ciclista va a recorrer Puebla, visitando los pueblos importantes por todo el estado.

-Esta el mapa, donde se ve todo el estado con bordes obscuros y en gris los estados colindantes.

-El recorrido total dura 2 semanas, por lo que simplemente aparté esos espacios en la base de datos y afortunadamente son datos finitos, aparté 2 dias más por si las dudas.

-Cada noche, al final de cada dia recorrido, el ciclista actualiza su blog diciendo como le fué, lo que encontró en su camino y sube las coordenadas de donde está ahora en la base de datos.

- Lo que quiero es que swish tome las coordenadas de esos dias (si es que existen) y que dibuje un punto y una línea por cada registro. Son solo 16 puntos en total (los 14 dias + 2 extra)

- El recorrido es un circuito, por lo que el punto de inicio y fin son el mismo

- El ciclista no debe salir del territorio del estado (pero no espero que el swf valide eso, si se pasa nimodo)

- El punto rojo indica donde comenzaría y donde terminaría

- Para jalar los datos de la base de datos me basé en un tutorial oficial de swish. Simplemente los leí con php y los escribí como parámetros de la pelicula swf. el tutorial esta aqui para quien le sirva.

- Hice una version que no se conecta a la base de datos para hacerlo más facil de entender y que funcione offline. En este caso las coordenadas se escriben directamente en la pelicula a un lado del mapa. En la version final no se verán ya que las guardo en variables en vez de textos dinamicos, aunque creo que para fines educativos es lo mismo

- Las coordenadas del gps vienen en formato de latitud y longitud, pero lo que yo pienso es hacer una conversion matematica en php antes de pasar los datos al swf (con una simple regla de 3) pero aun no se como debo de darle los valores a swish, en qué escala o como. Por ejemplo como el mapa es cuadrado, no se si los valores del eje x son del 1 al 10 o del 1 al 1000. Espero que eso me quede mas claro una vez que funcione el ejemplo
Click para ver archivos adjuntos

Espero que esto sea de más ayuda. Muchas gracias!
yenssen

yenssen
Ok juyyu te mando la version completa pero sigo sin entender que diferencia hace.

Dices que mandé solo la interface pero eso es exactamente lo que tengo un mapa y unas coordenadas pero no se como juntar unas con otras. Mientras no me dejes ver un ejemplo de como funciona internamente es todo cuanto he podido hacer.

Basicamente me conecto a la base de datos con php y genero unas variables por cada valor x y y de cada dia.

Luego se los paso a flash como explican en el tutorial. Aqui esta el codigo de php, no se para que te sirve.

CÓDIGO
echo '<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="895" height="567">
        <param name="movie" value="mapa.swf" FlashVars="buttonTitle=Get%20SWiSH&buttonLink=http://www.swishzone.com">
        <param name="quality" value="high">
        <param name="wmode" value="opaque">
        <param name="swfversion" value="6.0.65.0">
        <!-- This param tag prompts users with Flash Player 6.0 r65 and higher to download the latest version of Flash Player. Delete it if you don’t want users to see the prompt. -->
        <param name="expressinstall" value="Scripts/expressInstall.swf">
        <!-- Next object tag is for non-IE browsers. So hide it from IE using IECC. -->
        <!--[if !IE]>-->
        <object type="application/x-shockwave-flash" data="mapa.swf?';

echo 'varx1=', $resvarx1, '&';
echo 'varx2=', $resvarx2, '&';
echo 'varx3=', $resvarx3, '&';
echo 'varx4=', $resvarx4, '&';
echo 'varx5=', $resvarx5, '&';
echo 'varx6=', $resvarx6, '&';
echo 'varx7=', $resvarx7, '&';
echo 'varx8=', $resvarx8, '&';
echo 'varx9=', $resvarx9, '&';
echo 'varx10=', $resvarx10, '&';
echo 'varx11=', $resvarx11, '&';
echo 'varx12=', $resvarx12, '&';
echo 'varx13=', $resvarx13, '&';
echo 'varx14=', $resvarx14, '&';
echo 'varx15=', $resvarx15, '&';
echo 'varx16=', $resvarx16, '&';
echo 'varx17=', $resvarx17, '&';
echo 'varx18=', $resvarx18, '&';
echo 'vary1=', $resvary1, '&';
echo 'vary2=', $resvary2, '&';
echo 'vary3=', $resvary3, '&';
echo 'vary4=', $resvary4, '&';
echo 'vary5=', $resvary5, '&';
echo 'vary6=', $resvary6, '&';
echo 'vary7=', $resvary7, '&';
echo 'vary8=', $resvary8, '&';
echo 'vary9=', $resvary9, '&';
echo 'vary10=', $resvary10, '&';
echo 'vary11=', $resvary11, '&';
echo 'vary12=', $resvary12, '&';
echo 'vary13=', $resvary13, '&';
echo 'vary14=', $resvary14, '&';
echo 'vary15=', $resvary15, '&';
echo 'vary16=', $resvary16, '&';
echo 'vary17=', $resvary17, '&';
echo 'vary18=', $resvary18, '"';
echo 'width="895" height="567">
          <!--<![endif]-->
          <param name="quality" value="high">
          <param name="wmode" value="opaque">
          <param name="swfversion" value="6.0.65.0">
          <param name="expressinstall" value="Scripts/expressInstall.swf">
          <!-- The browser displays the following alternative content for users with Flash Player 6.0 and older. -->
          <div>
            <h4>Content on this page requires a newer version of Adobe Flash Player.</h4>
            <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
          </div>
          <!--[if !IE]>-->
        </object>
        <!--<![endif]-->
      </object>';


Ahora, si sirve de algo hice un archivo html que pasa los valores al flash sin conectarse a la base de datos, en vez de escribirlos en el swish los recibe del codigo html, que es lo mismo que imprime el codigo php que esta arriba.

Las cajas de texto no las he quitado porque sigo sin saber que valores tengo que declarar. Luego los cambio a actionscript o simplemente los saco de la escena para que no se vean supongo que es igual.


Gracias una vez mas por el tiempo que te has tomado en ayudarme.
Espero que ahora haya quedado mas claro :)

Un abrazo.

yenssen

Click para ver archivos adjuntos

Click para ver archivos adjuntos
juyyu
Queda claro yenssen, me interesaba saber de qué manera haces la carga desde la base de datos y cómo lo almacenas en SwishMax; y por lo que puedo ver lo haces uno por uno, que para tu propósito creo que estará bien; al margen de eso y para posteriores proyectos tuyos, creo que deberías considerar realizar la carga con un bucle.
Te hice el trazado de lineas como tú haces la carga de variables, para que sea más sencillo para ti; al cambiar los datos de los textbox podrás notar que cambia el trazado.
Cabe indicar que el trazo se realiza consideando las coordenadas x e y tomando como punto de origen (0,0) el lado superior izquierdo de la animación, cada línea realizará un trazo de diferente color definido aleatoriamente; como mensionaste tú podrás adaptar las coordenadas mediante tu regla de tres simple, creo que podrás hacerlo sin problemas.
Sin más preámbulos creo que podrás ver el script y adaptarlo a tu propósito.







Ver grande
Saludos
Julito Luza
yenssen
Genial juyyu muchas gracias!!

No pude revisar el archivo porque esta en swishmax 2 y yo tengo el ultimo release del uno. Voy a ver si consigo un trial o algo.
Te agradezco muchisimo la ayudooota que me has dado estos dias, (mas el crecimiento personal de saber hacer algo nuevo :)

Un abrazo.

yenssen
juyyu
Hola yenssen, chispas... no me percaté de la versión unsure.gif, en estos momentos estoy de salida pero en cuanto disponga de tiempo lo hago en swishmax y lo subo wink.gif.
Saludos
Julito Luza
juyyu
Hola yenssen, acabo de hacer tu proyecto en SWISHmax v1 para que puedas abrirlo y editarlo a tu modo, creo que ahora sí podrás manejarlo con comodidad; debes tener en cuenta que podrás verlo funcionando solamente exportándolo, porque a diferencia de versiones posteriores, no podrás verlo funcionando desde en SWISHmax.
Esperamos tu apreciación.
Saludos
Julito Luza
Esta es una versión "reducida (lo-fi)" de nuestro contenido. Para ver la versión completa con mas información, formato e imágenes, por favor haz click aquí.
Invision Power Board © 2001-2012 Invision Power Services, Inc.