@@ -2,8 +2,8 @@ | |||||
GUID={0b111110-866b-466e-b8d7-7b43297400c3} | GUID={0b111110-866b-466e-b8d7-7b43297400c3} | ||||
name_ru=Ěĺăŕôîí 2G GSM | name_ru=Ěĺăŕôîí 2G GSM | ||||
name=Megafon 2G GSM | name=Megafon 2G GSM | ||||
ParentSubMenu_ru=Cîňîâűĺ ńĺňč | |||||
ParentSubMenu=Mobile coverage area | |||||
ParentSubMenu_ru=Ńëîěŕííűĺ ęŕđňű\Cîňîâűĺ ńĺňč | |||||
ParentSubMenu=Not working\Mobile coverage area | |||||
asLayer=1 | asLayer=1 | ||||
DefURLBase=http://yamap.megafon.ru/g2/ | DefURLBase=http://yamap.megafon.ru/g2/ | ||||
projection=2 | projection=2 | ||||
@@ -2,8 +2,8 @@ | |||||
GUID={0b122210-866b-466e-b8d7-7b43297400c3} | GUID={0b122210-866b-466e-b8d7-7b43297400c3} | ||||
name_ru=Ìåãàôîí 3G | name_ru=Ìåãàôîí 3G | ||||
name=Megafon 3G | name=Megafon 3G | ||||
ParentSubMenu_ru=Cîòîâûå ñåòè | |||||
ParentSubMenu=Mobile coverage area | |||||
ParentSubMenu_ru=Ñëîìàííûå êàðòû\Cîòîâûå ñåòè | |||||
ParentSubMenu=Not working\Mobile coverage area | |||||
asLayer=1 | asLayer=1 | ||||
DefURLBase=http://yamap.megafon.ru/g3/ | DefURLBase=http://yamap.megafon.ru/g3/ | ||||
projection=2 | projection=2 | ||||
@@ -2,8 +2,8 @@ | |||||
GUID={0b133330-866b-466e-b8d7-7b43297400c3} | GUID={0b133330-866b-466e-b8d7-7b43297400c3} | ||||
name_ru=Ìåãàôîí 4G | name_ru=Ìåãàôîí 4G | ||||
name=Megafon 4G | name=Megafon 4G | ||||
ParentSubMenu_ru=Cîòîâûå ñåòè | |||||
ParentSubMenu=Mobile coverage area | |||||
ParentSubMenu_ru=Ñëîìàííûå êàðòû\Cîòîâûå ñåòè | |||||
ParentSubMenu=Not working\Mobile coverage area | |||||
asLayer=1 | asLayer=1 | ||||
DefURLBase=http://yamap.megafon.ru/lte/ | DefURLBase=http://yamap.megafon.ru/lte/ | ||||
projection=2 | projection=2 | ||||
@@ -2,8 +2,8 @@ | |||||
GUID={0b144440-866b-466e-b8d7-7b43297400c3} | GUID={0b144440-866b-466e-b8d7-7b43297400c3} | ||||
name_ru=Ìåãàôîí 4G+ | name_ru=Ìåãàôîí 4G+ | ||||
name=Megafon 4G+ | name=Megafon 4G+ | ||||
ParentSubMenu_ru=Cîòîâûå ñåòè | |||||
ParentSubMenu=Mobile coverage area | |||||
ParentSubMenu_ru=Ñëîìàííûå êàðòû\Cîòîâûå ñåòè | |||||
ParentSubMenu=Not working\Mobile coverage area | |||||
asLayer=1 | asLayer=1 | ||||
DefURLBase=http://yamap.megafon.ru/lte_plus/ | DefURLBase=http://yamap.megafon.ru/lte_plus/ | ||||
projection=2 | projection=2 | ||||
@@ -2,8 +2,8 @@ | |||||
GUID={0bffa4e0-852b-4bee-b8d7-7b43297400c3} | GUID={0bffa4e0-852b-4bee-b8d7-7b43297400c3} | ||||
name_ru=ÌÒÑ 2G | name_ru=ÌÒÑ 2G | ||||
name=MTS 2G | name=MTS 2G | ||||
ParentSubMenu_ru=Cîòîâûå ñåòè | |||||
ParentSubMenu=Mobile coverage area | |||||
ParentSubMenu_ru=Ñëîìàííûå êàðòû\Cîòîâûå ñåòè | |||||
ParentSubMenu=Not working\Mobile coverage area | |||||
asLayer=1 | asLayer=1 | ||||
DefURLBase=http://tiles.mts.ru/G2_New/ | DefURLBase=http://tiles.mts.ru/G2_New/ | ||||
projection=2 | projection=2 | ||||
@@ -2,8 +2,8 @@ | |||||
GUID={ce276b7a-a0e3-47a4-bb66-af84b817801d} | GUID={ce276b7a-a0e3-47a4-bb66-af84b817801d} | ||||
name_ru=ĚŇŃ 3G | name_ru=ĚŇŃ 3G | ||||
name=MTS 3G | name=MTS 3G | ||||
ParentSubMenu_ru=Cîňîâűĺ ńĺňč | |||||
ParentSubMenu=Mobile coverage area | |||||
ParentSubMenu_ru=Ńëîěŕííűĺ ęŕđňű\Cîňîâűĺ ńĺňč | |||||
ParentSubMenu=Not working\Mobile coverage area | |||||
asLayer=1 | asLayer=1 | ||||
DefURLBase=http://tiles.mts.ru/G3_New/ | DefURLBase=http://tiles.mts.ru/G3_New/ | ||||
projection=2 | projection=2 | ||||
@@ -2,8 +2,8 @@ | |||||
GUID={dc5600ae-2507-4a2b-a6e4-4b2270575020} | GUID={dc5600ae-2507-4a2b-a6e4-4b2270575020} | ||||
name_ru=ĚŇŃ 4G | name_ru=ĚŇŃ 4G | ||||
name=MTS 4G | name=MTS 4G | ||||
ParentSubMenu_ru=Cîňîâűĺ ńĺňč | |||||
ParentSubMenu=Mobile coverage area | |||||
ParentSubMenu_ru=Ńëîěŕííűĺ ęŕđňű\Cîňîâűĺ ńĺňč | |||||
ParentSubMenu=Not working\Mobile coverage area | |||||
asLayer=1 | asLayer=1 | ||||
DefURLBase=http://tiles.mts.ru/LTE_New/ | DefURLBase=http://tiles.mts.ru/LTE_New/ | ||||
projection=2 | projection=2 | ||||
@@ -2,8 +2,8 @@ | |||||
GUID={ffe20781-25e6-42c8-bf8e-2879789477b2} | GUID={ffe20781-25e6-42c8-bf8e-2879789477b2} | ||||
name_ru=ÌÒÑ 4G ïëàíèðóåìîå | name_ru=ÌÒÑ 4G ïëàíèðóåìîå | ||||
name=MTS 4G planned | name=MTS 4G planned | ||||
ParentSubMenu_ru=Cîòîâûå ñåòè | |||||
ParentSubMenu=Mobile coverage area | |||||
ParentSubMenu_ru=Ñëîìàííûå êàðòû\Cîòîâûå ñåòè | |||||
ParentSubMenu=Not working\Mobile coverage area | |||||
asLayer=1 | asLayer=1 | ||||
DefURLBase=http://tiles.mts.ru/LTE_Plan_New/ | DefURLBase=http://tiles.mts.ru/LTE_Plan_New/ | ||||
projection=2 | projection=2 | ||||
@@ -3,7 +3,7 @@ GUID={1123ADB1-4561-4280-9225-D4690321117E} | |||||
ParentSubMenu_ru=Ìàðøðóòû è GPS-Òðåêè | ParentSubMenu_ru=Ìàðøðóòû è GPS-Òðåêè | ||||
ParentSubMenu_uk=Ìàðøðóòû è GPS-Òðåêè | ParentSubMenu_uk=Ìàðøðóòû è GPS-Òðåêè | ||||
ParentSubMenu=Ways and GPS-Tracks | ParentSubMenu=Ways and GPS-Tracks | ||||
name=WayMarkeredTrails iking | |||||
name=WayMarkeredTrails Hiking | |||||
asLayer=1 | asLayer=1 | ||||
NameInCache=waymarkedtrails_hiking | NameInCache=waymarkedtrails_hiking | ||||
DefURLBase=https://tile.waymarkedtrails.org/hiking | DefURLBase=https://tile.waymarkedtrails.org/hiking | ||||
@@ -0,0 +1,9 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | |||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | |||||
https://t.me/anygis | |||||
https://vk.com/anygis | |||||
anygis@bk.ru |
@@ -0,0 +1,17 @@ | |||||
| |||||
[PARAMS] | |||||
GUID={16BBE393-814C-4A37-BF28-F7362EC5FB9F} | |||||
ParentSubMenu_ru=Спутниковые | |||||
ParentSubMenu_uk=Спутниковые | |||||
ParentSubMenu=Satellite | |||||
name_ru=Mapbox satellite v4 | |||||
name_uk=Mapbox satellite v4 | |||||
name=Mapbox satellite v4 | |||||
NameInCache=Mapbox_Sat | |||||
asLayer=0 | |||||
EPSG=3785 | |||||
DefURLBase=http://api.tiles.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoienZlcmlrIiwiYSI6IjVLMGxwbGsifQ.pdb83NbjTrfl9ibbdjPSsg | |||||
RequestHead=Connection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | |||||
ContentType=image/jpeg,image/png | |||||
Ext=.png | |||||
License= © Mapbox |
@@ -0,0 +1,9 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | |||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | |||||
https://t.me/anygis | |||||
https://vk.com/anygis | |||||
anygis@bk.ru |
@@ -0,0 +1,17 @@ | |||||
| |||||
[PARAMS] | |||||
GUID={F224BE12-F871-4F9A-8109-9FFDD6592261} | |||||
ParentSubMenu_ru=Спутниковые | |||||
ParentSubMenu_uk=Спутниковые | |||||
ParentSubMenu=Satellite | |||||
name_ru=Maxar (via Facebook) zoom 11-18 | |||||
name_uk=Maxar (via Facebook) zoom 11-18 | |||||
name=Maxar (via Facebook) zoom 11-18 | |||||
NameInCache=Maxar_via_Facebook | |||||
asLayer=0 | |||||
EPSG=3785 | |||||
DefURLBase=https://www.facebook.com/maps/ml_roads?theme=ml_road_vector&collaborator=fbid&token=ASZUVdYpCkd3M6ZrzjXdQzHulqRMnxdlkeBJWEKOeTUoY_Gwm9fuEd2YObLrClgDB_xfavizBsh0oDfTWTF7Zb4C&hash=ASYM8LPNy8k1XoJiI7A&result_type=satellite_raster_tile&materialize=true&x={x}&y={y}&z={z} | |||||
RequestHead=Referer:https://mapwith.ai/rapid\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | |||||
ContentType=image/jpeg,image/png | |||||
Ext=.jpg | |||||
License= © Maxar |
@@ -0,0 +1,9 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | |||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | |||||
https://t.me/anygis | |||||
https://vk.com/anygis | |||||
anygis@bk.ru |
@@ -0,0 +1,18 @@ | |||||
| |||||
[PARAMS] | |||||
GUID={8D5C7041-474A-468E-A37E-63BE5194E759} | |||||
ParentSubMenu_ru=OSM | |||||
ParentSubMenu_uk=OSM | |||||
ParentSubMenu=OSM | |||||
name_ru=OpenTopoMap.RU | |||||
name_uk=OpenTopoMap.RU | |||||
name=OpenTopoMap.RU | |||||
NameInCache=OpenTopoMapRU | |||||
asLayer=0 | |||||
EPSG=3785 | |||||
DefURLBase=https://tile-{s}.opentopomap.ru/{z}/{x}/{y}.png | |||||
ServerNames=a,b,c | |||||
RequestHead=Referer:http://www.sasgis.org/ | |||||
ContentType=image/jpeg,image/png | |||||
Ext=.png | |||||
License= © OpenStreetMap, OpenTopoMap.ru |
@@ -0,0 +1,9 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | |||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | |||||
https://t.me/anygis | |||||
https://vk.com/anygis | |||||
anygis@bk.ru |
@@ -0,0 +1,17 @@ | |||||
| |||||
[PARAMS] | |||||
GUID={41B5F6BE-6108-4158-AD04-9317E841AE92} | |||||
ParentSubMenu_ru=Туристические\Многослойные | |||||
ParentSubMenu_uk=Туристические\Многослойные | |||||
ParentSubMenu=Tourism\Karelia | |||||
name_ru=RusOutdoor maps | |||||
name_uk=RusOutdoor maps | |||||
name=RusOutdoor maps | |||||
NameInCache=RusOurdoor | |||||
asLayer=0 | |||||
EPSG=3785 | |||||
DefURLBase=https://anygis.ru/api/v1/Combo_RusOutdoor/{x}/{y}/{z} | |||||
RequestHead=Referer:http://www.sasgis.org/ | |||||
ContentType=image/jpeg,image/png | |||||
Ext=.jpg | |||||
@@ -0,0 +1,9 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | |||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | |||||
https://t.me/anygis | |||||
https://vk.com/anygis | |||||
anygis@bk.ru |
@@ -0,0 +1,17 @@ | |||||
| |||||
[PARAMS] | |||||
GUID={A4694424-B8C8-4469-B80F-2470A8209BA5} | |||||
ParentSubMenu_ru=Туристические\Многослойные | |||||
ParentSubMenu_uk=Туристические\Многослойные | |||||
ParentSubMenu=Tourism\Karelia | |||||
name_ru=RusOutdoor maps iite | |||||
name_uk=RusOutdoor maps iite | |||||
name=RusOutdoor maps iite | |||||
NameInCache=RusOurdoor_lite | |||||
asLayer=0 | |||||
EPSG=3785 | |||||
DefURLBase=https://anygis.ru/api/v1/Combo_RusOutdoor_lite/{x}/{y}/{z} | |||||
RequestHead=Referer:http://www.sasgis.org/ | |||||
ContentType=image/jpeg,image/png | |||||
Ext=.jpg | |||||
@@ -1,216 +0,0 @@ | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS | |||||
// ----------------------------------------------------------------------------- | |||||
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet. | |||||
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal, | |||||
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû. | |||||
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z} | |||||
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê: | |||||
// | |||||
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png | |||||
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen | |||||
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû: | |||||
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing) | |||||
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte) | |||||
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ) | |||||
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè) | |||||
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet) | |||||
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà. | |||||
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî. | |||||
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå, | |||||
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà. | |||||
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû, | |||||
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê: | |||||
// | |||||
// writeLn('Hello Sas.Planet!'); | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ? | |||||
function isContains(findingText: string; inSourceText: string) : boolean; | |||||
begin | |||||
result := pos(findingText, inSourceText) <> 0; | |||||
end; | |||||
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé | |||||
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè) | |||||
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string; | |||||
var | |||||
intPart, floatPart : integer; | |||||
begin | |||||
intPart := floor(sourceNumber); | |||||
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) ) | |||||
result := intToStr(intPart) + '.' + intToStr(floatPart) | |||||
end; | |||||
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing) | |||||
function getQuadkeyText(x: integer; y: integer; z: integer) : string; | |||||
var | |||||
i, q : byte; | |||||
begin | |||||
result:=''; | |||||
for i:=1 to z do begin | |||||
q:=0; | |||||
if x mod 2 = 1 then q := q + 1; | |||||
if y mod 2 = 1 then q := q + 2; | |||||
x := x div 2; | |||||
y := y div 2; | |||||
result := intToStr(q) + result; | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà | |||||
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c} | |||||
// ----------------------------------------------------------------------------- | |||||
type | |||||
TSubst = record | |||||
mask, val : string; | |||||
end; | |||||
TSubsts = record | |||||
count : integer; | |||||
s : array [0..15] of TSubst; | |||||
end; | |||||
function replaceServerName(url: string) : string; | |||||
var | |||||
s, ss : string; | |||||
sarr : array [0..9] of string; | |||||
sarr_l, p : integer; | |||||
begin | |||||
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0); | |||||
if s <> '' then begin | |||||
ss := s; | |||||
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]); | |||||
ss := StringReplace(ss, '}', '', [rfIgnoreCase]); | |||||
ss := ss + ','; | |||||
sarr_l := 0; | |||||
while ss <> '' do begin | |||||
p := pos(',', ss); | |||||
if p = 0 then p := length(ss); | |||||
sarr[sarr_l] := copy(ss, 1, p-1); | |||||
sarr_l := sarr_l + 1; | |||||
delete(ss, 1, p); | |||||
end; | |||||
url := StringReplace(url, s, sarr[random(sarr_l)], []); | |||||
end; | |||||
Result := url; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà | |||||
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}. | |||||
// ----------------------------------------------------------------------------- | |||||
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string; | |||||
var | |||||
options: tReplaceFlags; | |||||
calculatedValue: string; | |||||
begin | |||||
options := [rfReplaceAll, rfIgnoreCase]; | |||||
result := urlTemplate; | |||||
if isContains('{x}', result) then begin | |||||
calculatedValue := intToStr(x); | |||||
result := stringReplace( result, '{x}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y}', result) then begin | |||||
calculatedValue := intToStr(y); | |||||
result := stringReplace( result, '{y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z}', result) then begin | |||||
calculatedValue := intToStr(z-1); | |||||
result := stringReplace( result, '{z}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z+1}', result) then begin | |||||
calculatedValue := intToStr(z); | |||||
result := stringReplace( result, '{z+1}', calculatedValue, options) | |||||
end; | |||||
if isContains('{x/1024}', result) then begin | |||||
calculatedValue := intToStr(x div 1024); | |||||
result := stringReplace( result, '{x/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y/1024}', result) then begin | |||||
calculatedValue := intToStr(y div 1024); | |||||
result := stringReplace( result, '{y/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{-y}', result) then begin | |||||
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y); | |||||
result := stringReplace( result, '{-y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{q}', result) then begin | |||||
calculatedValue := getQuadkeyText(x, y, z); | |||||
result := stringReplace( result, '{q}', calculatedValue, options) | |||||
end; | |||||
if isContains('{bbox}', result) then begin | |||||
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options) | |||||
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options) | |||||
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options) | |||||
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options) | |||||
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options) | |||||
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå | |||||
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà. | |||||
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü. | |||||
end; | |||||
if isContains('{timeStamp}', result) then begin | |||||
calculatedValue := IntToStr(GetUnixTime); | |||||
result := stringReplace( result, '{timeStamp}', calculatedValue, options) | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà. | |||||
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL. | |||||
// ----------------------------------------------------------------------------- | |||||
begin | |||||
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ); | |||||
resultURL := replaceServerName(resultURL); | |||||
end. |
@@ -1,4 +1,6 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | ||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | ||||
@@ -1,6 +1,6 @@ | |||||
| | ||||
[PARAMS] | [PARAMS] | ||||
GUID={7E330845-C966-4B63-B909-5214A016BDB1} | |||||
GUID={A26CA77D-E37A-42FF-AB59-A6211163C2BB} | |||||
ParentSubMenu_ru=Маршруты и GPS-Треки | ParentSubMenu_ru=Маршруты и GPS-Треки | ||||
ParentSubMenu_uk=Маршруты и GPS-Треки | ParentSubMenu_uk=Маршруты и GPS-Треки | ||||
ParentSubMenu=Ways and GPS-Tracks | ParentSubMenu=Ways and GPS-Tracks | ||||
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Все слои | |||||
name=Strava Heatmap - All layers | name=Strava Heatmap - All layers | ||||
NameInCache=Tracks_Strava_All | NameInCache=Tracks_Strava_All | ||||
asLayer=1 | asLayer=1 | ||||
projection=1 | |||||
sradiusa=6378137 | |||||
sradiusb=6378137 | |||||
EPSG=3785 | |||||
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_All/{x}/{y}/{z} | DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_All/{x}/{y}/{z} | ||||
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | ||||
ContentType=image/jpeg,image/png | ContentType=image/jpeg,image/png | ||||
@@ -1,216 +0,0 @@ | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS | |||||
// ----------------------------------------------------------------------------- | |||||
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet. | |||||
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal, | |||||
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû. | |||||
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z} | |||||
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê: | |||||
// | |||||
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png | |||||
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen | |||||
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû: | |||||
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing) | |||||
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte) | |||||
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ) | |||||
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè) | |||||
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet) | |||||
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà. | |||||
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî. | |||||
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå, | |||||
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà. | |||||
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû, | |||||
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê: | |||||
// | |||||
// writeLn('Hello Sas.Planet!'); | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ? | |||||
function isContains(findingText: string; inSourceText: string) : boolean; | |||||
begin | |||||
result := pos(findingText, inSourceText) <> 0; | |||||
end; | |||||
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé | |||||
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè) | |||||
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string; | |||||
var | |||||
intPart, floatPart : integer; | |||||
begin | |||||
intPart := floor(sourceNumber); | |||||
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) ) | |||||
result := intToStr(intPart) + '.' + intToStr(floatPart) | |||||
end; | |||||
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing) | |||||
function getQuadkeyText(x: integer; y: integer; z: integer) : string; | |||||
var | |||||
i, q : byte; | |||||
begin | |||||
result:=''; | |||||
for i:=1 to z do begin | |||||
q:=0; | |||||
if x mod 2 = 1 then q := q + 1; | |||||
if y mod 2 = 1 then q := q + 2; | |||||
x := x div 2; | |||||
y := y div 2; | |||||
result := intToStr(q) + result; | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà | |||||
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c} | |||||
// ----------------------------------------------------------------------------- | |||||
type | |||||
TSubst = record | |||||
mask, val : string; | |||||
end; | |||||
TSubsts = record | |||||
count : integer; | |||||
s : array [0..15] of TSubst; | |||||
end; | |||||
function replaceServerName(url: string) : string; | |||||
var | |||||
s, ss : string; | |||||
sarr : array [0..9] of string; | |||||
sarr_l, p : integer; | |||||
begin | |||||
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0); | |||||
if s <> '' then begin | |||||
ss := s; | |||||
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]); | |||||
ss := StringReplace(ss, '}', '', [rfIgnoreCase]); | |||||
ss := ss + ','; | |||||
sarr_l := 0; | |||||
while ss <> '' do begin | |||||
p := pos(',', ss); | |||||
if p = 0 then p := length(ss); | |||||
sarr[sarr_l] := copy(ss, 1, p-1); | |||||
sarr_l := sarr_l + 1; | |||||
delete(ss, 1, p); | |||||
end; | |||||
url := StringReplace(url, s, sarr[random(sarr_l)], []); | |||||
end; | |||||
Result := url; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà | |||||
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}. | |||||
// ----------------------------------------------------------------------------- | |||||
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string; | |||||
var | |||||
options: tReplaceFlags; | |||||
calculatedValue: string; | |||||
begin | |||||
options := [rfReplaceAll, rfIgnoreCase]; | |||||
result := urlTemplate; | |||||
if isContains('{x}', result) then begin | |||||
calculatedValue := intToStr(x); | |||||
result := stringReplace( result, '{x}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y}', result) then begin | |||||
calculatedValue := intToStr(y); | |||||
result := stringReplace( result, '{y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z}', result) then begin | |||||
calculatedValue := intToStr(z-1); | |||||
result := stringReplace( result, '{z}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z+1}', result) then begin | |||||
calculatedValue := intToStr(z); | |||||
result := stringReplace( result, '{z+1}', calculatedValue, options) | |||||
end; | |||||
if isContains('{x/1024}', result) then begin | |||||
calculatedValue := intToStr(x div 1024); | |||||
result := stringReplace( result, '{x/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y/1024}', result) then begin | |||||
calculatedValue := intToStr(y div 1024); | |||||
result := stringReplace( result, '{y/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{-y}', result) then begin | |||||
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y); | |||||
result := stringReplace( result, '{-y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{q}', result) then begin | |||||
calculatedValue := getQuadkeyText(x, y, z); | |||||
result := stringReplace( result, '{q}', calculatedValue, options) | |||||
end; | |||||
if isContains('{bbox}', result) then begin | |||||
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options) | |||||
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options) | |||||
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options) | |||||
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options) | |||||
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options) | |||||
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå | |||||
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà. | |||||
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü. | |||||
end; | |||||
if isContains('{timeStamp}', result) then begin | |||||
calculatedValue := IntToStr(GetUnixTime); | |||||
result := stringReplace( result, '{timeStamp}', calculatedValue, options) | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà. | |||||
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL. | |||||
// ----------------------------------------------------------------------------- | |||||
begin | |||||
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ); | |||||
resultURL := replaceServerName(resultURL); | |||||
end. |
@@ -1,4 +1,6 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | ||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | ||||
@@ -1,6 +1,6 @@ | |||||
| | ||||
[PARAMS] | [PARAMS] | ||||
GUID={B71DF157-F075-4F01-9A69-DF344D69DF2D} | |||||
GUID={9442ADAB-F5FD-4184-BAE5-8FBABC507E9F} | |||||
ParentSubMenu_ru=Маршруты и GPS-Треки | ParentSubMenu_ru=Маршруты и GPS-Треки | ||||
ParentSubMenu_uk=Маршруты и GPS-Треки | ParentSubMenu_uk=Маршруты и GPS-Треки | ||||
ParentSubMenu=Ways and GPS-Tracks | ParentSubMenu=Ways and GPS-Tracks | ||||
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Велоспорт | |||||
name=Strava Heatmap - Ride | name=Strava Heatmap - Ride | ||||
NameInCache=Tracks_Strava_Ride | NameInCache=Tracks_Strava_Ride | ||||
asLayer=1 | asLayer=1 | ||||
projection=1 | |||||
sradiusa=6378137 | |||||
sradiusb=6378137 | |||||
EPSG=3785 | |||||
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Ride/{x}/{y}/{z} | DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Ride/{x}/{y}/{z} | ||||
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | ||||
ContentType=image/jpeg,image/png | ContentType=image/jpeg,image/png | ||||
@@ -1,216 +0,0 @@ | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS | |||||
// ----------------------------------------------------------------------------- | |||||
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet. | |||||
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal, | |||||
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû. | |||||
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z} | |||||
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê: | |||||
// | |||||
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png | |||||
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen | |||||
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû: | |||||
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing) | |||||
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte) | |||||
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ) | |||||
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè) | |||||
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet) | |||||
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà. | |||||
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî. | |||||
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå, | |||||
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà. | |||||
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû, | |||||
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê: | |||||
// | |||||
// writeLn('Hello Sas.Planet!'); | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ? | |||||
function isContains(findingText: string; inSourceText: string) : boolean; | |||||
begin | |||||
result := pos(findingText, inSourceText) <> 0; | |||||
end; | |||||
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé | |||||
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè) | |||||
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string; | |||||
var | |||||
intPart, floatPart : integer; | |||||
begin | |||||
intPart := floor(sourceNumber); | |||||
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) ) | |||||
result := intToStr(intPart) + '.' + intToStr(floatPart) | |||||
end; | |||||
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing) | |||||
function getQuadkeyText(x: integer; y: integer; z: integer) : string; | |||||
var | |||||
i, q : byte; | |||||
begin | |||||
result:=''; | |||||
for i:=1 to z do begin | |||||
q:=0; | |||||
if x mod 2 = 1 then q := q + 1; | |||||
if y mod 2 = 1 then q := q + 2; | |||||
x := x div 2; | |||||
y := y div 2; | |||||
result := intToStr(q) + result; | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà | |||||
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c} | |||||
// ----------------------------------------------------------------------------- | |||||
type | |||||
TSubst = record | |||||
mask, val : string; | |||||
end; | |||||
TSubsts = record | |||||
count : integer; | |||||
s : array [0..15] of TSubst; | |||||
end; | |||||
function replaceServerName(url: string) : string; | |||||
var | |||||
s, ss : string; | |||||
sarr : array [0..9] of string; | |||||
sarr_l, p : integer; | |||||
begin | |||||
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0); | |||||
if s <> '' then begin | |||||
ss := s; | |||||
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]); | |||||
ss := StringReplace(ss, '}', '', [rfIgnoreCase]); | |||||
ss := ss + ','; | |||||
sarr_l := 0; | |||||
while ss <> '' do begin | |||||
p := pos(',', ss); | |||||
if p = 0 then p := length(ss); | |||||
sarr[sarr_l] := copy(ss, 1, p-1); | |||||
sarr_l := sarr_l + 1; | |||||
delete(ss, 1, p); | |||||
end; | |||||
url := StringReplace(url, s, sarr[random(sarr_l)], []); | |||||
end; | |||||
Result := url; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà | |||||
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}. | |||||
// ----------------------------------------------------------------------------- | |||||
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string; | |||||
var | |||||
options: tReplaceFlags; | |||||
calculatedValue: string; | |||||
begin | |||||
options := [rfReplaceAll, rfIgnoreCase]; | |||||
result := urlTemplate; | |||||
if isContains('{x}', result) then begin | |||||
calculatedValue := intToStr(x); | |||||
result := stringReplace( result, '{x}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y}', result) then begin | |||||
calculatedValue := intToStr(y); | |||||
result := stringReplace( result, '{y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z}', result) then begin | |||||
calculatedValue := intToStr(z-1); | |||||
result := stringReplace( result, '{z}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z+1}', result) then begin | |||||
calculatedValue := intToStr(z); | |||||
result := stringReplace( result, '{z+1}', calculatedValue, options) | |||||
end; | |||||
if isContains('{x/1024}', result) then begin | |||||
calculatedValue := intToStr(x div 1024); | |||||
result := stringReplace( result, '{x/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y/1024}', result) then begin | |||||
calculatedValue := intToStr(y div 1024); | |||||
result := stringReplace( result, '{y/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{-y}', result) then begin | |||||
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y); | |||||
result := stringReplace( result, '{-y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{q}', result) then begin | |||||
calculatedValue := getQuadkeyText(x, y, z); | |||||
result := stringReplace( result, '{q}', calculatedValue, options) | |||||
end; | |||||
if isContains('{bbox}', result) then begin | |||||
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options) | |||||
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options) | |||||
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options) | |||||
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options) | |||||
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options) | |||||
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå | |||||
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà. | |||||
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü. | |||||
end; | |||||
if isContains('{timeStamp}', result) then begin | |||||
calculatedValue := IntToStr(GetUnixTime); | |||||
result := stringReplace( result, '{timeStamp}', calculatedValue, options) | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà. | |||||
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL. | |||||
// ----------------------------------------------------------------------------- | |||||
begin | |||||
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ); | |||||
resultURL := replaceServerName(resultURL); | |||||
end. |
@@ -1,4 +1,6 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | ||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | ||||
@@ -1,6 +1,6 @@ | |||||
| | ||||
[PARAMS] | [PARAMS] | ||||
GUID={BF69A930-3739-454A-A833-DED4C0841297} | |||||
GUID={89BA4332-E79A-40F0-9BC1-AF05BCFE52FC} | |||||
ParentSubMenu_ru=Маршруты и GPS-Треки | ParentSubMenu_ru=Маршруты и GPS-Треки | ||||
ParentSubMenu_uk=Маршруты и GPS-Треки | ParentSubMenu_uk=Маршруты и GPS-Треки | ||||
ParentSubMenu=Ways and GPS-Tracks | ParentSubMenu=Ways and GPS-Tracks | ||||
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Бег | |||||
name=Strava Heatmap - Run | name=Strava Heatmap - Run | ||||
NameInCache=Tracks_Strava_Run | NameInCache=Tracks_Strava_Run | ||||
asLayer=1 | asLayer=1 | ||||
projection=1 | |||||
sradiusa=6378137 | |||||
sradiusb=6378137 | |||||
EPSG=3785 | |||||
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Run/{x}/{y}/{z} | DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Run/{x}/{y}/{z} | ||||
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | ||||
ContentType=image/jpeg,image/png | ContentType=image/jpeg,image/png | ||||
@@ -1,216 +0,0 @@ | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS | |||||
// ----------------------------------------------------------------------------- | |||||
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet. | |||||
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal, | |||||
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû. | |||||
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z} | |||||
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê: | |||||
// | |||||
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png | |||||
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen | |||||
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû: | |||||
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing) | |||||
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte) | |||||
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ) | |||||
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè) | |||||
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet) | |||||
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà. | |||||
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî. | |||||
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå, | |||||
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà. | |||||
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû, | |||||
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê: | |||||
// | |||||
// writeLn('Hello Sas.Planet!'); | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ? | |||||
function isContains(findingText: string; inSourceText: string) : boolean; | |||||
begin | |||||
result := pos(findingText, inSourceText) <> 0; | |||||
end; | |||||
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé | |||||
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè) | |||||
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string; | |||||
var | |||||
intPart, floatPart : integer; | |||||
begin | |||||
intPart := floor(sourceNumber); | |||||
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) ) | |||||
result := intToStr(intPart) + '.' + intToStr(floatPart) | |||||
end; | |||||
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing) | |||||
function getQuadkeyText(x: integer; y: integer; z: integer) : string; | |||||
var | |||||
i, q : byte; | |||||
begin | |||||
result:=''; | |||||
for i:=1 to z do begin | |||||
q:=0; | |||||
if x mod 2 = 1 then q := q + 1; | |||||
if y mod 2 = 1 then q := q + 2; | |||||
x := x div 2; | |||||
y := y div 2; | |||||
result := intToStr(q) + result; | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà | |||||
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c} | |||||
// ----------------------------------------------------------------------------- | |||||
type | |||||
TSubst = record | |||||
mask, val : string; | |||||
end; | |||||
TSubsts = record | |||||
count : integer; | |||||
s : array [0..15] of TSubst; | |||||
end; | |||||
function replaceServerName(url: string) : string; | |||||
var | |||||
s, ss : string; | |||||
sarr : array [0..9] of string; | |||||
sarr_l, p : integer; | |||||
begin | |||||
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0); | |||||
if s <> '' then begin | |||||
ss := s; | |||||
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]); | |||||
ss := StringReplace(ss, '}', '', [rfIgnoreCase]); | |||||
ss := ss + ','; | |||||
sarr_l := 0; | |||||
while ss <> '' do begin | |||||
p := pos(',', ss); | |||||
if p = 0 then p := length(ss); | |||||
sarr[sarr_l] := copy(ss, 1, p-1); | |||||
sarr_l := sarr_l + 1; | |||||
delete(ss, 1, p); | |||||
end; | |||||
url := StringReplace(url, s, sarr[random(sarr_l)], []); | |||||
end; | |||||
Result := url; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà | |||||
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}. | |||||
// ----------------------------------------------------------------------------- | |||||
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string; | |||||
var | |||||
options: tReplaceFlags; | |||||
calculatedValue: string; | |||||
begin | |||||
options := [rfReplaceAll, rfIgnoreCase]; | |||||
result := urlTemplate; | |||||
if isContains('{x}', result) then begin | |||||
calculatedValue := intToStr(x); | |||||
result := stringReplace( result, '{x}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y}', result) then begin | |||||
calculatedValue := intToStr(y); | |||||
result := stringReplace( result, '{y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z}', result) then begin | |||||
calculatedValue := intToStr(z-1); | |||||
result := stringReplace( result, '{z}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z+1}', result) then begin | |||||
calculatedValue := intToStr(z); | |||||
result := stringReplace( result, '{z+1}', calculatedValue, options) | |||||
end; | |||||
if isContains('{x/1024}', result) then begin | |||||
calculatedValue := intToStr(x div 1024); | |||||
result := stringReplace( result, '{x/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y/1024}', result) then begin | |||||
calculatedValue := intToStr(y div 1024); | |||||
result := stringReplace( result, '{y/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{-y}', result) then begin | |||||
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y); | |||||
result := stringReplace( result, '{-y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{q}', result) then begin | |||||
calculatedValue := getQuadkeyText(x, y, z); | |||||
result := stringReplace( result, '{q}', calculatedValue, options) | |||||
end; | |||||
if isContains('{bbox}', result) then begin | |||||
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options) | |||||
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options) | |||||
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options) | |||||
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options) | |||||
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options) | |||||
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå | |||||
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà. | |||||
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü. | |||||
end; | |||||
if isContains('{timeStamp}', result) then begin | |||||
calculatedValue := IntToStr(GetUnixTime); | |||||
result := stringReplace( result, '{timeStamp}', calculatedValue, options) | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà. | |||||
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL. | |||||
// ----------------------------------------------------------------------------- | |||||
begin | |||||
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ); | |||||
resultURL := replaceServerName(resultURL); | |||||
end. |
@@ -1,4 +1,6 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | ||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | ||||
@@ -1,6 +1,6 @@ | |||||
| | ||||
[PARAMS] | [PARAMS] | ||||
GUID={B5C2127C-56AC-4630-94A1-34E17F5B183F} | |||||
GUID={C9F9F3BD-4BBD-4AFE-ABBF-171AA57F5D06} | |||||
ParentSubMenu_ru=Маршруты и GPS-Треки | ParentSubMenu_ru=Маршруты и GPS-Треки | ||||
ParentSubMenu_uk=Маршруты и GPS-Треки | ParentSubMenu_uk=Маршруты и GPS-Треки | ||||
ParentSubMenu=Ways and GPS-Tracks | ParentSubMenu=Ways and GPS-Tracks | ||||
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Велоспорт и Бег (beta) | |||||
name=Strava Heatmap - RunAndRide (beta) | name=Strava Heatmap - RunAndRide (beta) | ||||
NameInCache=Tracks_Strava_RunAndRide | NameInCache=Tracks_Strava_RunAndRide | ||||
asLayer=1 | asLayer=1 | ||||
projection=1 | |||||
sradiusa=6378137 | |||||
sradiusb=6378137 | |||||
EPSG=3785 | |||||
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_RunAndRide/{x}/{y}/{z} | DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_RunAndRide/{x}/{y}/{z} | ||||
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | ||||
ContentType=image/jpeg,image/png | ContentType=image/jpeg,image/png | ||||
@@ -1,216 +0,0 @@ | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS | |||||
// ----------------------------------------------------------------------------- | |||||
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet. | |||||
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal, | |||||
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû. | |||||
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z} | |||||
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê: | |||||
// | |||||
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png | |||||
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen | |||||
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû: | |||||
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing) | |||||
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte) | |||||
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ) | |||||
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè) | |||||
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet) | |||||
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà. | |||||
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî. | |||||
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå, | |||||
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà. | |||||
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû, | |||||
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê: | |||||
// | |||||
// writeLn('Hello Sas.Planet!'); | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ? | |||||
function isContains(findingText: string; inSourceText: string) : boolean; | |||||
begin | |||||
result := pos(findingText, inSourceText) <> 0; | |||||
end; | |||||
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé | |||||
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè) | |||||
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string; | |||||
var | |||||
intPart, floatPart : integer; | |||||
begin | |||||
intPart := floor(sourceNumber); | |||||
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) ) | |||||
result := intToStr(intPart) + '.' + intToStr(floatPart) | |||||
end; | |||||
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing) | |||||
function getQuadkeyText(x: integer; y: integer; z: integer) : string; | |||||
var | |||||
i, q : byte; | |||||
begin | |||||
result:=''; | |||||
for i:=1 to z do begin | |||||
q:=0; | |||||
if x mod 2 = 1 then q := q + 1; | |||||
if y mod 2 = 1 then q := q + 2; | |||||
x := x div 2; | |||||
y := y div 2; | |||||
result := intToStr(q) + result; | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà | |||||
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c} | |||||
// ----------------------------------------------------------------------------- | |||||
type | |||||
TSubst = record | |||||
mask, val : string; | |||||
end; | |||||
TSubsts = record | |||||
count : integer; | |||||
s : array [0..15] of TSubst; | |||||
end; | |||||
function replaceServerName(url: string) : string; | |||||
var | |||||
s, ss : string; | |||||
sarr : array [0..9] of string; | |||||
sarr_l, p : integer; | |||||
begin | |||||
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0); | |||||
if s <> '' then begin | |||||
ss := s; | |||||
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]); | |||||
ss := StringReplace(ss, '}', '', [rfIgnoreCase]); | |||||
ss := ss + ','; | |||||
sarr_l := 0; | |||||
while ss <> '' do begin | |||||
p := pos(',', ss); | |||||
if p = 0 then p := length(ss); | |||||
sarr[sarr_l] := copy(ss, 1, p-1); | |||||
sarr_l := sarr_l + 1; | |||||
delete(ss, 1, p); | |||||
end; | |||||
url := StringReplace(url, s, sarr[random(sarr_l)], []); | |||||
end; | |||||
Result := url; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà | |||||
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}. | |||||
// ----------------------------------------------------------------------------- | |||||
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string; | |||||
var | |||||
options: tReplaceFlags; | |||||
calculatedValue: string; | |||||
begin | |||||
options := [rfReplaceAll, rfIgnoreCase]; | |||||
result := urlTemplate; | |||||
if isContains('{x}', result) then begin | |||||
calculatedValue := intToStr(x); | |||||
result := stringReplace( result, '{x}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y}', result) then begin | |||||
calculatedValue := intToStr(y); | |||||
result := stringReplace( result, '{y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z}', result) then begin | |||||
calculatedValue := intToStr(z-1); | |||||
result := stringReplace( result, '{z}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z+1}', result) then begin | |||||
calculatedValue := intToStr(z); | |||||
result := stringReplace( result, '{z+1}', calculatedValue, options) | |||||
end; | |||||
if isContains('{x/1024}', result) then begin | |||||
calculatedValue := intToStr(x div 1024); | |||||
result := stringReplace( result, '{x/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y/1024}', result) then begin | |||||
calculatedValue := intToStr(y div 1024); | |||||
result := stringReplace( result, '{y/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{-y}', result) then begin | |||||
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y); | |||||
result := stringReplace( result, '{-y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{q}', result) then begin | |||||
calculatedValue := getQuadkeyText(x, y, z); | |||||
result := stringReplace( result, '{q}', calculatedValue, options) | |||||
end; | |||||
if isContains('{bbox}', result) then begin | |||||
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options) | |||||
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options) | |||||
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options) | |||||
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options) | |||||
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options) | |||||
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå | |||||
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà. | |||||
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü. | |||||
end; | |||||
if isContains('{timeStamp}', result) then begin | |||||
calculatedValue := IntToStr(GetUnixTime); | |||||
result := stringReplace( result, '{timeStamp}', calculatedValue, options) | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà. | |||||
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL. | |||||
// ----------------------------------------------------------------------------- | |||||
begin | |||||
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ); | |||||
resultURL := replaceServerName(resultURL); | |||||
end. |
@@ -1,4 +1,6 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | ||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | ||||
@@ -1,6 +1,6 @@ | |||||
| | ||||
[PARAMS] | [PARAMS] | ||||
GUID={542841FD-209E-4C96-9714-BC4F337371CA} | |||||
GUID={0D15104A-781C-4881-B705-72AA33E745C7} | |||||
ParentSubMenu_ru=Маршруты и GPS-Треки | ParentSubMenu_ru=Маршруты и GPS-Треки | ||||
ParentSubMenu_uk=Маршруты и GPS-Треки | ParentSubMenu_uk=Маршруты и GPS-Треки | ||||
ParentSubMenu=Ways and GPS-Tracks | ParentSubMenu=Ways and GPS-Tracks | ||||
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Водный спорт | |||||
name=Strava Heatmap - Water | name=Strava Heatmap - Water | ||||
NameInCache=Tracks_Strava_Water | NameInCache=Tracks_Strava_Water | ||||
asLayer=1 | asLayer=1 | ||||
projection=1 | |||||
sradiusa=6378137 | |||||
sradiusb=6378137 | |||||
EPSG=3785 | |||||
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Water/{x}/{y}/{z} | DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Water/{x}/{y}/{z} | ||||
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | ||||
ContentType=image/jpeg,image/png | ContentType=image/jpeg,image/png | ||||
@@ -1,216 +0,0 @@ | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS | |||||
// ----------------------------------------------------------------------------- | |||||
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet. | |||||
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal, | |||||
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû. | |||||
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z} | |||||
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê: | |||||
// | |||||
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png | |||||
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen | |||||
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû: | |||||
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps) | |||||
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing) | |||||
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte) | |||||
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ) | |||||
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè) | |||||
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet) | |||||
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet) | |||||
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà. | |||||
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî. | |||||
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå, | |||||
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà. | |||||
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû, | |||||
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê: | |||||
// | |||||
// writeLn('Hello Sas.Planet!'); | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè | |||||
// ----------------------------------------------------------------------------- | |||||
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ? | |||||
function isContains(findingText: string; inSourceText: string) : boolean; | |||||
begin | |||||
result := pos(findingText, inSourceText) <> 0; | |||||
end; | |||||
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé | |||||
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè) | |||||
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string; | |||||
var | |||||
intPart, floatPart : integer; | |||||
begin | |||||
intPart := floor(sourceNumber); | |||||
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) ) | |||||
result := intToStr(intPart) + '.' + intToStr(floatPart) | |||||
end; | |||||
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing) | |||||
function getQuadkeyText(x: integer; y: integer; z: integer) : string; | |||||
var | |||||
i, q : byte; | |||||
begin | |||||
result:=''; | |||||
for i:=1 to z do begin | |||||
q:=0; | |||||
if x mod 2 = 1 then q := q + 1; | |||||
if y mod 2 = 1 then q := q + 2; | |||||
x := x div 2; | |||||
y := y div 2; | |||||
result := intToStr(q) + result; | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà | |||||
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c} | |||||
// ----------------------------------------------------------------------------- | |||||
type | |||||
TSubst = record | |||||
mask, val : string; | |||||
end; | |||||
TSubsts = record | |||||
count : integer; | |||||
s : array [0..15] of TSubst; | |||||
end; | |||||
function replaceServerName(url: string) : string; | |||||
var | |||||
s, ss : string; | |||||
sarr : array [0..9] of string; | |||||
sarr_l, p : integer; | |||||
begin | |||||
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0); | |||||
if s <> '' then begin | |||||
ss := s; | |||||
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]); | |||||
ss := StringReplace(ss, '}', '', [rfIgnoreCase]); | |||||
ss := ss + ','; | |||||
sarr_l := 0; | |||||
while ss <> '' do begin | |||||
p := pos(',', ss); | |||||
if p = 0 then p := length(ss); | |||||
sarr[sarr_l] := copy(ss, 1, p-1); | |||||
sarr_l := sarr_l + 1; | |||||
delete(ss, 1, p); | |||||
end; | |||||
url := StringReplace(url, s, sarr[random(sarr_l)], []); | |||||
end; | |||||
Result := url; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà | |||||
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}. | |||||
// ----------------------------------------------------------------------------- | |||||
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string; | |||||
var | |||||
options: tReplaceFlags; | |||||
calculatedValue: string; | |||||
begin | |||||
options := [rfReplaceAll, rfIgnoreCase]; | |||||
result := urlTemplate; | |||||
if isContains('{x}', result) then begin | |||||
calculatedValue := intToStr(x); | |||||
result := stringReplace( result, '{x}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y}', result) then begin | |||||
calculatedValue := intToStr(y); | |||||
result := stringReplace( result, '{y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z}', result) then begin | |||||
calculatedValue := intToStr(z-1); | |||||
result := stringReplace( result, '{z}', calculatedValue, options) | |||||
end; | |||||
if isContains('{z+1}', result) then begin | |||||
calculatedValue := intToStr(z); | |||||
result := stringReplace( result, '{z+1}', calculatedValue, options) | |||||
end; | |||||
if isContains('{x/1024}', result) then begin | |||||
calculatedValue := intToStr(x div 1024); | |||||
result := stringReplace( result, '{x/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{y/1024}', result) then begin | |||||
calculatedValue := intToStr(y div 1024); | |||||
result := stringReplace( result, '{y/1024}', calculatedValue, options) | |||||
end; | |||||
if isContains('{-y}', result) then begin | |||||
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y); | |||||
result := stringReplace( result, '{-y}', calculatedValue, options) | |||||
end; | |||||
if isContains('{q}', result) then begin | |||||
calculatedValue := getQuadkeyText(x, y, z); | |||||
result := stringReplace( result, '{q}', calculatedValue, options) | |||||
end; | |||||
if isContains('{bbox}', result) then begin | |||||
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options) | |||||
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options) | |||||
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options) | |||||
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options) | |||||
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options) | |||||
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå | |||||
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà. | |||||
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü. | |||||
end; | |||||
if isContains('{timeStamp}', result) then begin | |||||
calculatedValue := IntToStr(GetUnixTime); | |||||
result := stringReplace( result, '{timeStamp}', calculatedValue, options) | |||||
end; | |||||
end; | |||||
// ----------------------------------------------------------------------------- | |||||
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà. | |||||
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL. | |||||
// ----------------------------------------------------------------------------- | |||||
begin | |||||
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ); | |||||
resultURL := replaceServerName(resultURL); | |||||
end. |
@@ -1,4 +1,6 @@ | |||||
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru | ||||
Он должен работать с SasPlanet версии 200127.10112 и новее | |||||
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | Если вы заметили ошибку, свяжитесь со мной и сообщите о ней: | ||||
@@ -1,6 +1,6 @@ | |||||
| | ||||
[PARAMS] | [PARAMS] | ||||
GUID={051E9432-9EBD-4CB0-B21E-E209209A28C7} | |||||
GUID={723A4141-C185-406A-9F74-3E12311B7E2A} | |||||
ParentSubMenu_ru=Маршруты и GPS-Треки | ParentSubMenu_ru=Маршруты и GPS-Треки | ||||
ParentSubMenu_uk=Маршруты и GPS-Треки | ParentSubMenu_uk=Маршруты и GPS-Треки | ||||
ParentSubMenu=Ways and GPS-Tracks | ParentSubMenu=Ways and GPS-Tracks | ||||
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Зимний спорт | |||||
name=Strava Heatmap - Winter | name=Strava Heatmap - Winter | ||||
NameInCache=Tracks_Strava_Winter | NameInCache=Tracks_Strava_Winter | ||||
asLayer=1 | asLayer=1 | ||||
projection=1 | |||||
sradiusa=6378137 | |||||
sradiusb=6378137 | |||||
EPSG=3785 | |||||
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Winter/{x}/{y}/{z} | DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Winter/{x}/{y}/{z} | ||||
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8 | ||||
ContentType=image/jpeg,image/png | ContentType=image/jpeg,image/png | ||||
@@ -1,6 +0,0 @@ | |||||
var | |||||
tile: string; | |||||
begin | |||||
GetURLBase[9]:=chr(ord('a')+random(2)); | |||||
ResultURL:=GetUrlBase+inttostr(GetZ-1)+'/'+inttostr(GetX)+'/'+inttostr(GetY)+'.png'; | |||||
end. |
@@ -1,15 +0,0 @@ | |||||
[PARAMS] | |||||
pnum=170 | |||||
GUID={01BDC3A9-D0C0-4B84-BFB5-94AAF9D100F7} | |||||
name=Mapbox satellite | |||||
NameInCache=Mapbox_sat | |||||
DefURLBase=https://a.tiles.mapbox.com/v3/tmcw.map-j5fsp01s/ | |||||
Ext=.jpg | |||||
defaultContentType=image/jpeg | |||||
ContentType="image/jpeg" | |||||
projection=1 | |||||
sradiusa=6378137 | |||||
sradiusb=6378137 | |||||
ParentSubMenu_ru=Äðóãèå êàðòû | |||||
ParentSubMenu=Other maps | |||||
ParentSubMenu_uk=²íø³ êàðòè |
@@ -1,7 +0,0 @@ | |||||
begin | |||||
ResultURL:= GetUrlBase + inttostr(GetX) + '/' + inttostr(GetY) + '/' + inttostr(GetZ - 1); | |||||
end. | |||||
@@ -1,7 +0,0 @@ | |||||
От составителя: | |||||
Данный слой предназначен для дополнения OSM - Mapnik. | |||||
Манера отрисовки рельефа подобрана максимально мягкая и ненавязчивая, | |||||
чтобы не затруднять чтение тропинок и мелких надписей. | |||||
В качестве источника использовался сайт Mapbox.com | |||||
@@ -1,20 +0,0 @@ | |||||
[PARAMS] | |||||
pnum=118 | |||||
GUID={AB8A8685-AEC6-4E16-80DA-DF4AC37E4777} | |||||
asLayer=1 | |||||
name_ru=Mapbox.com (mapnik layer) | |||||
name=Mapbox.com (mapnik layer) | |||||
name_uk=Mapbox.com (mapnik layer) | |||||
ParentSubMenu_ru=Рельеф и тополинии | |||||
ParentSubMenu=Hillshade | |||||
ParentSubMenu_uk=Рельєф і тополинии | |||||
NameInCache=OSM_mapbox_mapnik | |||||
DefURLBase=https://anygis.herokuapp.com/Osm_Mapnik_Mapbox_Hillshades/ | |||||
ContentType=image/png | |||||
Ext=.png | |||||
projection=1 | |||||
sradiusa=6378137 | |||||
sradiusb=6378137 | |||||
RequestHead=User-Agent: SAS.Planet | |||||
IteratorSubRectSize=8,8 | |||||
License=Map data © OpenStreetMap contributors, rendering GIScience Research Group @ University of Heidelberg |