我需要知道点击某个功能的确切点。使用SelectFeature我可以获得有关点击了哪个功能的信息,但没有关于地图上某个位置的信息。
以下是创建列表器功能的代码:
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);
}
});
由于
答案 0 :(得分:5)
Niklas是对的,我使用类似弹出窗口的东西:
var popup = new OpenLayers.Popup.Anchored(
"popup",
map.getLonLatFromPixel(evt.xy),
null,
evt.text,
null,
false
);
如果evt
不可用,您可以使用MousePosition控件:
map.getLonLatFromPixel(
(map.getControlsByClass("OpenLayers.Control.MousePosition")[0]).lastXy
)
答案 1 :(得分:2)
查看Map对象上的getLonLatFromPixel函数以及e.xy属性。
编辑: 另外,请检查有关事件的this setting。看起来你可以从所有类型的鼠标事件中提取xy属性。
答案 2 :(得分:1)
看看http://trac.osgeo.org/openlayers/ticket/2089, 使用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]);
}
});