Javascript OpenLayers选择功能和XY

Javascript OpenLayers选择功能和XY,javascript,events,maps,openlayers,Javascript,Events,Maps,Openlayers,我需要知道点击某个功能的确切点。使用SelectFeature,我可以获得有关单击了哪个功能的信息,但地图上没有关于位置的信息 以下是创建listner函数的代码: select = new OpenLayers.Control.SelectFeature( [vectorLayer], { clickout: false, toggle: false, multiple: false

我需要知道点击某个功能的确切点。使用SelectFeature,我可以获得有关单击了哪个功能的信息,但地图上没有关于位置的信息

以下是创建listner函数的代码:

select = new OpenLayers.Control.SelectFeature(
            [vectorLayer],
            {
                clickout: false, toggle: false,
                multiple: false, hover: false
            }
        );

osMap.addControl(select); 
下面是我的听众的定义:

vectorLayer.events.on({
            "featureselected": function(e) {
                 //here I need to get XY
                 //something like the code below 
                 //(it doesn't work but clearly explains what my idea is)           
                 var lonlat = osMap.getLonLatFromViewPortPx(e.xy);

            }
});    
谢谢

查看Map对象上的函数以及e.xy属性

编辑:
另外,检查事件。看起来您可以从所有类型的鼠标事件中提取xy属性。

Niklas是对的,我对弹出窗口使用类似的内容:

var popup = new OpenLayers.Popup.Anchored(
  "popup", 
  map.getLonLatFromPixel(evt.xy),
  null,
  evt.text,
  null,
  false
);

如果
evt
不可用,您可以使用鼠标位置控件:

 map.getLonLatFromPixel(
   (map.getControlsByClass("OpenLayers.Control.MousePosition‌​")[0]).lastXy
 ) 
看,, 使用this.handlers.feature.evt提供修补程序

new OpenLayers.Control.SelectFeature([layer],{
    hover:true,
    eventListeners:{
      featurehighlighted:function(e){
        console.log(this.handlers.feature.evt.clientX-map.div.offsets[0]);
        console.log(this.handlers.feature.evt.clientY-map.div.offsets[1]);
    }
});

谢谢是的,好的。问题是evt.xy不可用于此类事件(“featureselected”):-(您可以使用MousePosition控件,然后使用:map.getLonLatFromPixel((map.getControlsByClass(“OpenLayers.control.MousePosition”)[0]).lastXy)您查看了“我的编辑”部分中的链接了吗?看起来xy也可以包含在featureselected中。感谢这一点(+1)。第二个选项最适合我。