Забув зовсім за додавання карти до Сас.Планети.
Візьмемо для прикладу з стандартного OSM зробимо MapQuest карту.
- Зробимо копію папки оригінального мапнніку \SAS.Planet.Nightly.150804.8929\Maps\sas.maps\Osm\osm_mapnik.zmp\ і назвемо абияк, назва папки невпливає. \SAS.Planet.Nightly.150804.8929\Maps\sas.maps\Osm\mapquest.zmp\
- Тепер треба “відрізнити” файли мапніка і нової карти заходимо до файлу \SAS.Planet.Nightly.150804.8929\Maps\sas.maps\Osm\mapquest.zmp\params.txt і правимо:
2.1 GUID, його можна згенерити онлайн https://www.guidgenerator.com/
2.2 Змінюємо назви карт для різних мов name, name_en, name_uk - просто текст, пишем що хочем
2.3 Змінюємо назву папки кешу NameInCache=osm_MapQuest , якщо назву папки не змінити тайли карти донора(мапнік) будуть затиратись новою картою і навпаки, а якщо не затруться то буде калейдоскоп з тайлів різних стилів.
2.4 Базовий урл. Можна зайти на чудову колекцію http://edward17.github.io/LayersCollection/ вибрати стиль карти і браузері отримати урл конкретного тайлу, в фаєрфоксі то ПКМ - інформація про зображення, або в табличці інформації про сторінку на вкладці мультимедіа. Отримали урл типу: http://otile4.mqcdn.com/tiles/1.0.0/osm/10/598/345.png базовий урл буде DefURLBase=http://otile4.mqcdn.com/tiles/1.0.0/osm/
2.5 вказуємо який тип даних має повертати запит в нашому випадку залишається тим же ContentType=image/png і розширення файлів Ext=.png
2.6 якщо потрібно щоб карта була не в підкаталозі ОСМ змінюємо PARENTSUBMENU=OSM на те що потрібно.
Проекції і інше залишаємо таке як є, всі карти ОСМ які я бачив в стандартній Meractor проекції. Ну й кому потрібно підправити копірайти, правиться то в License=
Зберігаєм і закриваєм. В мене вийшло отаке:
[PARAMS]
pnum=116
GUID={e53f7cc8-b0cd-41af-80f1-6b447814ebc0}
asLayer=0
name=MapQuest
name_en=MapQuest
name_uk=МапКвест
NameInCache=osm_MapQuest
DefURLBase=http://otile4.mqcdn.com/tiles/1.0.0/osm/
ContentType=image/png
Ext=.png
projection=1
sradiusa=6378137
sradiusb=6356752
separator=0
UseDwn=1
Sleep=0
DefHotKey=16463
PARENTSUBMENU=OSM
IteratorSubRectSize=8,8
License=(c) OpenStreetMap contributors, CC-BY-SA
Далі відкриваємо файл яким буде генеруватись посилання під конкретний тайл
\SAS.Planet.Nightly.150804.8929\Maps\sas.maps\Osm\mapquest.zmp\GetUrlScript.txt
по стандарту він виглядає так:
begin
GetURLBase[8]:=chr(ord('a')+random(3));
ResultURL:=GetURLBase+'/'+inttostr(GetZ-1)+'/'+inttostr(GetX)+'/'+inttostr(GetY)+'.png';
RequestHead :=
'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0' + #13#10 +
'Referer: http://www.openstreetmap.org/' + #13#10 +
'Cache-Control: max-age=0' + #13#10 +
'DNT: 1' + #13#10 +
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3' + #13#10 +
'Accept-Encoding: gzip, deflate';
end.
але частину з підстановкою параметрів реквесту можна викинути. Вона потрібна лише щоб приховати автоматичну скачку купи тайлів і якщо є бан - обійти його.
Тут на паскалі здається описується як генерувати запит.(Сам я не програміст але там все ясно наче)
Дивимось на відоме посилання на тайл і на скрипт, наче й без доопрацюваннь все збігається
http://otile4.mqcdn.com/tiles/1.0.0/osm/10/598/345.png
ResultURL:=GetURLBase+‘/’+inttostr(GetZ-1)+‘/’+inttostr(GetX)+‘/’+inttostr(GetY)+‘.png’;
База/зум-1/Х/У.png таке й в нас
Викідаємо параметри “обману” і “GetURLBase[8]:=chr(ord(‘a’)+random(3));” - яка потрібна лише коли є декілька синхронізованих серверів з однаковими тайлами, щоб не робити навантаження на один. Конкертно ця строка змінює 8й символ базового урл по варіантам (a;b;c) так як в нас тут сервер один - все це викидаєм залишається тільки:
begin
ResultURL:=GetURLBase+'/'+inttostr(GetZ-1)+'/'+inttostr(GetX)+'/'+inttostr(GetY)+'.png';
end.
Все запускаємо.
Але перший блін виявився комом:
Так як ми прописали в параметрах що очікуємо формат png, а запит повернув jpeg - нічого не відобразилось. Так буває файл називається .png а насправді він .jpeg . Це навіть файєрфокс показував, але я не звернув на то уваги
Тому в файлі параметрів правимо тип даних на ContentType=image/jpeg залишаючи Ext=.png
Перезапускаємо Сас.Планету і маємо
Якщо щось пішло не так і результату немає, можна знайти на інших картах той тайл який взято за основу, перейти на новостворену мапу і по ПКМ→копіювати в буфер обміну→посилання на тайл основної карти і вже звірити згенерований урл з тим який мав би бути