专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

基于geolocation来获取经纬度地址

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:18:10       共计:3582 浏览

以前如果要获取互联网用户所在地都是根据用户的IP地址来获取地理位置,这样获取到的数据和真实数据有很大的偏差。为了获取更加精确的位置,可以使用了html5的geolocation来获取经纬度,然后再获取所在地理位置,如何获取,我在下面会说到。先说下基本概念。


Geolocation在的navigator 对象中,我们可以通过 navigator.geolocation 来使用它。不支持 geolocation 的浏览器并不包含这一对象,那么可以通过下面的代码来做能力检测,对不同的浏览器做不同的处理。在访问 geolocation 对象时,即调用 geolocation 下面的方法时,浏览器会弹出提示,询问用户是否许可网站提供的位置服务,只有在得到用户许可过后,服务才会继续,否则将被停止。


常用的navigator.geolocation对象有以下三种方法:


获取当前地理位置:navigator.geolocation.getCurrentPosition(success_callback_function, error_callback_function, position_options)


持续获取地理位置:navigator.geolocation.watchPosition(success_callback_function, error_callback_function, position_options)


清除持续获取地理位置事件:navigator.geolocation.clearWatch(watch_position_id)


参数position_options是配置项,由JSON格式传入:


enableHighAccuracy:true/false,它将告诉浏览器是否启用高精度设备,所谓的高精度设备包含但不局限于前面所提到的 GPS 和 WIFI,值为 true 的时候,浏览器会尝试启用这些设备,默认指为 true,在这种情况下,浏览器会尽可能地进行更为精确的查询,简单地说,如果用户有可用的 GPS 设备,会返回 GPS 设备的查询结果,IP 是最后的选择,对于移动设备来说,网络接入点(基站)或许成为另一个选择,对此我还没有完全了解,但根据测试,即时没有任何额外功能的手机,也能够得到更为精确的查询结果。


maximumAge:单位毫秒,告诉设备缓存时间,主要用于设备的省电或者节省带宽方面。


timeout:单位毫秒,超时事件,获取位置信息时超出设定的这个时长,将会触发错误,捕获错误的函数将被调用,并且错误码指向TIMEOUT。


var position_option = {

               enableHighAccuracy: true,

               maximumAge: 30000,

               timeout: 20000

           };

navigator.geolocation.getCurrentPosition(getPositionSuccess, getPositionError, position_option);

function getPositionSuccess( position ){

       var lat = position.coords.latitude;

       var lng = position.coords.longitude;

       alert( "您所在的位置: 纬度" + lat + ",经度" + lng );

       if(typeof position.address !== "undefined"){

               var country = position.address.country;

               var province = position.address.region;

               var city = position.address.city;

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

       }

}

coords其他返回信息:


coords.accuracy:返回经纬度的精度(米)


coords.speed :速度


coords.altitude :当前的高度,海拔(米)


coords.altitudeAccuracy:高度的精度(米)


coords.heading:朝向


function getPositionError(error) {

   switch (error.code) {

       case error.TIMEOUT:

           alert("连接超时,请重试");

           break;

       case error.PERMISSION_DENIED:

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

           break;

       case error.POSITION_UNAVAILABLE:

           alert("获取位置信息失败");

           break;

   }

}

在获取城市信息的时候只有firefox会提供城市地址。chrom不会给出。当然sogou地图提供了获取位置信息的api。


链接地址:http://map.sogou.com/api/documentation/javascript/api2.5/interface_regeocode.html


移动设备持续获取地理位置方法:navigator.geolocation.watchPosition


对于使用移动设备的用户来说,位置并不是固定的,W3C 当然也考虑到了这一点,watchPosition 是一个专门用来处理这一情况的方法,watchPosition 被调用后,浏览器会跟踪设备的位置,每一次位置的变化,watchPosition 中的代码都将会被执行。对于致力于移动设备 web 开发的同学来说,这个方法是及其重要的,它也许将会改变 web 移动客户端的格局。

使用navigator.geolocation.clearWatch既可以清除navigator.geolocation.watchPosition的监控事件。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:javascript 怎么获得手机地理位置 比如经纬度 | ·下一条:jquery JSON的解析方式

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有