google-maps - bing maps api
Obtener la ubicaciĆ³n del usuario(latitud, longitud) con la API de Bing o Google Maps (2)
Obtener su ubicación no es parte de Map API. En su lugar, use la API GeoLocation de HTML5 para obtener su ubicación. Un ejemplo sería:
navigator.geolocation.getCurrentPosition(locationHandler);
function locationHandler(position)
{
var lat = position.coords.latitude;
var lng = position.coords.longitude;
}
Para calcular la distancia entre los puntos lat / lng, eche un vistazo a http://www.movable-type.co.uk/scripts/latlong.html .
// Latitude/longitude spherical geodesy formulae & scripts (c) Chris Veness 2002-2011 - www.movable-type.co.uk/scripts/latlong.html
// where R is earth’s radius (mean radius = 6,371km);
// note that angles need to be in radians to pass to trig functions!
var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var lat1 = lat1.toRad();
var lat2 = lat2.toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
¿Hay alguna forma de recuperar la latitud y la longitud del usuario mediante la API de Bing Maps o la API de Google Maps? Creo que vi un fragmento de código en el que se utilizaba una función de "autocalcularme" para marcar al usuario en el mapa en sí:
var geoLocationProvider = new Microsoft.Maps.GeoLocationProvider(map);
geoLocationProvider.getCurrentPosition();
Pero esa función no devuelve ningún dato, simplemente establece la ubicación en el mapa, mientras que necesito esa ubicación para realizar algunos cálculos, es decir, calcular cuál de las listas predefinidas de lugares es la más cercana a la ubicación actual del usuario. Aparte de eso, ¿alguna de estas API puede calcular la distancia entre dos ubicaciones (lat, lon) que se proporcionan como entrada?
Gracias, Pawel
HTML5 GeoLocation obtiene latitud y longitud de la ubicación actual. http://www.w3schools.com/html/html5_geolocation.asp
<!DOCTYPE html>
<html>
<body>
<p id="demo">Click the button to get your coordinates:</p>
<button onclick="getLocation()">Try It</button>
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
x.innerHTML="Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script>
</body>
</html>