2012-01-18 71 views
9

là có cách để lấy vĩ độ & kinh độ của người dùng bằng cách sử dụng API Bing Maps hoặc API Google Maps. Tôi nghĩ rằng tôi thấy một đoạn mã nơi một "autolocate tôi" tính năng được sử dụng để đánh dấu người dùng trên bản đồ riêng của mình:Nhận vị trí của người dùng (vĩ độ, kinh độ) bằng Bing hoặc API Google Maps

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

Nhưng chức năng mà không trả lại bất kỳ dữ liệu, nó chỉ đơn giản là thiết lập vị trí trên bản đồ, trong khi Tôi cần vị trí đó để thực hiện một số phép tính, cụ thể là tính toán danh sách địa điểm được xác định trước là vị trí gần nhất với vị trí người dùng hiện tại. Ngoài ra, bất kỳ API nào có thể tính toán khoảng cách giữa hai vị trí (lat, lon) được cung cấp làm đầu vào?

Cảm ơn, Pawel

Trả lời

11

Bắt vị trí của bạn không phải là một phần của bản đồ API. Thay vào đó, hãy sử dụng HTML5 GeoLocation API để nhận vị trí của bạn. Ví dụ:

navigator.geolocation.getCurrentPosition(locationHandler); 

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

Để tính khoảng cách giữa các điểm lat/lng, hãy xem 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

Cảm ơn rất nhiều! Bạn cũng có thể xem xét câu hỏi tiếp theo: http://stackoverflow.com/questions/8917904/html5-geolocation-api-no-callback-is-called-whatsoever? Cảm ơn! – dragonfly

+1

Chỉ trong trường hợp ai đó nhận được toRad không xác định, hãy kiểm tra câu trả lời này: http://stackoverflow.com/a/5260472/879821 – kavain

0

HTML5 GeoLocation get lat and long current location. 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> 
Các vấn đề liên quan