gpt4 book ai didi

javascript - 为 OpenLayers 转换 GPS 坐标

转载 作者:行者123 更新时间:2023-12-02 07:29:32 25 4
gpt4 key购买 nike

我正在用 JavaScript 构建一个项目,该项目将 OpenLayers 与 OpenStreetMap 图层结合使用。

我从 navigator.geolocation.getCurrentPosition() 或 Google Maps Geocoding API 获得坐标“48.3185005, 14.2853003”(奥地利林茨坐标)。现在我想在 map 上显示这个点。

要使 map 显示正确的位置,需要进行哪些转换?如何使用 OpenLayers 进行这些转换?目前,我总是在非洲东部取得一些进展。

最佳答案

这是因为 OpenStreetMap 数据是投影坐标系,称为 Web Mercator,即以米为单位,而您的 GPS 数据以纬度/经度为单位。这就是为什么所有点似乎都在非洲西海岸附近的海域中,因为在以米为单位的覆盖整个地球的坐标系中,180,180 和 -90,90 范围内的任何坐标都会出现在那个小区域中加纳海岸。我注意到在您的原始帖子中您说的是非洲东部,但在评论中您说的是大西洋,我假设您指的是西部,这与我的解释一致。这是正确的吗?

您可以在 map 构造函数中通过指定不同的 map 投影和显示投影来处理此问题:参见 http://docs.openlayers.org/library/spherical_mercator.html

你想要的是:

var map = new OpenLayers.Map("map", {
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326")
});

EPSG:3857(最初为 900913)是 Spherical Mercator 的官方名称,OpenLayers 内置了它与 4326(纬度/经度)之间的转换。

关于javascript - 为 OpenLayers 转换 GPS 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23428170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com