Geolocation API如何获取用户当前位置

GeolocationAPI的使用非常简单,“navigator.geolocation”对象提供了可以公开访问地理位置的方法,其中navigator为浏览器内置对象。检测浏览器是否支持定位API,只需要检测geolocation是否存在于navigator中即可。对于移动Web开发者,大多数情况只需要获取用户的当前位置,此时我们可以使用getCurrentPosition()方法来获取当前位置的坐标值。getCurrentPosition()被调用时会发起一个异步请求,浏览器会调用系统底层的硬件(如GPS)来更新当前的位置信息,当信息获取到之后会在回调函数中传入position对象。

position对象包含两个属性,一个是coords(坐标),它是一个Coordiante对象,包含当前位置信息;另一个是timestamp,表示获取到位置的时间戳。

coordiante对象包含包括经纬度在内的一系列信息具体如下所示。

latitude:一个十进制表示的纬度坐标。

longitude:一个十进制表示经度的坐标。

altitude:海拔高度(以米为单位,如果是5,表示精确到5米范围)。

accuracy:当前经纬度信息的精度(以米为单位)。

altitudeAccuracy:当前海拔高度的精度。

heading:代表当前设备的朝向,该值是以弧度为单位,指示了按顺时针方向相对

于正北的度数(例如:heading为270的时候表示正西方)。接下来,用通过一个案例来演示如何使GeolocationAPI获取当前位置。代码如demo3-6所示。

demo3-6.html

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <script>
         function getMyPosition(){
           if(window.navigator.geolocation){
               //获取当前位置..
               alert("正在获取您的位置.");
               //如果获取位置成功,会调用名字为successPosition 的方法.
               navigator.geolocation.getCurrentPosition
               (successPosition,errorPosition);
            }else{
               alert("您当前的浏览器不支持..");
            }
       }
       function successPosition(position){
          var jd=position.coords.longitude;//经度
          var wd=position.coords.latitude;//纬度
          alert(jd+","+wd);
        }
        //如果没有获取到位置,就会调用这个方法
        function errorPosition(){
                alert("获取位置失败.");
        }
        getMyPosition();
    </script>
</head>
<body>
</body>
</html>

因为Geolocation获取当前定位除了浏览器的支持,还需要硬件设备的支持,上述代码在不支持该操作的设备上运行的结果如图3-8和图3-9。

普通PC提示对话框


图3-8普通PC提示对话框1
 

普通PC提示对话框2


图3-9普通PC提示对话框2

现在我们在Mac电脑上用浏览器打开demo3-6,结果如图3-10和图3-11所示。

Mac提示对话框


图3-10Mac提示对话框1
 

Mac提示对话框


图3-11Mac提示对话框2

在移动端用浏览器打开demo3-6,结果如图3-12和图3-13所示。

Geolocation API移动提示对话框


图3-12移动提示对话框1
 


图3-13移动提示对话框2

以上内容演示了Geolocation获取当前位置的过程,值得一提的是,该案例获取的是当前位置的地理坐标,所以位置变化会导致坐标变化。

多学一招:监视移动设备的位置变化

接下来要介绍一个名词LBS,LBS是基于位置的服务,它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标)。

在正文中演示的getCurrentPosition()方法只在调用时会得到位置信息,在LBS应用中,检测用户位置变化是非常常见的需求。一个做法是通过循环调用的方式去检测位置变化。

例如,设置了一个10秒作为获取位置的间隔,这样做的缺点是:编程人员无法知道用户当前的速度,如果在飞机高铁上,10秒可能已经走了很长一段距离,这样提供给用户的位置信息可能是延迟的,如果将间隔设置的很短,又会非常耗电耗能,如果用户长时间没动,那这些查询都是无用的。

为了解决这个问题,Geolocation还提供了watchPosition()方法,可以让系统通知编程人员用户的位置发生了变化。

watchPosition()方法和getCurrentPosition方法在调用上类似,但方法功能与getCurrentPosition的区别是非常明显的。调用该函数时会返回一个watch ID,这个ID和setInterval()函数返回的ID类似,可以用于清除此次的监视操作。

watchPosition()方法也接受相同的三个参数,success、error回调以及一个PositionOptions对象。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用地图 API 获取用户当前位置经纬度的方法通常包括以下几个步骤: 1. 在 HTML 页面中引入地图 APIJavaScript 库。 2. 创建一个用于显示地图的 HTML 元素。 3. 使用 JavaScript 代码初始化地图并设置一些属性,例如缩放级别、地图类型等。 4. 使用浏览器的定位 API 获取用户当前位置信息(经纬度)。 5. 将获取到的经纬度信息传递给地图 API,并将地图中心点设置为用户当前位置。 下面是一份示例代码,演示了如何使用 Google 地图 API 获取用户当前位置经纬度: ```html <!DOCTYPE html> <html> <head> <title>获取用户当前位置经纬度示例</title> <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script> <script> function initMap() { // 创建一个用于显示地图的 HTML 元素 var mapElement = document.getElementById('map'); // 使用 JavaScript 代码初始化地图,并设置一些属性 var map = new google.maps.Map(mapElement, { zoom: 15, mapTypeId: google.maps.MapTypeId.ROADMAP }); // 使用浏览器的定位 API 获取用户当前位置信息 navigator.geolocation.getCurrentPosition(function(position) { // 获取用户当前位置的经纬度信息 var userLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); // 将地图中心点设置为用户当前位置 map.setCenter(userLatLng); }); } </script> </head> <body onload="initMap()"> <div id="map" style="height: 500px"></div> </body> </html> ``` 上面的代码中,需要将 `YOUR_API_KEY` 替换为你自己的 Google 地图 API key。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值