gpt4 book ai didi

javascript - 获取坐标事件 map openlayers 4.6.5 ~ 5

转载 作者:行者123 更新时间:2023-11-29 10:03:02 24 4
gpt4 key购买 nike

我尝试获取在 openlayers map 上单击的坐标。我的代码如下:

const localmap = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});

function getPosition(event){
console.log(localmap.getEventCoordinate(event));
}

localmap.on('click', getPosition(event));

但我唯一得到的结果是一个错误:

Uncaught TypeError: Cannot read property 'changedTouches' of undefined

我尝试将监听器添加为

localmap.on('click', getPosition);

它会在每次点击时显示一个数组,但它会填充 Nan 值。

我尝试了 seraching doc 和所有但它太旧或者直接在监听器中编写函数,我不想要因为我希望能够删除它

有人知道在 ol 4.6.5 ~ 5 中获取这些坐标的线索吗?

谢谢

最佳答案

此代码将起作用。请注意,您将获得的坐标是 EPSG:3857 投影,使用 ol.proj.transform() 将它们转换为 EPSG:4326 投影.要了解有关预测的更多信息,请访问 https://lyzidiamond.com/posts/4326-vs-3857 .如果您要经常在 openlayers 上工作,则必须阅读此内容。

const localmap = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});

localmap.on('singleclick', function (evt) {
console.log(evt.coordinate);

// convert coordinate to EPSG-4326
console.log(ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326'));
});

关于javascript - 获取坐标事件 map openlayers 4.6.5 ~ 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51134894/

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