2016-11-30 30 views
0

我需要獲取鼠標光標下的圖塊的圖塊url,以便我可以在一個框中顯示此圖像的放大版本。我同意在OL3中這樣做更容易,但對於此應用程序,我必須使用OL2。我發現,計算URL(taken from here)摘要:如何從OSM層獲得openlayers 2圖塊url

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; 

} 

不過,據我瞭解它的使用,這個功能是從該層定義調用。我找不到任何有關如何在鼠標懸停或鼠標點擊圖塊時調用此類函數的示例。

我在猜測上面代碼片段中的「this」是瓦片。我怎樣才能讓它傳遞給這個函數?沒有getTile函數。有沒有更簡單的方法來獲取平鋪網址?謝謝。

回答

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

同樣也應該工作的非OSM層延伸OpenLayers.Layer.XYZ