您的位置:首页 > 编程语言

获取地理位置及计算距离

2016-03-09 18:16 393 查看

获取地理位置及计算距离

function loadSupport(){         //支持检测
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(updataPosition,showError);
}else{
alert("对不起,浏览器不支持");
document.innerHTML = "对不起,浏览器不支持"
}
}

function updataPosition(position){
var latitudeP = position.coords.latitude,
longitudeP = position.coords.longitude,
accuracyP = position.coords.accuracy,
altitudeP = position.coords.altitude,
altitudeAccuracyP = position.coords.altitudeAccuracy,
speedP = position.coords.speed;
var distanceP = getDistance(latitudeP,longitudeP,31.22, 121.48);
}

function showError(error){
switch(error){
case error.PERMISSION_DENIED:
document.innerHTML = "用户拒绝方位地理位置"
break;
case error.POSITION_UNAVAILABLE:
document.innerHTML = "地理位置信息无法获取"
break;
case error.TIMEOUT:
document.innerHTML = "获取位置时间超时"
break;
case error.UNKNOWN_ERROR:
document.innerHTML = "未知错误"
break;
}
}

function rad(d){
return d * Math.PI / 180;
}

function getDistance(lat1,lng1,lat2,lng2){
var earth_radius = 6378.137             //单位为公里
var radlat1 = rad(lat1);
var radlng1 = rad(lng1);
var radlat2 = rad(lat2);
var radlng2 = rad(lng2);

var a = radlat1 - radlat2;
var b = radlng1 - radlng2;

var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radlat1)*Math.cos(radlat2)*Math.pow(Math.sin(b/2),2)));
s = s * earth_radius;
s = Math.round(s);
return s;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  代码整理