获取坐标事件地图 openlayers 4.6.5 ~ 5
get coordinates event map openlayers 4.6.5 ~ 5
我尝试获取在 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
})
});
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 中获取这些坐标的线索吗?
谢谢
好的,事实证明它只适用于 event.coordinate
,在图层
中定义的 SRC 中显示坐标
这段代码可以工作。请注意,您将获得的坐标是 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'));
});
我尝试获取在 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
})
});
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 中获取这些坐标的线索吗?
谢谢
好的,事实证明它只适用于 event.coordinate
,在图层
这段代码可以工作。请注意,您将获得的坐标是 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'));
});