您好,欢迎来到东饰资讯网。
搜索
您的当前位置:首页距离计算 html5,HTML5-Geolocation获取经纬度及计算当前位置到目标位置距离

距离计算 html5,HTML5-Geolocation获取经纬度及计算当前位置到目标位置距离

来源:东饰资讯网
获取地理信息
navigator是window环境下的一个属性,包含了当前浏览器的一些信息数据
geolocation,HTML5的新属性,是navigator对象的一个属性
getCurrentPosition(getPositionSuccess, getPositionError, position_option)是geolocation下的一个方法,返回当前位置信息

/*navigator.geolocation.watchPosition(getposition);

移动端使用,位置改变触发getposition*/getposition();functiongetposition(){//获取位置信息

if(navigator.geolocation){/*position_option配置navigator.geolocation.getCurrentPosition方法参数*/

varposition_option={

enableHighAccuracy:true,//是否使用高精度设备获取值,gps>wifi>ip

maximumAge:30000,//表示浏览器从新获取位置信息的时间间隔

timeout:5000 //设定请求超时时间

};/*调用navigator.geolocation.getCurrentPosition方法可获取用户当前位置,该方法有三个参数:

获取成功后回调函数,并传入一个position值

获取失败后回调函数,并传入error信息

配置项:json格式,enableHighAccuracy,maximumAge,timeout三个参数配置*/navigator.geolocation.getCurrentPosition(getPositionSuccess, getPositionError, position_option);

}else{

alert("很抱歉,您的设备不支持地理定位!")

}

}/*成功后回调函数getPositionSuccess( position ),position为成功后返回信息对象*/

functiongetPositionSuccess(position){varlat=position.coords.latitude;//获取纬度

varlng=position.coords.longitude;//获取经度

/*positiion对象比较少用到的属性

timestamp返回当前位置建立时间的时间戳

coords.accuracy 位置精度

coords.altitude 海拔,海平面以上以米计

coords.altitudeAccuracy 位置的海拔精度

coords.heading 方向,从正北开始以度计

coords.speed 速度,以米/每秒计*/alert("您所在的位置: 纬度" +lat+ ",经度" +lng );if(typeofposition.address!== "undefined"){//判断是position对象是否有address属性,有则输出address信息

varcountry=position.address.country;varprovince=position.address.region;varcity=position.address.city;

alert('您位于' +country+province+ '省' +city+'市');

}if(lat!= '' &&lng!= ''){//判断,若是经纬度不等于空则计算两个位置间的距离

alert(distance(lat,lng,23.137004,113.301858)+"米");

}

}/*失败后回调函数getPositionError(error),error为失败后返回信息*/

functiongetPositionError(error){/*error.message为返回错误信息,建议自定义

error.code为返回错误提示码*/

switch(error.code) {caseerror.TIMEOUT:

alert("链接超时,请重试");break;caseerror.PERMISSION_DENIED:

alert("您拒绝了使用位置共享服务,查询已取消");break;caseerror.POSITION_UNAVAILABLE:

alert("获取位置信息失败");break;caseerror.UNKNOW_ERROR:

alert("其它错误");break;

}

}functiondistance(lat,lng,goalLat,goalLng){//传入位置纬度,经度和目标纬度,经度,返回距离值,单位米,对地理感兴趣的童鞋能够去研究下计算公式

varEARTH_RADIUS= 6378.137;//地球赤道半径

if(lat!= '' &&lng!= '' &&goalLat!= '' &&goalLng!= ''){varradLat1=rad(goalLat);varradLat2=rad(lat);vara=radLat1-radLat2;varb=rad(goalLng)-rad(lng);vars= 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* 10000)/ 10000;returns*1000;

}else{return 0;

}functionrad(d){returnd*Math.PI/ 180.0;

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuoyibo.cn 版权所有 湘ICP备2023022426号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务