前端获取用户地理定位

前言:
   定位一般分为两种场景:移动端和PC,下面分别讲下这两个场景在使用定位过程中的一些注意事项。

  • 移动端
       移动端包括手机,pad和其它带有GPS定位芯片的智能设备(如手表、音箱等),移动端的系统包括iOS和Android。成功完成定位需要达成以下前提条件:
       系统GPS打开
       所使用的App或浏览器已获取定位权限
       对打开的页面允许使用定位
       对于iOS10以上系统和Android的一些版本已禁止在非HTTPS协议的域名下定位,请尽快将站点升级到HTTPS
  • PC端
       因为pc设备上大都没有GPS芯片,所以在PC上的定位主要通过IP精准定位服务

1 GetCurrentPosition API

这是H5新推出的地理位置API,但从性能和精确度上来说相对较差,使用者几乎没有。

2 第三方服务

2.1 高德地图服务

注意:在使用该服务前需要申请 Key 点击前往申请

<!--
key:填写申请的key
plugin:需要用的插件,如果不填写将 AMap.xxx is not constructor 错误
-->
<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=[申请的key]&plugin=AMap.Geolocation"></script>
  • 使用
let geolocation = new AMap.Geolocation({
    enableHighAccuracy: true, // 是否使用高精度定位
    timeout: 10000, // 超时时间,单位为毫秒
});
geolocation.getCurrentPosition(function(status, result) {
     if (status === 'complete') {
         console.log(result); // 定位成功
     } else {
         console.log(result);// 定位失败
     }
 });

具体使用情况查看高德地图手册点击跳转

2.2 腾讯地图服务

注意:在使用该服务前需要申请 Key 点击前往申请

<!--
key:填写申请的key
plugin:需要用的插件,如果不填写将 AMap.xxx is not constructor 错误
-->
    <script type="text/javascript" src="https://apis.map.qq.com/tools/geolocation/min?key=[申请的key]&referer=location&callback=initMap"></script>
  • 使用
 let geolocation = new qq.maps.Geolocation('[申请的key]');
 geolocation.getLocation((position)=> {
      console.log(position);
  }, (result)=> {
      console.log('获取定位失败', JSON.stringify(result));
  }, {
          timeout: 15000, // 默认值为10s;
          failTipFlag: true
  });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值