网页|通过geolocation获取地理位置信息

简介: 网页|通过geolocation获取地理位置信息

1.地理位置信息得运用

获取用户地理位置信息,在各大网站、app中,例如淘宝,美团等购物平台已经是很常见的了。一些常见的旅游app,地图查询软件也都普遍的提供了位置定位等功能。常见的获取地理位置信息的办法是通过h5提供的地理位置功能(Geolocation API)。

2.Geolocation API

地理位置功能(Geolocation API),能确定用户位置。Geolocation API存在于navigator对象中,只包含3个方法:当前位置(getCurrentPosition)、监视位置(watchPosition)、清除监视(clearWatch)。

其中当前位置(getCurrentPosition)有三个参数:success,error,option。success是成功获取位置信息的回调函数,它是方法唯一必须的参数。error是用于捕获获取位置信息出错的情况。option是配置项,具有如下参数对象:

enableHighAccuracy:指示获取位置的精确度,默认为false。如果设置为true,使用精确定位(卫星定位/GPS)。timeout:获取位置的最长等待时间,默认不限时间。maximumAge:接受不超过指定时间毫秒的缓存位置,也就是在重复获取位置时,多长时间之后再次获取位置。

如下就可以获取相应的地理位置:(获取地理位置的等待时间比较长,要耐心等待。由于在运行时就比较心急,一直没等到运行结果出现。误以为是代码错误,改了很久,发现并没有问题,只是运行时间比较长。)

function getLocation(){

               var options={

                   enableHighAccuracy:true, //精确定位

                   maximumAge:1000//最长时间

               }

               if(navigator.geolocation){

                   //浏览器支持geolocation                    navigator.geolocation.getCurrentPosition(onSuccess,onError,options);                 

               }else{

                  console.log('你的浏览器不支持地理定位'); //浏览器不支持geolocation

               }           }

3.完成过程

(1)首先在页面定义要展示地理位置的div,并设置id。(在调用地图的时候会用到id名)设置相应的样式。

<div id=“weizhi” style="width:2000px;height:1000px"></div>

(2)利用js,获取相应的地理位置,这一步在文章第二部分已经介绍了,就不再赘述了。

(3)获取用户位置的经纬度

function onSuccess(position){

               //经纬度

           var longitude =position.coords.longitude;

               var latitude = position.coords.latitude;

}

(4)获取到了位置的经纬度,其实就成功了一半。要想位置在地图上显示出来,就需要调用地图。Geolocation可以获取用户的经纬度,那么需要做的是把抽象的经纬度转成可读的有意义的真正的用户地理位置信息。这里就需要调用百度地图的接口,再将获取到的经纬度信息传给地图接口,就可以返回用户所在的地理位置。(如果调用百度地图,最好使用IE浏览器运行,谷歌浏览器可能显示不出来)

function onSuccess(position){

var map =new BMap.Map("weizhi");

               //创建一个坐标

               var point =new BMap.Point(longitude,latitude);

               //地图初始化,设置中心点坐标和地图级别 

               map.centerAndZoom(point,15);

}

(5)如下就是位置获取的结果:

                                            图3.1 效果图

如下就是位置获取的完整代码:

  function  getLocation(){

               var options={

                   enableHighAccuracy:true, //精确定位

                   maximumAge:1000//最长时间

               }

               if(navigator.geolocation){

                   //浏览器支持geolocation

                   navigator.geolocation.getCurrentPosition(onSuccess,onError,options);   

               }else{

                   console.log('你的浏览器不支持地理定位');//浏览器不支持geolocation

               }

            }

            //成功时

            function onSuccess(position){

               //经度

               var longitude =position.coords.longitude;

               //纬度

               var latitude = position.coords.latitude;

               //创建地图实例 

               var map =new BMap.Map("container");

               //创建一个坐标

               var point =new BMap.Point(longitude,latitude);

               //地图初始化,设置中心点坐标和地图级别 

               map.centerAndZoom(point,15);

            }

            //失败时

            function onError(error){

               switch(error.code){

                   case 1:

                   alert("位置服务被拒绝");

                   break;

 

                   case 2:

                   alert("暂时获取不到位置信息");

                   break;

               }

            }

            window.onload=getLocation;

 




目录
相关文章
|
4月前
|
存储 移动开发 定位技术
HTML5 Geolocation(地理定位)优化到最高精度
HTML5 Geolocation API 可让网页访问用户的地理位置信息。为优化地理定位精度,需考虑设备、浏览器设置、网络状况及编码实现。使用 `enableHighAccuracy` 选项请求高精度,并确保设备开启 GPS,网络良好。结合多种数据源(如 GPS、Wi-Fi)可提高准确性。利用 `watchPosition` 定期更新位置,并妥善处理定位错误。务必遵循用户隐私原则,获取同意并遵守相关法规。这样可有效提升地理定位的精度与用户体验。
|
4月前
|
JavaScript 定位技术 API
|
移动开发 JavaScript 定位技术
百度地图开发:地图调起API(Web端)使用终点经纬度直接调用百度地图导航信息的解决方案
百度地图开发:地图调起API(Web端)使用终点经纬度直接调用百度地图导航信息的解决方案
394 0
|
定位技术 API
高德地图web服务API接口开发:获取IP定位显示当前位置的天气预报解决方案
高德地图web服务API接口开发:获取IP定位显示当前位置的天气预报解决方案
437 0
|
移动开发 JavaScript 前端开发
uniapp在H5获取当前定位信息不需要SDK可直接获取城市(包括经纬度省市区和市区编码)
最近在做获取用户当前定位信息的时候,发现uniapp官方提供的兼容性并不是特别好,光注意事项都是密密麻麻一大堆,在实际使用场景下,效果并不理想,也不是很稳定。于是便重新封装了一下腾讯地图的一些东西,提高了下兼容度!下边我会把我用的封装思路逻辑给大家一一讲解。完整代码可私信我我发给你以上便是基于uni-app框架开发,使用Promise进行异步请求和结果返回,封装的H5获取当前详细定位信息组件希望大家一起交流。
1884 0
|
缓存 移动开发 网络安全
H5地理定位navigator.geolocation的使用(获取经纬度、海拔高度等设备信息)
H5地理定位navigator.geolocation的使用(获取经纬度、海拔高度等设备信息)
640 0
|
JavaScript 前端开发 定位技术
百度地图JavaScript API使用Boundary方法添加覆盖物显示省市某一区域的解决方案
百度地图JavaScript API使用Boundary方法添加覆盖物显示省市某一区域的解决方案
568 0
|
小程序 JavaScript 前端开发
微信小程序 地图选点 获取用户选择的定位信息 wx.chooseLocation
微信小程序 地图选点 获取用户选择的定位信息 wx.chooseLocation
660 0
|
Web App开发 移动开发 前端开发
【前端】【H5 API】地理定位(获取经纬度)
【前端】【H5 API】地理定位(获取经纬度)
1264 0
【前端】【H5 API】地理定位(获取经纬度)
|
JSON JavaScript 前端开发
百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度
百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度
514 0