【问题标题】:Openlayers - coordinates from pixel incorrectOpenlayers - 像素坐标不正确
【发布时间】:2012-04-21 05:45:15
【问题描述】:

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

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

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

这是我所拥有的:

map.events.register("点击", map, function(e){ var opx = map.getLayerPxFromViewPortPx(e.xy) ; var lonlat = map.getLonLatFromPixel(opx); 控制台日志(lonlat) var marker = new OpenLayers.Marker(lonlat); 标记.addMarker(标记)

还有什么可能会失败?

【问题讨论】:

  • 您能否提供一个完整的示例,包括地图和图层设置?
  • 我将 getLonLatFromPixel() 更改为 var lonlat = map.getLonLatFromViewPortPx(e.xy),现在它似乎工作了。但是我仍然很好奇为什么以前的失败。关于完整的例子,你可以在这里找到:dev.ivanatora.info/spirki

标签: javascript coordinates openlayers


【解决方案1】:

我将getLonLatFromPixel() 更改为var lonlat = map.getLonLatFromViewPortPx(e.xy),现在它似乎工作了。不过我还是很好奇为什么之前的失败了。

【讨论】:

    【解决方案2】:

    在初始化函数()中

     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");
    
    
    
    
    
    
    }
    

    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      相关资源
      最近更新 更多