Una línea de geodésica es la línea de menor longitud entre dos puntos dados. Podríamos hablar de la distancia menor entre dos puntos terrestres.
Y es que si vemos un mapa del mundo aplanado, la distancia más corta entre dos puntos no es una linea recta, sino que será la línea geodésica.
En el artículo base de este original, el autor habla de un viaje Londres-San Francisco, en el cual la ruta que se sigue no es la línea recta que atravesaría todo Estados Unidos, sino que el avión sube hasta Groelandia y entra por la frontera de Canada, siguiendo la línea geodésica.
Si alguna vez voláis desde Europa a la costa oeste de los Estados Unidos (San Francisco, Seattle,…) podréis comprobar esta ruta y si tenéis suerte, disfrutar de unos bellos paisajes. Pero volvamos al código, que nos desviamos.
Google Maps, nos permite el trazar una línea geodésica entre dos puntos dados. Para ello nos apoyaremos en la clase GPolyline. La misma que nos sirve para crear un polígono definiendo sus vertices mediante longitudes-latitudes.
La estructura general de GPolyline es la siguiente:
GPolyline(latlngs, color?, weight?, opacity?, opts?)
Los parámetros son los siguientes:
- latlngs, es un array de longitudes-latitudes. Las cuales representamos ayudándonos de la clase GLatLng.
- color?, es el color de la línea que dibujará el polígono. La interrogación demarca su opcionalidad.
- weight?, el ancho de la línea en pixeles.
- opacity?, opacidad de la línea. Que se indicara con un valor entre 0 y 1.
- opts?, las opciones del polígono. Para nuestro ejemplo el campo más importante.
Decimos que el parámetro opts es el más importante, ya que dentro de las opciones que se le pueden pasar a la clase GPolyline, una de ellas es geodesic. Esta propiedad indicará si la línea a pintar es una línea geodésica, valor true o línea normal, valor false.
A si que lo primero definimos esta propiedad.
var lineageodesica={geodesic:true}; var linearecta={geodesic:false};
Ahora inicializamos la clase GPolyline:
var geodesica = new GPolyline([ new GLatLng(51.5002, -0.1262), // Londres new GLatLng(47.6801, -122.3300) // Seattle ], "#ff0000", 5, 0.7, lineageodesica);
Y solo nos quedará añadirla al mapa que hayamos cargado:
map.addOverlay(geodesica);
Ya tendremos cargada la línea geodésica en el mapa.
Una cosa interesante es que la clase GPolyline, nos devuelve la distancia entre los dos puntos con el método .getLength(). Así podremos saber la distancia entre los dos puntos marcados.
Visualizar el ejemplo | Descargar el código
Vía: Programa con Google.