Grados a puntos cardinales
Si necesitamos convertir los grados del rumbo , devueltos por la propiedad position.coords.heading a puntos cardinales de la rosa de los vientos:- Norte, N
- Noreste, NE
- Este, E
- Sureste ,SE
- Sur, S
- Suroeste, SW
- Oeste, W
- Noroeste NW
//cardinal direction, cadinal points, direcciones cardinales, puntos cardinales
//given "0-360" returns the nearest cardinal direction "N/NE/E/SE/S/SW/W/NW/N"
function bearingToCardinalDirection(bearing) {
var cardinalPoints = ["NE", "E", "SE", "S", "SW", "W", "NW", "N"];
var index = bearing - 22.5;
if (index < 0) index += 360;
index = parseInt(index / 45);
return(cardinalPoints[index]);
}
Ejemplo en CodepenOtro método para obtener los puntos cardinales de una dirección en grados, es usando la función getCardinal() escrita por Basarat, la podéis encontrar en su GitHub - Snapping an angle to the nearest cardinal direction in javascript
Formatear posiciones, latitud y longitud
Las coordenadas obtenidas por la propiedad position.coords.latitude y position.coords.longitude, inicialmente están en grados decimales 359.99999º , la siguiente función convDDToDMS() permite convertir Grados decimales al sistema sexagesimal representado en Grados minutos, Grados minutos y segundosfunction convDDToDMS(degree) {
var output = {};
output.deg = 0 | ( degree < 0 ? degree =- degree : degree );
output.min = 0 | degree % 1 * 60;
output.sec = ( 0 | degree * 60 % 1 * 6000 ) / 100;
return output;
}
la función convDDToDMS(degree) le pasamos la coordenada, latitud o longitud con el sistema grados decimales y nos devuelve un objeto con las propiedades .deg .min y .sec.var lat = 41.9397012;
var lon = -73.7402344;
var latDMS = convDDToDMS(lat);
var lonDMS = convDDToDMS(lon);
En el ejemplo la variable latDMS donde está la latitud convertida en el Sistema Sexagesimal y con latDMS.deg obtenemos los grados, latDMS.min los minutos Y latDMS.sec los segundos. latDMS.deg + 'º ' + latDMS.min + "' " + latDMS.seg + '"'
La coordenada 41.9397012 representada en 41º 56′ 22.92″Para obtener el cuadrante terrestre N,S para la latitud y E,W para la longitud, lo podemos solucionar con un condicional, dependiendo si el grado es positivo o negativo
Para obtener el cuadrante terrestre dependiendo de su latitud:
(lat > 0 ? 'N' : 'S')
Para obtener el cuadrante terrestre dependiendo de su longitud:(lon > 0 ? 'E' : 'W')
Ejemplo en CodepenCalcular la distancia entre dos coordenadas geográficas
La siguiente función permite calcular la distancia entre dos puntos geográficos, debemos pasar la latitud y longitud de los puntos a medir.la distancia entre dos puntos geográficos se puede expresar en Kilómetros o bien en Millas.
El numero: 6378.137 es el diámetro de la tierra en kilómetros de acuerdo al sistema WGS84. Use 3963.191 para millas
function getDistanceToCoords(lat1,lon1,lat2,lon2) {
function _deg2rad(deg) {
return deg * (Math.PI/180)
}
var R = 6371; // Radius of the earth in km 3963.191 in milles
var dLat = _deg2rad(lat2-lat1); // deg2rad below
var dLon = _deg2rad(lon2-lon1);
var a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(_deg2rad(lat1)) * Math.cos(_deg2rad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; // Distance in km
return d.toFixed(3);
}
Ejemplo en Codepenb
0 comentarios:
Publicar un comentario