Javascript OpenLayers选择功能和XY
我需要知道点击某个功能的确切点。使用SelectFeature,我可以获得有关单击了哪个功能的信息,但地图上没有关于位置的信息 以下是创建listner函数的代码: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
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)。第二个选项最适合我。