繁体   English   中英

Openlayers-像素坐标不正确

[英]Openlayers - coordinates from pixel incorrect

我正在尝试通过在地图上单击鼠标来获取坐标。

直到我滚动地图,坐标才是正确的。 之后,它们是错误的-它们从点击位置移开了。 如果更改缩放级别,则下一个坐标正确,直到再次滚动地图。

首先,我认为getLayerPxFromViewPortPx返回错误的值,因为如果我向左和向顶部滚动并单击,它将为我提供一个带有负xy的像素。 但是我想这是它的工作方式,并且xy相对于图层中心。

这是我所拥有的:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM