当前位置:首页 > JavaScript

js 实现定位

2026-03-02 08:06:02JavaScript

使用 Geolocation API 获取当前位置

浏览器原生提供的 navigator.geolocation 接口可直接获取用户地理位置。需用户授权后生效:

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(
    (position) => {
      const { latitude, longitude } = position.coords;
      console.log(`纬度: ${latitude}, 经度: ${longitude}`);
    },
    (error) => {
      console.error(`定位错误: ${error.message}`);
    }
  );
} else {
  console.error("浏览器不支持地理定位");
}

通过 IP 地址粗略定位

当用户拒绝共享精确位置时,可通过第三方 IP 定位服务获取大致位置。例如使用 ipapi.co

fetch('https://ipapi.co/json/')
  .then(response => response.json())
  .then(data => {
    console.log(`国家: ${data.country_name}, 城市: ${data.city}`);
  });

高德/百度地图 SDK 集成

国内项目建议使用地图厂商的 SDK 实现精确定位:

// 高德地图示例
AMap.plugin('AMap.Geolocation', () => {
  const geolocation = new AMap.Geolocation();
  geolocation.getCurrentPosition((status, result) => {
    if (status === 'complete') {
      console.log(result.position);
    } else {
      console.error(result.message);
    }
  });
});

监听位置变化

持续跟踪用户移动需使用 watchPosition,适用于导航类应用:

js 实现定位

const watchId = navigator.geolocation.watchPosition(
  (position) => {
    console.log(position.coords.speed); // 获取移动速度
  },
  null,
  { enableHighAccuracy: true }
);

// 停止监听
// navigator.geolocation.clearWatch(watchId);

注意事项

  • HTTPS 协议下 Geolocation API 才能正常工作
  • 移动端定位精度通常高于桌面端
  • 部分浏览器会隐藏精确坐标(如 iOS Safari 默认模糊定位)
  • 国内地图 SDK 需申请对应的开发者密钥

标签: js
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

vue js实现登录

vue js实现登录

Vue.js 登录功能实现 依赖安装 确保项目已安装 Vue.js 和必要的依赖库(如 Vue Router、Axios)。通过以下命令安装: npm install vue-router axio…

vue.js实现restful

vue.js实现restful

Vue.js 实现 RESTful API 调用 在 Vue.js 中实现 RESTful API 调用通常涉及以下几个关键步骤: 安装 Axios Axios 是一个流行的 HTTP 客户端,用于…