2012-01-18 18 views
9

Czy istnieje sposób na uzyskanie szerokości geograficznej użytkownika wynoszącej & za pomocą interfejsu API Map Google lub interfejsu API Map Google. Chyba widziałem fragment kodu, gdzie „AutoLocate mnie” cechą był używany do oznaczania użytkownika na samej mapie:Lokalizacja użytkownika (szerokość i długość geograficzna) za pomocą interfejsu Bing lub Google Maps API

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

jednak, że funkcja nie zwraca żadnych danych, to po prostu ustawić lokalizację na mapie, natomiast Potrzebuję tej lokalizacji, aby wykonać pewne obliczenia, a mianowicie obliczyć, która z predefiniowanych list miejsc jest najbliżej aktualnej lokalizacji użytkownika. Poza tym, czy któryś z tych API może obliczyć odległość między dwoma lokalizacjami (łac, lon), które są dostarczane jako dane wejściowe?

Dzięki, Paweł

Odpowiedz

11

Uzyskanie takiej lokalizacji nie jest częścią interfejsu API Map. Zamiast tego użyj numeru HTML5 GeoLocation API, aby uzyskać swoją lokalizację. Przykładem może być:

navigator.geolocation.getCurrentPosition(locationHandler); 

function locationHandler(position) 
{ 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
} 

Przy obliczaniu odległości między punktami lat/LNG, rzucić okiem na 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

Wielkie dzięki! Czy mógłbyś również rzucić okiem na kolejne pytanie: http://stackoverflow.com/questions/8917904/html5-geolocation-api-no-callback-is-called-whocsoever? Dzięki! – dragonfly

+1

Tylko w przypadku, gdy ktoś dostanie się do undRine, sprawdź tę odpowiedź: http://stackoverflow.com/a/5260472/879821 – kavain

0

HTML5 GeoLokalizacja jest łatwa i długa od aktualnej lokalizacji. 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> 
Powiązane problemy