2016-11-30 8 views
0

Мне нужно получить url плитки для плитки под курсором мыши, чтобы я мог показать увеличенную версию этого изображения в поле. Я согласен с тем, что это намного проще сделать в OL3, но для этого приложения я должен использовать OL2. Я нашел фрагменты, которые рассчитывают URL (taken from here):Как получить openlayers 2 tile url из слоя OSM

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 отсутствует. Есть ли более простой способ получить URL-адрес плитки? Благодарю.

ответ

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