@@ -1,13 +1,52 @@ | |||||
function GetCode(const url: AnsiString): Cardinal; | |||||
var | var | ||||
r: integer; | |||||
BaseUrl: string; | |||||
VResponseCode: Cardinal; | |||||
VResponseHeader, VResponseData: AnsiString; | |||||
begin | begin | ||||
r := random(2); | |||||
Result := 1; | |||||
if Assigned(Downloader) then begin | |||||
VResponseHeader := ''; | |||||
VResponseData := ''; | |||||
VResponseCode := Downloader.DoHttpRequest(url, '', '', VResponseHeader, VResponseData); | |||||
Result := VResponseCode; | |||||
end; | |||||
end; | |||||
var | |||||
BaseUrl: string; | |||||
code: Cardinal; | |||||
z_ok, z_no: integer; | |||||
r: integer; | |||||
begin | |||||
ResultURL := ''; | |||||
z_ok := StrToIntDef(GetBefore(';', ScriptBuffer), 1); // Максимальный масштаб, который точно есть | |||||
z_no := StrToIntDef(GetAfter(';', ScriptBuffer), 25); // Минимальный масштаб, которого точно нет | |||||
// Масштаба нет - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
// Выбор зеркала | |||||
r := random(2); | |||||
case r of | case r of | ||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
end; | |||||
// Проверяем наличие масштаба | |||||
if getz > z_ok then begin | |||||
code := GetCode(BaseUrl+'z'+inttostr(getz)+'/'); | |||||
// Внимание! Если сервер вернёт 403 - code почему-то будет 0. Так что выбор "404 или что-то иное" | |||||
// Если дело дошло до проверки наличия масштаба - значит какая-то граница (z_ok / z_no) точно подвинется. | |||||
if code = 404 then z_no := getz else z_ok := getz; | |||||
// Сохраняем актуализированные границы для последующих вызовов | |||||
ScriptBuffer := inttostr(z_ok) + ';' + inttostr(z_no); | |||||
// Масштаба нет (о чём могли только что при проверке узнать) - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
end; | end; | ||||
// Ок, качаем тайлик | |||||
ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.png'; | ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.png'; | ||||
end. | |||||
end. |
@@ -17,3 +17,4 @@ sradiusa=6378137 | |||||
sradiusb=6378137 | sradiusb=6378137 | ||||
ContentType="image/png" | ContentType="image/png" | ||||
MaxConnectToServerCount=1 | MaxConnectToServerCount=1 | ||||
IsUseDownloaderInScript=1 |
@@ -1,13 +1,52 @@ | |||||
function GetCode(const url: AnsiString): Cardinal; | |||||
var | var | ||||
r: integer; | |||||
BaseUrl: string; | |||||
VResponseCode: Cardinal; | |||||
VResponseHeader, VResponseData: AnsiString; | |||||
begin | begin | ||||
r := random(2); | |||||
Result := 1; | |||||
if Assigned(Downloader) then begin | |||||
VResponseHeader := ''; | |||||
VResponseData := ''; | |||||
VResponseCode := Downloader.DoHttpRequest(url, '', '', VResponseHeader, VResponseData); | |||||
Result := VResponseCode; | |||||
end; | |||||
end; | |||||
var | |||||
BaseUrl: string; | |||||
code: Cardinal; | |||||
z_ok, z_no: integer; | |||||
r: integer; | |||||
begin | |||||
ResultURL := ''; | |||||
z_ok := StrToIntDef(GetBefore(';', ScriptBuffer), 1); // Максимальный масштаб, который точно есть | |||||
z_no := StrToIntDef(GetAfter(';', ScriptBuffer), 25); // Минимальный масштаб, которого точно нет | |||||
// Масштаба нет - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
// Выбор зеркала | |||||
r := random(2); | |||||
case r of | case r of | ||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
end; | |||||
// Проверяем наличие масштаба | |||||
if getz > z_ok then begin | |||||
code := GetCode(BaseUrl+'z'+inttostr(getz)+'/'); | |||||
// Внимание! Если сервер вернёт 403 - code почему-то будет 0. Так что выбор "404 или что-то иное" | |||||
// Если дело дошло до проверки наличия масштаба - значит какая-то граница (z_ok / z_no) точно подвинется. | |||||
if code = 404 then z_no := getz else z_ok := getz; | |||||
// Сохраняем актуализированные границы для последующих вызовов | |||||
ScriptBuffer := inttostr(z_ok) + ';' + inttostr(z_no); | |||||
// Масштаба нет (о чём могли только что при проверке узнать) - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
end; | end; | ||||
// Ок, качаем тайлик | |||||
ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ||||
end. | |||||
end. |
@@ -16,3 +16,4 @@ sradiusa=6378137 | |||||
sradiusb=6378137 | sradiusb=6378137 | ||||
ContentType="image/jpeg" | ContentType="image/jpeg" | ||||
MaxConnectToServerCount=1 | MaxConnectToServerCount=1 | ||||
IsUseDownloaderInScript=1 |
@@ -1,13 +1,52 @@ | |||||
function GetCode(const url: AnsiString): Cardinal; | |||||
var | var | ||||
r: integer; | |||||
BaseUrl: string; | |||||
VResponseCode: Cardinal; | |||||
VResponseHeader, VResponseData: AnsiString; | |||||
begin | begin | ||||
r := random(2); | |||||
Result := 1; | |||||
if Assigned(Downloader) then begin | |||||
VResponseHeader := ''; | |||||
VResponseData := ''; | |||||
VResponseCode := Downloader.DoHttpRequest(url, '', '', VResponseHeader, VResponseData); | |||||
Result := VResponseCode; | |||||
end; | |||||
end; | |||||
var | |||||
BaseUrl: string; | |||||
code: Cardinal; | |||||
z_ok, z_no: integer; | |||||
r: integer; | |||||
begin | |||||
ResultURL := ''; | |||||
z_ok := StrToIntDef(GetBefore(';', ScriptBuffer), 1); // Максимальный масштаб, который точно есть | |||||
z_no := StrToIntDef(GetAfter(';', ScriptBuffer), 25); // Минимальный масштаб, которого точно нет | |||||
// Масштаба нет - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
// Выбор зеркала | |||||
r := random(2); | |||||
case r of | case r of | ||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
end; | |||||
// Проверяем наличие масштаба | |||||
if getz > z_ok then begin | |||||
code := GetCode(BaseUrl+'z'+inttostr(getz)+'/'); | |||||
// Внимание! Если сервер вернёт 403 - code почему-то будет 0. Так что выбор "404 или что-то иное" | |||||
// Если дело дошло до проверки наличия масштаба - значит какая-то граница (z_ok / z_no) точно подвинется. | |||||
if code = 404 then z_no := getz else z_ok := getz; | |||||
// Сохраняем актуализированные границы для последующих вызовов | |||||
ScriptBuffer := inttostr(z_ok) + ';' + inttostr(z_no); | |||||
// Масштаба нет (о чём могли только что при проверке узнать) - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
end; | end; | ||||
// Ок, качаем тайлик | |||||
ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ||||
end. | |||||
end. |
@@ -17,4 +17,5 @@ projection=1 | |||||
sradiusa=6378137 | sradiusa=6378137 | ||||
sradiusb=6378137 | sradiusb=6378137 | ||||
ContentType="image/jpeg" | ContentType="image/jpeg" | ||||
MaxConnectToServerCount=1 | |||||
MaxConnectToServerCount=1 | |||||
IsUseDownloaderInScript=1 |
@@ -1,13 +1,52 @@ | |||||
function GetCode(const url: AnsiString): Cardinal; | |||||
var | var | ||||
r: integer; | |||||
BaseUrl: string; | |||||
VResponseCode: Cardinal; | |||||
VResponseHeader, VResponseData: AnsiString; | |||||
begin | begin | ||||
r := random(2); | |||||
Result := 1; | |||||
if Assigned(Downloader) then begin | |||||
VResponseHeader := ''; | |||||
VResponseData := ''; | |||||
VResponseCode := Downloader.DoHttpRequest(url, '', '', VResponseHeader, VResponseData); | |||||
Result := VResponseCode; | |||||
end; | |||||
end; | |||||
var | |||||
BaseUrl: string; | |||||
code: Cardinal; | |||||
z_ok, z_no: integer; | |||||
r: integer; | |||||
begin | |||||
ResultURL := ''; | |||||
z_ok := StrToIntDef(GetBefore(';', ScriptBuffer), 1); // Максимальный масштаб, который точно есть | |||||
z_no := StrToIntDef(GetAfter(';', ScriptBuffer), 25); // Минимальный масштаб, которого точно нет | |||||
// Масштаба нет - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
// Выбор зеркала | |||||
r := random(2); | |||||
case r of | case r of | ||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
end; | |||||
// Проверяем наличие масштаба | |||||
if getz > z_ok then begin | |||||
code := GetCode(BaseUrl+'z'+inttostr(getz)+'/'); | |||||
// Внимание! Если сервер вернёт 403 - code почему-то будет 0. Так что выбор "404 или что-то иное" | |||||
// Если дело дошло до проверки наличия масштаба - значит какая-то граница (z_ok / z_no) точно подвинется. | |||||
if code = 404 then z_no := getz else z_ok := getz; | |||||
// Сохраняем актуализированные границы для последующих вызовов | |||||
ScriptBuffer := inttostr(z_ok) + ';' + inttostr(z_no); | |||||
// Масштаба нет (о чём могли только что при проверке узнать) - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
end; | end; | ||||
// Ок, качаем тайлик | |||||
ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ||||
end. | |||||
end. |
@@ -18,3 +18,4 @@ sradiusa=6378137 | |||||
sradiusb=6378137 | sradiusb=6378137 | ||||
ContentType="image/jpeg" | ContentType="image/jpeg" | ||||
MaxConnectToServerCount=1 | MaxConnectToServerCount=1 | ||||
IsUseDownloaderInScript=1 |
@@ -1,13 +1,52 @@ | |||||
function GetCode(const url: AnsiString): Cardinal; | |||||
var | var | ||||
r: integer; | |||||
BaseUrl: string; | |||||
VResponseCode: Cardinal; | |||||
VResponseHeader, VResponseData: AnsiString; | |||||
begin | begin | ||||
r := random(2); | |||||
Result := 1; | |||||
if Assigned(Downloader) then begin | |||||
VResponseHeader := ''; | |||||
VResponseData := ''; | |||||
VResponseCode := Downloader.DoHttpRequest(url, '', '', VResponseHeader, VResponseData); | |||||
Result := VResponseCode; | |||||
end; | |||||
end; | |||||
var | |||||
BaseUrl: string; | |||||
code: Cardinal; | |||||
z_ok, z_no: integer; | |||||
r: integer; | |||||
begin | |||||
ResultURL := ''; | |||||
z_ok := StrToIntDef(GetBefore(';', ScriptBuffer), 1); // Максимальный масштаб, который точно есть | |||||
z_no := StrToIntDef(GetAfter(';', ScriptBuffer), 25); // Минимальный масштаб, которого точно нет | |||||
// Масштаба нет - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
// Выбор зеркала | |||||
r := random(2); | |||||
case r of | case r of | ||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
end; | |||||
// Проверяем наличие масштаба | |||||
if getz > z_ok then begin | |||||
code := GetCode(BaseUrl+'z'+inttostr(getz)+'/'); | |||||
// Внимание! Если сервер вернёт 403 - code почему-то будет 0. Так что выбор "404 или что-то иное" | |||||
// Если дело дошло до проверки наличия масштаба - значит какая-то граница (z_ok / z_no) точно подвинется. | |||||
if code = 404 then z_no := getz else z_ok := getz; | |||||
// Сохраняем актуализированные границы для последующих вызовов | |||||
ScriptBuffer := inttostr(z_ok) + ';' + inttostr(z_no); | |||||
// Масштаба нет (о чём могли только что при проверке узнать) - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
end; | end; | ||||
// Ок, качаем тайлик | |||||
ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ||||
end. | |||||
end. |
@@ -17,3 +17,4 @@ sradiusb=6378137 | |||||
DefHotKey=50 | DefHotKey=50 | ||||
ContentType="image/jpeg" | ContentType="image/jpeg" | ||||
MaxConnectToServerCount=1 | MaxConnectToServerCount=1 | ||||
IsUseDownloaderInScript=1 |
@@ -1,13 +1,52 @@ | |||||
function GetCode(const url: AnsiString): Cardinal; | |||||
var | var | ||||
r: integer; | |||||
BaseUrl: string; | |||||
VResponseCode: Cardinal; | |||||
VResponseHeader, VResponseData: AnsiString; | |||||
begin | begin | ||||
r := random(2); | |||||
Result := 1; | |||||
if Assigned(Downloader) then begin | |||||
VResponseHeader := ''; | |||||
VResponseData := ''; | |||||
VResponseCode := Downloader.DoHttpRequest(url, '', '', VResponseHeader, VResponseData); | |||||
Result := VResponseCode; | |||||
end; | |||||
end; | |||||
var | |||||
BaseUrl: string; | |||||
code: Cardinal; | |||||
z_ok, z_no: integer; | |||||
r: integer; | |||||
begin | |||||
ResultURL := ''; | |||||
z_ok := StrToIntDef(GetBefore(';', ScriptBuffer), 1); // Максимальный масштаб, который точно есть | |||||
z_no := StrToIntDef(GetAfter(';', ScriptBuffer), 25); // Минимальный масштаб, которого точно нет | |||||
// Масштаба нет - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
// Выбор зеркала | |||||
r := random(2); | |||||
case r of | case r of | ||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
end; | |||||
// Проверяем наличие масштаба | |||||
if getz > z_ok then begin | |||||
code := GetCode(BaseUrl+'z'+inttostr(getz)+'/'); | |||||
// Внимание! Если сервер вернёт 403 - code почему-то будет 0. Так что выбор "404 или что-то иное" | |||||
// Если дело дошло до проверки наличия масштаба - значит какая-то граница (z_ok / z_no) точно подвинется. | |||||
if code = 404 then z_no := getz else z_ok := getz; | |||||
// Сохраняем актуализированные границы для последующих вызовов | |||||
ScriptBuffer := inttostr(z_ok) + ';' + inttostr(z_no); | |||||
// Масштаба нет (о чём могли только что при проверке узнать) - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
end; | end; | ||||
// Ок, качаем тайлик | |||||
ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ||||
end. | |||||
end. |
@@ -17,3 +17,4 @@ sradiusa=6378137 | |||||
sradiusb=6378137 | sradiusb=6378137 | ||||
ContentType="image/jpeg" | ContentType="image/jpeg" | ||||
MaxConnectToServerCount=1 | MaxConnectToServerCount=1 | ||||
IsUseDownloaderInScript=1 |
@@ -1,13 +1,52 @@ | |||||
function GetCode(const url: AnsiString): Cardinal; | |||||
var | var | ||||
r: integer; | |||||
BaseUrl: string; | |||||
VResponseCode: Cardinal; | |||||
VResponseHeader, VResponseData: AnsiString; | |||||
begin | begin | ||||
r := random(2); | |||||
Result := 1; | |||||
if Assigned(Downloader) then begin | |||||
VResponseHeader := ''; | |||||
VResponseData := ''; | |||||
VResponseCode := Downloader.DoHttpRequest(url, '', '', VResponseHeader, VResponseData); | |||||
Result := VResponseCode; | |||||
end; | |||||
end; | |||||
var | |||||
BaseUrl: string; | |||||
code: Cardinal; | |||||
z_ok, z_no: integer; | |||||
r: integer; | |||||
begin | |||||
ResultURL := ''; | |||||
z_ok := StrToIntDef(GetBefore(';', ScriptBuffer), 1); // Максимальный масштаб, который точно есть | |||||
z_no := StrToIntDef(GetAfter(';', ScriptBuffer), 25); // Минимальный масштаб, которого точно нет | |||||
// Масштаба нет - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
// Выбор зеркала | |||||
r := random(2); | |||||
case r of | case r of | ||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
end; | |||||
// Проверяем наличие масштаба | |||||
if getz > z_ok then begin | |||||
code := GetCode(BaseUrl+'z'+inttostr(getz)+'/'); | |||||
// Внимание! Если сервер вернёт 403 - code почему-то будет 0. Так что выбор "404 или что-то иное" | |||||
// Если дело дошло до проверки наличия масштаба - значит какая-то граница (z_ok / z_no) точно подвинется. | |||||
if code = 404 then z_no := getz else z_ok := getz; | |||||
// Сохраняем актуализированные границы для последующих вызовов | |||||
ScriptBuffer := inttostr(z_ok) + ';' + inttostr(z_no); | |||||
// Масштаба нет (о чём могли только что при проверке узнать) - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
end; | end; | ||||
// Ок, качаем тайлик | |||||
ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ||||
end. | |||||
end. |
@@ -16,3 +16,4 @@ sradiusa=6378137 | |||||
sradiusb=6378137 | sradiusb=6378137 | ||||
ContentType="image/jpeg" | ContentType="image/jpeg" | ||||
MaxConnectToServerCount=1 | MaxConnectToServerCount=1 | ||||
IsUseDownloaderInScript=1 |
@@ -1,13 +1,52 @@ | |||||
function GetCode(const url: AnsiString): Cardinal; | |||||
var | var | ||||
r: integer; | |||||
BaseUrl: string; | |||||
VResponseCode: Cardinal; | |||||
VResponseHeader, VResponseData: AnsiString; | |||||
begin | begin | ||||
r := random(2); | |||||
Result := 1; | |||||
if Assigned(Downloader) then begin | |||||
VResponseHeader := ''; | |||||
VResponseData := ''; | |||||
VResponseCode := Downloader.DoHttpRequest(url, '', '', VResponseHeader, VResponseData); | |||||
Result := VResponseCode; | |||||
end; | |||||
end; | |||||
var | |||||
BaseUrl: string; | |||||
code: Cardinal; | |||||
z_ok, z_no: integer; | |||||
r: integer; | |||||
begin | |||||
ResultURL := ''; | |||||
z_ok := StrToIntDef(GetBefore(';', ScriptBuffer), 1); // Максимальный масштаб, который точно есть | |||||
z_no := StrToIntDef(GetAfter(';', ScriptBuffer), 25); // Минимальный масштаб, которого точно нет | |||||
// Масштаба нет - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
// Выбор зеркала | |||||
r := random(2); | |||||
case r of | case r of | ||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
0: BaseUrl := GetURLBase; | |||||
1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | |||||
end; | |||||
// Проверяем наличие масштаба | |||||
if getz > z_ok then begin | |||||
code := GetCode(BaseUrl+'z'+inttostr(getz)+'/'); | |||||
// Внимание! Если сервер вернёт 403 - code почему-то будет 0. Так что выбор "404 или что-то иное" | |||||
// Если дело дошло до проверки наличия масштаба - значит какая-то граница (z_ok / z_no) точно подвинется. | |||||
if code = 404 then z_no := getz else z_ok := getz; | |||||
// Сохраняем актуализированные границы для последующих вызовов | |||||
ScriptBuffer := inttostr(z_ok) + ';' + inttostr(z_no); | |||||
// Масштаба нет (о чём могли только что при проверке узнать) - говорить не о чем | |||||
if getz >= z_no then exit; | |||||
end; | end; | ||||
// Ок, качаем тайлик | |||||
ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | ||||
end. | |||||
end. |
@@ -16,3 +16,4 @@ Ext=.jpg | |||||
defaultContentType=image/jpeg | defaultContentType=image/jpeg | ||||
ContentType="image/jpeg" | ContentType="image/jpeg" | ||||
MaxConnectToServerCount=1 | MaxConnectToServerCount=1 | ||||
IsUseDownloaderInScript=1 |