首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将鼠标坐标存储在开放层中的变量中?

如何将鼠标坐标存储在开放层中的变量中?
EN

Stack Overflow用户
提问于 2018-07-01 20:55:56
回答 2查看 5.1K关注 0票数 5

我有一个代码,显示鼠标位置以外的地图在开放层!如果我想在调用js鼠标事件、onmousedown和onmouseup时保存这些坐标呢?

我有以下代码:

代码语言:javascript
复制
const mousePositionControl = new MousePosition({
    coordinateFormat: createStringXY(4),
    projection: 'EPSG:4326',
    className: 'custom-mouse-position',
    target: document.getElementById('mouse-position'),
    undefinedHTML: ' '
});

const map = new Map({
    controls: defaultControls({
        attributionOptions: {
            collapsible: false
        }
    }).extend([mousePositionControl]),
    layers: [
        new TileLayer({
            source: new OSM()
        })
    ],
    target: 'map',
    view: new View({
        center: [0, 0],
        zoom: 2
    })
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-02 07:52:05

我看到了两种简单的方法。

首先,只需侦听您的OpenLayers Map 'click' (或singleclick)事件。然后您可以获得光标坐标,如下所示:

代码语言:javascript
复制
myMap.on('click', function(evt){
    // Get the pointer coordinate
    let coordinate = ol.proj.transform(evt.coordinate);
}

第二个问题是,每次指针在地图上移动时都要跟踪指针坐标,使用'pointermove'事件,然后在需要时只读取它们:

代码语言:javascript
复制
let coord = [];

// We track coordinate change each time the mouse is moved
myMap.on('pointermove', function(evt){
    coord = evt.coordinate;
}

// Anytime you want, simply read the tracked coordinate
document.addEventListener('mousedown', function(){
    console.log(coord);
});
票数 3
EN

Stack Overflow用户

发布于 2021-01-25 08:48:18

代码语言:javascript
复制
    state={
    mouePos:[1,2]
    }

this.state.map.on('pointermove', (evt)=>{
         this.setState({mousePos:[evt.coordinate[0],evt.coordinate[1]]},()=>{
         console.log(evt.coordinate)
        })  
            })

您可以使用mousePos状态作为存储,我认为

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51126963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档