获取地理位置及计算距离
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;
}