Mapas en Flash: latitud y longitud
Hola a todos/as.
Necesito crear un mapa interactivo en Flash que muestre las migraciones de tiburones, tortugas y otros pelágicos, para mi cliente: www.migramar.org.
Las migraciones se registran de emisores colocados en los mismos animales. Cada vez que suben a la superficie, un satélite registra su posición.
La información acaba en un fichero XML, que sólo contiene: latitud, longitud, fecha/hora y nombre del animal.
Lo que me gustaría es algo parecido a www.flashearth.com, sobre el que mostrar los trazados de las migraciones.
Para empezar, me conformo con un mapa NASA Blue Marble en el que se puedan plotear coordenadas (latitud/longitud).
Por dónde empiezo??
Estuve buscando el .fla original de flashearth, pero no lo encuentro por ninguna parte.....
diego_lorenzo
Es un proyecto complejo, pero la mar de interesante. Puedes empezar por mirar APIs de mapas para Flash (tipo googlemaps, yahoo maps...) para ir viendo como funcionan. No conozco Blue Marble, pero me imagino que usará una API parecida.
Saludos.
P.D: veo que tienes una oferta en empleo, preparo un C.V. actualizado y te lo envío si no te importa.
carlos_pi
Saludos Diego, gracias por el mensaje.
La oferta de empleo es justo para esto.
He hecho bastante investigación, y he llegado a la conclusión de que Flash es la tecnología apropiada, y que quiero una aplicación propia.
El problema en sí no es complejo. Es cuestión de saber cómo se hace. Paul Neave (de flashearth.com) lo hizo en su tiempo libre... (el .fla original de FlashEarth no lo encuentro, pero vi que pesaba como 145 Kb). Ahí se ven valores de latitud y longitud, que es realmente lo único que se necesita.
Hay un ejemplo de algo parecido a lo que quiero hacer aquí: www.topp.org. Al menos tienen el mapa de fondo, y pueden marcar migraciones. La interfaz e interactividad son bastante chapuceras, pero yo tengo ideas simples y buenas para hacer algo que sea realmente bueno para Migramar.
Yo no puedo programar en ActionScript, pero sé lo que quiero y estoy abierto a sugerencias.
Interesados?
P.D. Blue Marble es el mapa fotográfico satelital del mundo gratis de la NASA:
http://earthobservatory.nasa.gov/Features/BlueMarble/
El fondo que me interesaría es el de 'topographic and bathymetric shading' que se ve aquí: http://earthobservatory.nasa.gov/Features/BlueMarble/BlueMarble_monthlies.php
diego_lorenzo
Si, en flashearth.com y www.topp.org se ve bien lo que pides. Yo lo que no entiendo es a lo que te refieres con el fondo que quieres utilizar, ¿quieres usar un jpg (los de BlueMarble que hay para descargar) o una API flash con mapas satélite como en flashearth.com?
Un saludo
P.D: te he enviado mi C.V. a tu correo.
odrakir
En realidad yo acabo de hacer algo parecido y es bastante sencillo.
Lo único que tienes que hacer es traducir la latitud y longitud a coordenadas de la imagen que tengas como mapa. Sería algo así:
var posy:Number = mapa.height*(latitud+90)/180;
var posx:Number = mapa.width*longitud/360;
La latitud va de -90 a 90 (de un polo a otro y 0 en el ecuador). La longitud de 0 a 360.
carlos_pi
Lo que quiero es un API, en el que sólo se carga lo que haga falta según el zoom que uses, y siempre se ve todo a la mejor resolución. La interactividad de FlashEarth es perfecta: cómo hace el el zoom y cómo se cargan las imágenes. Muy simple y muy elegante.
Ahora.... Lo que dice Paul Neave en el Flash Earth Help (http://www.flashearth.com/help/), es que él está usando los feeds satelitales ilegalmente, que por eso Google le dijo que quitase Google Earth de las posibles visualizaciones, y que por eso no comparte el .fla. Pero ni los de NASA, OpenLayers, Microsoft y Yahoo le han dicho nada, y yo me arriesgaría a lo mismo.
Respecto a tu código, Odrakir, está bien, pero sólo para una imagen (no API) y una proyección de la superficie de la tierra en la que las lineas de latitud y longitud son equidistantes. Pero ese no es el caso de la más común, la Mercator:
http://upload.wikimedia.org/wikipedia/commons/0/00/Mercator-proj.jpg
Ni en la otra que sale en Flash Earth, que creo que es la Robinson projection:
http://www.freeusandworldmaps.com/images/WorldProjections_Maps/WorldRobinsonBW_UK_A.jpg
(En Flah Earth, cambiad entre Yahoo Maps y OpenLayers y veréis cómo cambia el mapa, PERO, el punto central de latitud y longitud siempre se mantiene en su sitio)
Cómo lo habrá hecho Neave? Parece tan fácil....
ochionet
Hola Carlos, esto es bastante sencillo de hacer, por lo que entiendo tiene un xml con varios hijos, cada hijo tiene unas coordenadas, un nombre y si quieres un icono personalizado. Para el tema del zoom, por medio de una orden puede hacer que directamente genere el zoom correcto con respecto a la cantidad de puntos del xml. He montado aplicaciones de este tipo para varias cosas y siempre es lo mismo.
- Lo primero que tienes que hacer es bajar la api de google maps para flash.
- Generar una key de google para el dominio en cuestión.
- Lo siguiente es cargar el xml y leer todos los nodos.
- Personalizar el mapa para el tipo que quieras usar map.setMapType(MapType.______);
- Después hacer un bucle que vaya localizando los puntos
private function BuscaPuntos():void
{
var obj:Object = new Object();
for each(obj in TU_XML_PARSEADO)
{
bounds.extend(new LatLng(obj.lat,obj.lng));
crearMarca(obj.lat, obj.lng);
}
map.setZoom(map.getBoundsZoomLevel(bounds))
map.setCenter(bounds.getCenter());
}
- por cada punto localizado puedes colocar una marca
private function crearMarca(latitud:Number, longitud:Number)
{
var marker:Marker = new Marker(new LatLng(latitud,longitud));
marker.addEventListener(MapMouseEvent.ROLL_OVER, over);
marker.addEventListener(MapMouseEvent.ROLL_OUT, out);
marker.addEventListener(MapMouseEvent.CLICK, infoMarker);
map.addOverlay(marker);
}
Si quieres personalizar cada marca revisa las opciones de MarkerOptions.
Como verás te he dejado unos listener para cada marca, en el metodo que llama por cada evento
podrias poner tooltip indicando el nombre del animal, o la información que necesites. Cuando cliclas
sobre alguna marca se puede abrir una Ventana InfoWindow en el que puede aparece mas información.
Esto que te paso esta simplificado, pero puedes encontrar muchas mas información en la propia pagina
de google asi como ejemplos de codigo y demostraciones.
Saludos,
kaax Staff
Yo hice algo parecido con google maps y tengo el código en mi blog.
El ejemplo online ahora no funciona por algun problema de la apikey..pero con la tuya deberia funcionar.
Este es el link
http://www.isaacleon.com/blog/?p=337
kaax Staff
He estado comprobando el ejemplo en otros ordenadores y funciona, era cosa de mi conexión.
Un saludo
dourado
BuenAS :)
Como dice Ochionet y Kaax, con googlemaps creo que vas sobrado! :)
Saludos++
diego_lorenzo
Con googlemaps está "tirado" simplemente lees los xml con los registros del satélite y los sitúas en el mapa, pero no quiere usar esa API, esa es la complejidad el proyecto.
Saludos