跟随系统
浅色模式
深色模式
打赏站长

获取地理位置经纬度的两种方法:原生JS和腾讯地图API

前端技术
预计阅读 8分钟
2023-11-23
返回博客

以下两种方法皆需要https协议


由于安全限制问题,使用http协议访问定位API会导致定位失败。
开发者如遇到上述问题,请切换至https访问。


A:使用原生JS获取。


function UserLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
  } else {
    alert('您的浏览器不支持使用HTML 5来获取地理位置服务');
  }
  //定位数据获取成功响应
  function onSuccess(position) {
    let lng = position.coords.longitude,
      lat = position.coords.latitude;
    console.log('获取到了定位', { lng, lat });
  }
  //定位数据获取失败响应
  function onError(error) {
    console.log('未获取到定位', error);
    switch (error.code) {
      case error.PERMISSION_DENIED:
        // alert("您拒绝对获取地理位置的请求");
        alert('浏览器不支持获取地理位置');
        break;
      case error.POSITION_UNAVAILABLE:
        alert('位置信息是不可用的');
        break;
      case error.TIMEOUT:
        alert('请求您的地理位置超时');
        break;
      case error.UNKNOWN_ERROR:
        alert('未知错误');
        break;
    }
  }
}


B:使用腾讯地图api获取。

优点:兼容性好

缺点:麻烦,需要注册账号,申请key


function UserLocation() {
  var geolocation = new qq.maps.Geolocation('腾讯地图keys', '腾讯地图projectName');
  geolocation.getLocation(showPosition, showErr, { timeout: 8000 });
  function showPosition(position) {
    //获取到国测局坐标-position
    console.log('获取到了定位', position.lng, position.lat);
  }
  function showErr() {
    alert('定位失败');
  }
}