经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » HTML5 » 查看文章
Geolocation地理定位
来源:cnblogs  作者:菜鸡又来了  时间:2021/2/1 11:55:44  对本文有异议

Geolocation地理定位

使用地理定位

下例是一个地理定位实例,可返回用户位置的经度和纬度:

  1. const success = res => {
  2. const { latitude, longitude } = res.coords
  3. console.log(`${longitude},${latitude}`)
  4. }
  5. if (navigator.geolocation) {
  6. navigator.geolocation.getCurrentPosition(success)
  7. }

我们一步步剖析这段代码:

第一步:判断浏览器是否有geolocation对象:

  1. if (navigator.geolocation) {}

第二步:调用geolocation的getCurrentPosition()方法:

  1. navigator.geolocation.getCurrentPosition(success,err)

getCurrentPosition()方法有两个参数:

  • success:成功获取地理位置的回调函数
  • err :获取地理位置失败的回调函数

第三步:创建一个success回调函数:

  1. const success = res => {
  2. const { latitude, longitude } = res.coords
  3. console.log(`${longitude},${latitude}`)
  4. }

以上代码向控制台输出客户端的经纬度

getCurrentPosition()方法返回的数据

如果成功执行getCurrentPosition(),则该方法会在成功函数中的参数传入一个包含longitude(经度)、latitude(纬度)以及accuracy属性。如果可用,则会返回其他下面表格的属性:

属性 描述
coords.latitude 十进制数的纬度
coords.longitude 十进制数的经度
coords.accuracy 位置精度
coords.altitude 海拔,海平面以上以米计
coords.altitudeAccuracy 位置的海拔精度
coords.heading 方向,从正北开始以度计
coords.speed 速度,以米/每秒计
timestamp 响应的日期/时间

若执行失败,则会在失败的回调函数中的参数传入错误信息的字符串,可能出现以下任意一个错误代码:

错误代码 描述
Permission denied 用户不允许地理定位
Position unavailable 无法获取当前位置
Timeout 操作超时
Unknown 未知错误

watchPosition持续监听用户地理位置

watchPosition() - 返回用户的当前位置,并继续返回用户移动时的更新位置(就像汽车上的 GPS)。

clearWatch() - 停止 watchPosition() 方法

下面的例子展示 watchPosition() 方法。您需要一台精确的 GPS 设备来测试该例(比如 iPhone):

  1. var view=document.getElementById("view");
  2. function getLocation(){
  3. if (navigator.geolocation){
  4. navigator.geolocation.watchPosition(showPosition);
  5. }else{
  6. view.innerHTML="该浏览器不支持获取地理位置。";
  7. }
  8. }
  9. function showPosition(position){
  10. view.innerHTML="纬度: " + position.coords.latitude + ",经度: " + position.coords.longitude;
  11. }

利用百度地图开放平台的接口返回静态地图

可以利用第三方平台提供的接口获取当前位置的静态地图,下面是一个利用百度地图开放平台提供的接口获取客户端地理位置的静态地图的实例:

  1. <img id="map">
  2. <script>
  3. const map = document.getElementById('map')
  4. const success = res => {
  5. // 百度地图开放平台提供的接口地址
  6. const url = 'http://api.map.baidu.com/staticimage/v2'
  7. // 申请的密匙,建议自己注册申请一个
  8. const ak = 'wVGFYXm9ij7UCqEbW7CT1BFrOQYh6oXM'
  9. // 解构当前地理的经纬度
  10. const { latitude, longitude } = res.coords
  11. // 接口的地理位置参数
  12. const center = `${longitude},${latitude}`
  13. // 拼接接口地址和所需参数,该接口会根据center提供的经纬度返回静态地图
  14. const interFace = `${url}?ak=${ak}&center=${center}`
  15. // 给id为map的元素设置src路径
  16. map.setAttribute('src', interFace)
  17. }
  18. if (navigator.geolocation) {
  19. navigator.geolocation.getCurrentPosition(success)
  20. }
  21. </script>

可用的第三方地图开放平台有腾讯地图开放平台百度地图开放平台高德地图开放平台Google地图开放平台

原文链接:http://www.cnblogs.com/WuMouRen/p/14288823.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号