2012-01-18 20 views
9

hay una manera de recuperar una latitud & de longitud del usuario que utiliza Bing Maps API o Google Maps API. Creo que vi un fragmento de código en un "yo localice automáticamente" característica se utiliza para marcar el usuario en el propio mapa:Obtener la ubicación del usuario (latitud, longitud) con Bing o Google Maps API

var geoLocationProvider = new Microsoft.Maps.GeoLocationProvider(map);   
geoLocationProvider.getCurrentPosition();  

Pero esa función no devuelve ningún dato, simplemente conjunto de ubicaciones en el mapa, mientras 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

Respuesta

11

Lograr que su ubicación no es parte de la API de mapa. En su lugar, use HTML5 GeoLocation API 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 el cálculo de la distancia entre los puntos LAT/LNG, echar 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; 
+0

¡Muchas gracias! ¿Podría también echar un vistazo a la pregunta de seguimiento: http://stackoverflow.com/questions/8917904/html5-geolocation-api-no-callback-is-called-whatsoever? ¡Gracias! – dragonfly

+1

Solo en caso de que alguien llegue a ser indefinido, verifique esta respuesta: http://stackoverflow.com/a/5260472/879821 – kavain

0

HTML5 de GeoLocation obtener lat y largo 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> 
Cuestiones relacionadas