/*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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务