Получить местоположение пользователя (широту, долготу) с помощью Bing или Google Maps API - PullRequest
9 голосов
/ 18 января 2012

есть способ получить широту и долготу пользователя, используя Bing Maps API или Google Maps API. Мне кажется, я видел фрагмент кода, где была использована функция «autoolocate me», чтобы пометить пользователя на самой карте:

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

Но эта функция не возвращает никаких данных, она просто устанавливает местоположение на карте, в то время как мне нужно это местоположение для выполнения некоторых вычислений, а именно для вычисления того, какой из предопределенного списка мест является ближайшим к текущему местоположению пользователя. Кроме того, может ли какой-либо из этих API-интерфейсов рассчитывать расстояние между двумя точками (широта, долгота), которые предоставляются в качестве входных данных?

Спасибо, Pawel

Ответы [ 2 ]

11 голосов
/ 18 января 2012

Получение вашего местоположения не является частью Map API.Вместо этого используйте HTML5 GeoLocation API , чтобы узнать ваше местоположение.Примером может быть:

 navigator.geolocation.getCurrentPosition(locationHandler);

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

Для расчета расстояния между точками широты и долготы посмотрите 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 голосов
/ 16 июля 2014

HTML5 GeoLocation получить лат и долгое текущее местоположение.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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...