我正在尝试以纬度/经度坐标获取Openlayers地图的当前中心。我有以下事件处理程序设置:
this.map.on('pointermove', function (e) {
if (e.dragging) {
console.log(that.map.getView().getCenter());
}
});
这有效,但我得到了奇怪的价值观。这是一个例子:
[9318218.659044644, 3274618.6225819485]
那些显然不是lat / lon值:)我需要以某种方式改变它吗?谢谢!
答案 0 :(得分:5)
我不熟悉openlayers,但听起来地图是在不同的投影中。
在spherical_mercator,transform上查看以下内容, Open Layers projections
<强>已更新强>
我做了一点研究,看看这个example。不确定您的观看次数是什么。此示例中的地图位于&#39;&#39; EPSG:21781&#39;如果你去一个js控制台并输入map.getView().getCenter()
,你会得到[693230.7161150641, 179010.3389264635]
,但是如果你输入ol.proj.transform(map.getView().getCenter(), 'EPSG:21781', 'EPSG:4326')
,你会得到[8.658936030357363, 46.75575224283748]
希望有所帮助。
答案 1 :(得分:1)
OpenLayers 6的更新(假设您的地图被称为“地图”),下面给出了地图视图中心的[lon,lat]数组。
ol.proj.toLonLat( map.getView().getCenter() )
答案 2 :(得分:1)
对于那些使用 angular 的人。
另外,我会考虑搜索地图的投影,而不是手动输入。
import * as olProj from 'ol/proj'
import Map from 'ol/Map'
// ...
olProj.transform(
this.map.getView().getCenter(),
this.map.getView().getProjection(),
'EPSG:4326',
)