Win11 使用 Windows.Devices.Geolocation 调用系统定位服务得到的经纬度坐标不正确

文昊 陈 0 信誉分
2025-10-24T03:33:10.4033333+00:00

是否与已废弃的必应地图源有关系? 在 Windows 上使用 Edge 浏览器也会得到同样错误的结果,但Mac 上的 Edge 浏览器可以返回正确的结果。设备坐标处于(22, 114),但得到的结果是(31.25, 121.51)。

Windows 开发 | Windows API - Win32
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Tony Dinh (WICLOUD CORPORATION) 3,925 信誉分 Microsoft 外部员工
    2025-10-24T06:52:28.4633333+00:00

    你好 @文昊 陈

    在 Windows 11 中出现的错误坐标并不是由已弃用的 Bing Maps 源直接导致的,而是因为 Windows 定位服务(Windows Location Service) 在没有 GPS 的设备上确定位置时,往往会回退到 基于 IP 的地理定位或 Wi‑Fi 三角定位。这些方法可能过时,或者被映射到错误的城市。因此,Windows 上的 Edge 浏览器和 Windows.Devices.Geolocation API 都会返回相同的错误结果,而 macOS 上的 Edge 使用的是 Apple 的定位服务,它依赖不同的数据库,所以能返回正确的坐标。

    • Windows.Devices.Geolocation 调用的是 Windows 定位服务,而不是 Bing Maps。
    • Windows 定位服务 使用多种方式:
      • GPS(如果可用,例如带 GNSS 芯片的笔记本或手机)
      • Wi‑Fi 接入点数据库
      • 基于 IP 地址的地理定位(常见于没有 GPS 的台式机)
    • Bing Maps 作为面向消费者的 API 已被弃用,但 Windows 定位服务并不依赖它来获取原始坐标,而是使用微软自己的定位数据库。
      • Windows 上,Edge 查询的是 Windows 定位服务。
      • macOS 上,Edge 查询的是 Apple 的 Core Location 框架,它使用 Apple 的 Wi‑Fi/GPS/IP 数据库。
      • 不同的提供方 = 不同的精度。

    错误的位置 是 IP 地理定位数据库常见的回退结果。当 ISP 将流量路由到上海的某个枢纽时,微软的定位服务可能会把你的 IP 解析到该枢纽,而不是你所在的实际城市。这就是为什么 Windows.Devices.Geolocation 和 Windows 上的 Edge 都显示相同的错误结果——它们都依赖于 Windows 定位服务。


    提高精度的方法:

    • 检查设备是否有 GPS:没有 GPS,精度总是有限的。
    • 启用 Wi‑Fi:即使使用有线网络,打开 Wi‑Fi 也能帮助 Windows 更准确地进行三角定位。
    • 清除位置历史记录:设置 → 隐私和安全性 → 位置 → 清除位置历史记录。
    • 设置默认位置:设置 → 隐私和安全性 → 位置 → 默认位置。这不会修复 API 调用,但能帮助某些应用回退时使用。
    • 更新网络驱动:过时的驱动可能会阻止 Wi‑Fi 扫描定位。
    • 报告错误位置:可以通过 Microsoft 的反馈中心(Feedback Hub)提交,以改进其定位数据库。

    因此,Windows.Devices.Geolocation 依赖的是 Windows 定位服务而不是 Bing Maps。在没有 GPS 的设备上,它通常会回退到基于 IP 的定位,这可能会让你偏离数百公里。这就是为什么 Windows 上的 Edge 和你的应用都显示上海,而 macOS 上的 Edge(使用 Apple 的 Core Location)是正确的。开发者可以检查 Accuracy 属性来检测结果是否不可靠,并提示用户启用 Wi‑Fi 或设置默认位置。


    希望这对你有帮助!如果还有问题,欢迎继续交流!


你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。