【问题标题】:Retrieving coordinates from database and transform to OSM从数据库中检索坐标并转换为 OSM
【发布时间】:2016-04-19 12:26:27
【问题描述】:

当尝试在我的地图上定义坐标时,我会得到不同的结果,这取决于我是硬编码 lon/lat 还是它们来自数据库。

document.title = eventName;
document.getElementById("titleEventName").innerHTML = ol.proj.fromLonLat([5.942060,50.751453]);
document.getElementById("tempEventName").innerHTML = ol.proj.fromLonLat([eventCenterMapLongitude, eventCenterMapLatitude]);
document.getElementById("tempEventName2").innerHTML = "eventCenterMapLongitude = " + eventCenterMapLongitude + ", eventCenterMapLatitude = " + eventCenterMapLatitude;
document.getElementById("tempEventName3").innerHTML = ol.proj.transform([661467.0934630792,-4757336.459308266], 'EPSG:3857', 'EPSG:4326');

在第一行中,我只是通过手动设置坐标来显示坐标。在第二行中,我从数据库中设置的变量中检索它们。在第三行中,我显示了这些变量的值(与硬编码的相同)。在第4行,我重新转换回lat/lon,我看到经度还可以,但是纬度比初始纬度低90°。

这是我屏幕上的输出:

661467.0934630792,6577445.839458974
661467.0934630792,-4757336.459308266
eventCenterMapLongitude = 5.942060, eventCenterMapLatitude = 50.751453
5.942060000000001,-39.24854609999999

这里有什么问题?为什么我在第二行得到 -4757336.459308266 而不是 6577445.839458974?

【问题讨论】:

    标签: javascript openlayers-3


    【解决方案1】:

    【讨论】:

    • 不,因为那样当我手动输入坐标时它就不起作用了。但是我自己发现了这个问题(经过 2 天的查找 :( )。github.com/openlayers/ol3/issues/4989 --> 我的数据库值是字符串而不是数字。这适用于经度(只是运气),但不适用于纬度。所以很简单:数字(mydatabaselonglat)可以解决问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多