当前位置:首页 > 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,适用于导航类应用:

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实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: cons…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的cur…

js实现授权

js实现授权

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

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pas…