Geolocation API需HTTPS或localhost安全上下文及用户授权,支持getCurrentPosition获取单次位置和watchPosition持续监听,须检查兼容性、权限状态并处理常见错误与限制。
JavaScript 的地理位置 API(Geolocation API)可以获取用户设备的经纬度等位置信息,但必须在安全上下文(HTTPS 或 localhost)中使用,且需用户明确授权。
这是最常用的方式,适合只需要当前位置的场景(比如“显示附近门店”)。它会触发浏览器弹出权限请求。
position.coords.latitude 和 position.coords.longitude 就是经纬度PERMISSION_DENIED(用户拒绝)、POSITION_UNAVAILABLE(定位失败)、TIMEOUT(超时)enableHighAccuracy: true(尝试高精度,如 GPS,但更耗电/慢)、timeout: 5000(毫秒)、maximumAge: 60000(允许返回 1 分钟内的缓存位置)适合需要持续追踪的场景(比如导航、运动轨迹记录)。
不是所有浏览器都支持,而且用户可能已拒绝过权限,直接调用会静默失败。
"granted"、"denied" 或 "prompt"
"denied",说明用户已永久拒绝,此时应引导用户手动开启(比如显示设置提示)实际开发中容易踩坑,提前了解能少走弯路。
SecurityError,部署前务必启用 HTTPSenableHighAccuracy: true 可改善(但不保证)基本上就这些。核心就是:安全上下文 + 用户授权 + 合理处理回调和异常。不复杂但容易忽略
细节。