用javascript计算lat和lat之间的距离只返回NaN
Calculating distance between lat long with javascript only returns NaN
所以我有以下一块javascript,我不知道为什么我一直得到Nan每当我试图控制台日志的东西在距离函数内。即使log lat1,也会得到NaN。但这只发生在getDistance函数内部,其他地方都工作得很好。显然,函数的其余部分不能正常工作,因为所有内容都返回NaN。
(function(){
var lat = 52.387388 ; //example lat
var lon = 4.646219 ; //example lon
function initCoords() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(createLatLong);
} else {
showError("Your browser does not support Geolocation!");
}
}
function createLatLong(position) {
var lat2 = position.coords.latitude;
var long2 = position.coords.longitude;
console.log(lat + "createLatLong");
getDistance();
}
function getDistance(lat, lon, lat2, long2) {
var R = 6371;
var dLat = (lat2-lat) * Math.PI / 180;
var dLon = (long2-lon) * Math.PI / 180;
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat * Math.PI / 180 ) * Math.cos(lat2 * Math.PI / 180 ) *
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; }
window.onload = initCoords;
})();
Here's fiddle
声明的"getDistance()"函数的参数隐藏了在函数外部声明的变量。或者在调用时传入参数:
getDistance(lat, lon, lat2, long2);
,否则去掉函数声明中的形式形参。
由于浮点数的四舍五入,1-a可能是负值。
请替换line:
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
:
var tan2 = 1-a;
if (tan2 < 0) {
tan2 = 0;
}
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(tan2));
相关文章:
- JavaScript函数未返回谷歌地图lat/long的值
- Possibile使用Manifest v2下的HTML5地理位置API将lat/long转换为国家/地区
- 如何在文本搜索后返回long/lat
- 计算php或js中的距离
- 使用谷歌地图api计算距离并将其设置在表格中<td>
- 获取给定lat-long的javascript中的当前日期和时间
- 如何在谷歌地图api v3中获得无公里驾驶距离
- 铯JS-两点之间的距离
- 地理位置和计算从当前纬度/液化天然气到另一纬度/液化石油气的距离
- cloudSearch:范围从0到某个值之间的距离
- 计算数据点阵列与平均值的最大距离,并返回相关数据点
- 使用getElementById时不显示lat和lng
- 捕获窗口Lat,Longs与传单
- 远距离变换元素的宽度/高度(以像素为单位)
- 将谷歌地图制作成一定的距离(米)
- 使用Lat Long的气泡高地图
- 如何获取所有旅行模式的距离和持续时间,例如驾驶,公交,骑自行车,在我的页面中步行以及将其存储在数据库中
- 距离计算器Lat和Long
- 用javascript计算lat和lat之间的距离只返回NaN
- 过滤城市的纬度和经度列表在给定的距离从另一个城市(与lat/long)