【问题标题】:OSM, OpenLayers and Google-maps always set to lon/lat (0,0)OSM、OpenLayers 和 Google-maps 始终设置为 lon/lat (0,0)
【发布时间】:2014-11-01 08:04:47
【问题描述】:

我正在尝试将以下使用 Google 地图的 OSM/OpenLayers 示例改编为我的项目

http://openlayers.org/en/v3.0.0/examples/google-map.html

我构建了以下非常简单的页面:

http://185.8.104.235/testOSM/testOSM.html

问题是当页面加载时地图总是设置为 lon/lat (0,0),当我想缩放到不同的坐标时。
IOW,view.setZoom(5) 有效,而 view.setCenter([47, 3]) 无效...

有什么建议吗?
提前致谢。

【问题讨论】:

  • 请在问题中提供(简化但可执行的版本)您有问题的代码,而不是在服务器上。事实上,一旦您关闭测试服务器,这个问题对未来的读者将毫无用处。

标签: google-maps openlayers openstreetmap


【解决方案1】:

您以度为单位设置中心(因为您可能认为坐标在 EPSG:4326 中),而 OpenLayers 3 中的默认坐标使用 EPSG:3857 aka Spherical Mercator。

您必须将 EPSG:4326 转换为 EPSG:3857

在您的代码中,

var center = ol.proj.transform(view.getCenter(), 'EPSG:3857', 'EPSG:4326');

应该是

var center = ol.proj.transform(view.getCenter(), 'EPSG:4326', 'EPSG:3857');

view.setCenter([47, 3]);

应该是

view.setCenter(ol.proj.transform([47, 3], 'EPSG:4326', 'EPSG:3857'));

【讨论】:

  • 感谢您的回复。实际上,我只需要根据您的建议更改脚本的第二行 (view.setCenter([47, 3])) 即可使一切正常运行,正如您在链接上看到的那样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2012-11-16
相关资源
最近更新 更多