2016-05-23 78 views
0

我正在嘗試製作一個應用程序來查找用戶的位置,然後提醒他們離固定位置有多遠。我是JavaScript新手,在嘗試弄清楚時遇到了很多麻煩。我無法弄清楚的部分是如何獲取用戶位置的變量lat1和lon1。我研究瞭如何找出用戶的經度和緯度,但我能找到的只是getCurrentPosition()命令的內容。唯一的問題是我不想在找到它們時返回值。無論如何,我能以某種方式實現這一目標嗎?我的代碼如下:如何更改Haversine公式來計算固定點和​​用戶位置之間的距離

var lat2 = 45.843295; 
var lon2 = -87.020821; // 2 is location 
var lat1 = 
var lon1 = 
var R = 3963.1676; // radius in mi 
var x1 = lat2-lat1; 
var dLat = x1.toRad(); 
var x2 = lon2-lon1; 
var dLon = x2.toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c; 
var TellMe= function(){ 
alert("You are"+" "+d+" "+"miles away from our school") 
}; 

lon1和lat1應該是用戶的位置。

回答

0

你想要的是在回調函數中進行計算,一旦navigator.getCurrentPosition()成功返回。此外,toRad()函數沒有定義,所以你需要先定義它。

if (typeof(Number.prototype.toRad) === "undefined") { 
    Number.prototype.toRad = function() { 
    return this * Math.PI/180; 
    } 
} 
navigator.geolocation.getCurrentPosition(function(position){ 
    calcPosition(position.coords.latitude,position.coords.longitude) 
}); 
function calcPosition(lat1, lon1){ 
    var lat2 = 45.843295; 
    var lon2 = -87.020821; // 2 is location 
    var R = 3963.1676; // radius in mi 
    var x1 = lat2-lat1; 
    var dLat = x1.toRad(); 
    var x2 = lon2-lon1; 
    var dLon = x2.toRad(); 
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
    Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
    Math.sin(dLon/2) * Math.sin(dLon/2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    var d = R * c; 
    alert("You are"+" "+d+" "+"miles away from our school") 
} 

Here是小提琴。

編輯:Here是與公式的性能優化版本的答案。

0

您是否使用過HTML5地理位置? : 這裏是簡單的Javascript通過它可以得到的位置:

if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showLocation); 
    } else { 
     x.innerHTML = "Geolocation is not supported."; 
    } 
} 

function showLocation(position) { 
    var lat1 = position.coords.latitude; 
    var lon1 = position.coords.longitude; 
    x.innerHTML = "Latitude: " + lat1 + 
    "<br>Longitude: " + lon1 ; 
} 
+0

他已經知道'getCurrentPosition',他詢問如何獲得2點位置之間的距離 – Endless

相關問題