我希望openlayers在Vectorlayer中设置一个新点,如果激活了“创建模式”。 为此我从这里采用代码: http://dev.openlayers.org/releases/OpenLayers-2.13.1/examples/click-handler.html 它可以工作,但我只得到新点的xy坐标,而不是lonLat坐标。 map.getLonLatFromPixel(e.xy)doesent work。我不知道为什么。也许有人可以帮助我。
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.onClick,'dblclick': this.onDblclick}, this.handlerOptions);},
onClick: function(e) {
var toProjection = new OpenLayers.Projection("EPSG:4326");
//var lonLat = map.getLonLatFromPixel(e.xy).transform(map.getProjectionObject(), toProjection);
var output = document.getElementById(this.key + "Output");
var msg = e.xy;//.transform(new OpenLayers.Projection(proj), new OpenLayers.Projection(displproj));//.transform(new OpenLayers.Projection(displproj),new OpenLayers.Projection(proj));
output.value = output.value + msg + "\r\n";},
onDblclick: function(evt) {
var output = document.getElementById(this.key + "Output");
var msg = "dblclick " + e.xy;
output.value = output.value + msg + "\n";
}
});
在我尝试其他方式之前,我更喜欢:
http://openlayers.org/dev/examples/editingtoolbar-outside.html
在这种情况下,我没有得到任何坐标。
提前谢谢。
祝你好运 安布罗斯
答案 0 :(得分:0)
这对我有用:
map.events.register('click', map, function (e) {
var lonlat = map.getLonLatFromViewPortPx(e.xy);
});