![](/img/trans.png)
[英]How to get the Pixel from coordinates of a polygon/point on openlayers4
[英]Openlayers - coordinates from pixel incorrect
我正在尝试通过在地图上单击鼠标来获取坐标。
直到我滚动地图,坐标才是正确的。 之后,它们是错误的-它们从点击位置移开了。 如果更改缩放级别,则下一个坐标正确,直到再次滚动地图。
首先,我认为getLayerPxFromViewPortPx
返回错误的值,因为如果我向左和向顶部滚动并单击,它将为我提供一个带有负x
和y
的像素。 但是我想这是它的工作方式,并且x
和y
相对于图层中心。
这是我所拥有的:
map.events.register("click", map, function(e){ var opx = map.getLayerPxFromViewPortPx(e.xy) ; var lonlat = map.getLonLatFromPixel(opx); console.log(lonlat) var marker = new OpenLayers.Marker(lonlat); markers.addMarker(marker)
还有什么可能会失败?
我用var lonlat = map.getLonLatFromViewPortPx(e.xy)
更改了getLonLatFromPixel()
,现在看来可以正常工作。 但是我仍然很好奇为什么以前的失败。
在init函数中
var click = new OpenLayers.Control.Click();
map.addControl(click);
click.activate();
初始化功能
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.getLonLatFromPixel(e.xy);
N = lonlat.lat;
E = lonlat.lon;
alert("Bu koordinatlar civarındasınız: " + N + " N, " + E + " E");
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.