如何从OSM层获取openlayers 2 tile url

时间:2016-11-30 20:37:03

标签: openlayers

我需要获取鼠标光标下的磁贴的磁贴网址,以便我可以在一个框中显示该图像的放大版本。我同意在OL3中这样做要容易得多,但对于这个应用程序,我必须使用OL2。我找到了计算网址(taken from here)的片段:

    function get_my_url (bounds) {
    var res = this.map.getResolution();
    var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
    var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
    var z = this.map.getZoom();

    var path = z + "/" + x + "/" + y + "." + this.type; 
    var url = this.url;
    if (url instanceof Array) {
        url = this.selectUrl(path, url);
    }
    return url + path;

}

但是,正如我所理解的那样,从图层定义中调用此函数。我找不到任何关于如何在鼠标悬停或鼠标点击图块上调用此类函数的示例。

我猜这个"这个"在上面的片段是瓷砖。如何让瓷砖将其传递给此功能?没有getTile函数。有没有更简单的方法来获得瓷砖网址?感谢。

1 个答案:

答案 0 :(得分:0)

将“lonLat”作为点击或覆盖的点,并“层叠”对OSM图层的引用:

var bounds = new OpenLayers.Bounds(lonLat.lon, lonLat.lat, lonLat.lon, lonLat.lat);
var xyz = layer.getXYZ(bounds);
var tileUrl = OpenLayers.String.format(layer.url[0], xyz);

同样适用于扩展OpenLayers.Layer.XYZ的非OSM层