当前位置:首页 > JavaScript

js 实现定位

2026-03-02 08:06:02JavaScript

使用 Geolocation API 获取当前位置

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

js 实现定位

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

js 实现定位

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,适用于导航类应用:

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 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…