Na verdade, a amostra do evento click fornece o que você deseja.
OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
defaultHandlerOptions: {
'single': true,
'double': false,
'pixelTolerance': 0,
'stopSingle': false,
'stopDouble': false
},
initialize: function(options) {
this.handlerOptions = OpenLayers.Util.extend(
{}, this.defaultHandlerOptions
);
OpenLayers.Control.prototype.initialize.apply(
this, arguments
);
this.handler = new OpenLayers.Handler.Click(
this, {
'click': this.trigger
}, this.handlerOptions
);
},
trigger: function(e) {
var lonlat = map.getLonLatFromViewPortPx(e.xy);
alert("You clicked near " + lonlat.lat + " N, " +
+ lonlat.lon + " E");
}
});
Se necessário, você pode converter coordenadas em pixels para exibir o pop-up.
Editar - para obter coordenadas apenas na seleção do recurso :
var options = {
onSelect: getCoordinates,
};
var selectEt = new OpenLayers.Control.SelectFeature(mylayer, options);
map.addControl(selectEt);
function getCoordinates(e) {
// this should work
var lonlat = map.getLonLatFromViewPortPx(e.xy);
alert("You clicked near " + lonlat.lat + " N, " +
+ lonlat.lon + " E");
}
A API não fornece uma maneira de obter o local do clique no
SelectFeature
controle - mas deve. Seria uma adição trivial (terxy
incluído nofeatureselected
evento). Se você multar isso, seria o primeiro passo para que isso aconteça.Enquanto isso, você pode acessar o evento do mouse no manipulador de recursos usado pelo
SelectFeature
controle. Portanto, você pode ter um ouvinte parecido com isto:Isso pressupõe (obviamente) que você tenha uma referência ao
SelectFeature
controle e ao seu mapa.fonte
Consegui obter a latitude do evento click usando o seguinte:
Dentro do
clickFeature
manipuladorOnde
selectFeatureReference
está a referência àSelectFeature
que você criou.fonte
Foi assim que descobri na v3.8.2 para obter coordenadas como a seguir:
[-1.1645507812500016, 53.2257684357902]
quando clico no Reino Unido.
fonte
Você pode usar
feature.getBounds().getCenterLonLat()
. Funciona para recursos do tipo ponto / linha / polígono. E você não precisa saber o que é, pois funciona para todos.fonte
Caso alguém se depare com essa pergunta antiga como eu, na versão mais recente do OpenLayers neste momento (3.20.0), você pode obter a posição clicada usando
e.mapBrowserEvent.coordinate
ondee
está o evento Selecionar.fonte