Sebenarnya, sampel acara klik memberi Anda apa yang Anda inginkan.
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");
}
});
Jika perlu Anda dapat mengonversi koordinat ke piksel untuk menampilkan sembulan.
Edit - untuk mendapatkan koordinat hanya pada fitur pemilihan :
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");
}
API tidak menyediakan cara untuk mendapatkan lokasi klik dari
SelectFeature
kontrol - tetapi seharusnya. Itu akan menjadi tambahan sepele (untukxy
dimasukkan dalamfeatureselected
acara). Jika Anda memberi tiket ini, itu akan menjadi langkah pertama untuk mewujudkannya.Sementara itu, Anda dapat mengakses acara mouse pada penangan fitur yang digunakan oleh
SelectFeature
kontrol. Jadi, Anda mungkin memiliki pendengar yang terlihat seperti ini:Ini mengasumsikan (jelas) bahwa Anda memiliki referensi ke
SelectFeature
kontrol dan peta Anda.sumber
Saya bisa mendapatkan lat lon acara klik menggunakan yang berikut:
Di dalam
clickFeature
pawangdi mana
selectFeatureReference
referensi keSelectFeature
yang Anda buat.sumber
Ini adalah bagaimana saya menemukan jawabannya di v3.8.2 untuk mendapatkan koordinat seperti berikut:
[-1.1645507812500016, 53.2257684357902]
ketika saya mengklik di Inggris.
sumber
Anda bisa menggunakannya
feature.getBounds().getCenterLonLat()
. Bekerja untuk fitur tipe titik / garis / poligon. Dan Anda tidak perlu tahu apa itu, karena itu bekerja untuk semua.sumber
Jika ada orang yang menemukan pertanyaan lama ini seperti yang saya lakukan, dalam rilis terbaru OpenLayers saat ini (3.20.0) Anda bisa mendapatkan posisi yang diklik menggunakan di
e.mapBrowserEvent.coordinate
manae
adalah acara Select.sumber