[英]Passing new data to variable is giving me error
我正在嘗試設置一個簡單的地理圍欄。 如果我在沒有''
情況下添加 lat 和 long ,它工作正常。 因此,如果我添加更新的變量,它似乎無法正確加載。 很難解釋,但如果我像這樣運行它,它就可以工作
var distance;
var job_p_lat = 52.407580;
var job_p_lng = -1.486180;
var my_lat = 52.414493799999995;
var my_lng = -1.5574936;
distance = calculateDistance(my_lat, my_lng, job_p_lat, job_p_lng)
$("#distance").text(distance);
if (distance < .05) {
$("#message").text("Yes, were inside .05 KM!!! :) A+")
} else if (distance > .05) {
$("#message").text("No, not inside .05 KM :(")
}
但是,如果我像這樣更改數據,它似乎無法正確加載?
var job_p_lat = '52.407580';
var job_p_lng = '-1.486180';
var my_lat = '52.414493799999995';
var my_lng = '-1.5574936';
距離計算器代碼是:
function calculateDistance(lat1, lon1, lat2, lon2) {
var R = 5550; // km
var dLat = (lat2 - lat1).toRad();
var dLon = (lon2 - lon1).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;
return d;
}
Number.prototype.toRad = function() {
return this * Math.PI / 180;
}
錯誤:
未捕獲的類型錯誤:lat1.toRad 不是 initsuccess (scriptnew3.1.js:175) 處的calculateDistance (scriptnew3.1.js:442) 函數
似乎真的無法弄清楚問題是什么?
如果在它周圍添加引號,它會被解釋為一個字符串。 如果您想將其作為 int 使用,則必須將其轉換為 int。
lat.parseInt() 或 lat.parseFloat() 會起作用。
是的,這是可能的:
function calculateDistance(lat1, lon1, lat2, lon2) {
var R = 3958.7558657440545; // Radius of the earth in km
var dLat = (lat2 - lat1) * Math.PI / 180; // deg2rad below
var dLon = (lon2 - lon1) * Math.PI / 180;
var a =
0.5 - Math.cos(dLat)/2 +
Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
(1 - Math.cos(dLon))/2;
return R * 2 * Math.asin(Math.sqrt(a));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.