{----------------------------------------------- Из файла ImageProperties.xml ------------------------------------------------} const m_nWidth = 9910; m_nHeight = 7476; var i, zoom, nMaxZoom, nTileGroup :Longint; {----------------------------------------------- Возвращает floor значение ------------------------------------------------} function Floor(v :Extended) :Extended; begin Result := Trunc(v); if v < Result then Result := Result - 1.0; end; {----------------------------------------------- Возвращает ceil значение ------------------------------------------------} function Ceil(v :Extended) :Extended; begin Result := Trunc(v); if v > Result then Result := Result + 1.0; end; {----------------------------------------------- Получение максимально возможного Zoom'а ------------------------------------------------} procedure GetMaxZoom(); var k, i :Longint; begin k := m_nWidth; if m_nHeight > m_nWidth then k := m_nHeight; i := 0; while k > 256 do begin k := Trunc(k / 2); Inc(i); end; nMaxZoom := i; end; {----------------------------------------------- Получение количества тайлов на данном Zoom'е ------------------------------------------------} function GetTilesAtZoom(zoom: Longint) :Longint; var k :Extended; begin k := 256.0 * IntPower(2, nMaxZoom - zoom); Result := Trunc(Ceil(m_nWidth / k) * Ceil(m_nHeight / k)); end; {----------------------------------------------- Количество тайлов предшествующих данному Zoom'у ------------------------------------------------} function GetTilesCount(nZoom: Longint) :Longint; var i: Longint; begin Result := 0; for i := 0 to nZoom - 1 do Result := Result + GetTilesAtZoom(i); end; {----------------------------------------------- Получение URL тайла ------------------------------------------------} begin zoom := GetZ - 1; GetMaxZoom(); nTileGroup := (GetX + GetY * Trunc(Ceil(m_nWidth / (256.0 * IntPower(2, nMaxZoom - zoom)))) + GetTilesCount(zoom)) div 256; ResultURL := GetURLBase + IntToStr(nTileGroup) + '/' + IntToStr(zoom) + '-' + IntToStr(GetX) + '-' + IntToStr(GetY) + '.jpg'; { RequestHead := 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + #13#10; } end.