Me han estado buscando durante varias horas y no encuentro la manera para obtener coordenadas del ratón después de un SelectFeature, que devuelve la función por sí mismo. Vi que esto se ha pedido varias veces antes, así que inténtelo de nuevo!
Respuestas
¿Demasiados anuncios?Cuando inicio el mapa agregar este control:
mapMousePosition = new OpenLayers.Control.MousePosition({
displayProjection: new OpenLayers.Projection(displayProjection)
});
En el controlador Haz lonLat como esta:
var lonLat = map.getLonLatFromPixel(
new OpenLayers.Pixel(
mapMousePosition.lastXy.x,
mapMousePosition.lastXy.y
);
Se puede obtener con estas maneras:
feature.geometry.getBounds().getCenterLonLat()
o
map.events.register("click", map, function(e) {
var latlon = map.getLonLatFromViewPortPx(e.xy) ;
alert(lonlat)
});
o
new OpenLayers.Control.SelectFeature(layer,{
hover:true,
eventListeners:{
onSelect:function(e){
alert(e.feature.geometry)
}
});
o
layer.events.on({
"featureselected": function(e) {
alert(e)
}
});
Espero te ayuda a...
mi estrategia (recursos intensivo) es escuchar mousemove
y constantemente ahorro x y y los valores en variables globales.
var mouseLat, mouseLon;
function init(){
...
map.events.register("mousemove", map, function(e) {
var position = this.events.getMousePosition(e);
var lonlat = map.getLonLatFromPixel(position);
var lonlatTransf = lonlat.transform(map.getProjectionObject(), proj4326);
mouseLat = lonlatTransf.lat;
mouseLon = lonlatTransf.lon;
OpenLayers.Util.getElement("coords").innerHTML = "Lat: "+ mouseLat+" | Lon: "+mouseLon;
});
...
}
Cuando se selecciona la opción, tener acceso a estos valores desde dentroonFeatureSelect(event)
Como una adición a la respuesta de Laurentiu Turcu:
Mientras pensaba que esto es una pregunta interesante configurar un jsfiddle que demuestra cómo mostrar la ventana emergente en la última mousePosition al seleccionar una función:
http://jsfiddle.net/Expedio/2asrpnm8/
así que incluso si se trata de 3 años... tal vez alguien puede utilizar este si stumples a través de esta pregunta.