Здесь показаны различия между двумя версиями данной страницы.
простой_пример [13/09/2012 07:36] 194.113.59.80 |
простой_пример [13/02/2021 22:15] (текущий) radioxoma Ограничение зума |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Создание zmp - простой пример ====== | ====== Создание zmp - простой пример ====== | ||
- | Эта пошаговая инструкция писалась [[http://sasgis.ru/forum/viewtopic.php?p=26156#p26156|на форуме]] параллельно с созданием zmp для спутникового снимка города Ма́льмё, http://malmo.se/karta. | + | Эта пошаговая инструкция писалась [[http://sasgis.org/forum/viewtopic.php?p=26156#p26156|на форуме]] параллельно с созданием zmp для спутникового снимка города Ма́льмё, http://malmo.se/karta. |
---- | ---- | ||
Строка 12: | Строка 12: | ||
Первым делом надо сделать так, чтобы по правой кнопке мыши на карте вызывалось контекстное меню Firefox. Для этого идём в настройки Firefox: Tools - Options - Content - кнопка Advanced справа от Enable JavaScript - там убрать все галочки. | Первым делом надо сделать так, чтобы по правой кнопке мыши на карте вызывалось контекстное меню Firefox. Для этого идём в настройки Firefox: Tools - Options - Content - кнопка Advanced справа от Enable JavaScript - там убрать все галочки. | ||
+ | **Update:** в новых версиях FireFox этих настроек в меню нет. Для того, чтобы запретить JavaScript подменять контекстное меню, надо в адресной строке набрать about:config, найти параметр dom.event.contextmenu.enabled и изменить его на false. | ||
Заходим на сайт нужной карты, для примера, http://malmo.se/karta | Заходим на сайт нужной карты, для примера, http://malmo.se/karta | ||
Строка 23: | Строка 24: | ||
Выглядят адреса так: | Выглядят адреса так: | ||
- | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/020/000/000/016.jpeg | + | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/020/000/000/016.jpeg |
- | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/019/000/000/016.jpeg | + | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/019/000/000/016.jpeg |
- | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/018/000/000/016.jpeg | + | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/018/000/000/016.jpeg |
- | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/018/000/000/017.jpeg | + | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/018/000/000/017.jpeg |
Здесь неизменная часть адреса - | Здесь неизменная часть адреса - | ||
- | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/ | + | |
+ | http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/ | ||
03 - очевидно, зум, 020 - видимо, Х, 016 - видимо, Y (а может, и наоборот), остальные 000 непонятно зачем, да и не важно. | 03 - очевидно, зум, 020 - видимо, Х, 016 - видимо, Y (а может, и наоборот), остальные 000 непонятно зачем, да и не важно. | ||
Строка 54: | Строка 57: | ||
В директории обязательно должны быть эти 4 файла: | В директории обязательно должны быть эти 4 файла: | ||
- | 18.bmp | + | * 18.bmp |
- | 24.bmp | + | * 24.bmp |
- | GetUrlScript.txt | + | * GetUrlScript.txt |
- | params.txt | + | * params.txt |
- | Подробнее о них написано в разделе [[описания_формата_пользовательских_карт_zmp|Описание формата пользовательских карт zmp]] | + | Подробнее о них написано в разделе [[zmp|Описание формата пользовательских карт zmp]] |
Редактируем **params.txt**. Самые главные параметры: | Редактируем **params.txt**. Самые главные параметры: | ||
Строка 67: | Строка 70: | ||
Рекомендуется его генерировать на сайте [[http://www.guidgenerator.com/online-guid-generator.aspx|Online GUID Generator]] или с помощью специальной программы {{:getguid.zip|}}. Можно исправить и вручную (в этом примере я просто исправил одну цифру). | Рекомендуется его генерировать на сайте [[http://www.guidgenerator.com/online-guid-generator.aspx|Online GUID Generator]] или с помощью специальной программы {{:getguid.zip|}}. Можно исправить и вручную (в этом примере я просто исправил одну цифру). | ||
- | GUID={63866E5D-09F2-4732-9D21-6350124302CB} | + | GUID={63866E5D-09F2-4732-9D21-6350124302CB} |
Имя карты и подменю на 3-х языках: | Имя карты и подменю на 3-х языках: | ||
- | name=Спутник Мальмё (malmo.se) | + | name=Спутник Мальмё (malmo.se) |
- | name_en=Malmö Sat (malmo.se) | + | name_en=Malmö Sat (malmo.se) |
- | name_uk=Супутник Мальме (malmo.se) | + | name_uk=Супутник Мальме (malmo.se) |
- | ParentSubMenu=Локальные карты | + | ParentSubMenu=Локальные карты |
- | ParentSubMenu_en=Local maps | + | ParentSubMenu_en=Local maps |
- | ParentSubMenu_uk=Локальні карти | + | ParentSubMenu_uk=Локальні карти |
Директория, в которой хранится кэш. Тоже должна быть уникальной: | Директория, в которой хранится кэш. Тоже должна быть уникальной: | ||
- | NameInCache=malmo.se.sat | + | NameInCache=malmo.se.sat |
Неизменная часть URL: | Неизменная часть URL: | ||
- | DefURLBase=http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/ | + | DefURLBase=http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/ |
Тип файлов: | Тип файлов: | ||
- | ContentType=image/jpeg | + | ContentType=image/jpeg |
- | Ext=.jpg | + | Ext=.jpg |
Строка 108: | Строка 110: | ||
Самый простой скрипт получается таким: | Самый простой скрипт получается таким: | ||
- | begin | + | <code delphi> |
- | ResultURL:=GetURLBase+IntToStr(GetZ-3)+'/000/000/'+IntToStr(GetX)+'/000/000/'+IntToStr(GetY)+'.jpeg'; | + | begin |
- | end. | + | ResultURL:=GetURLBase+IntToStr(GetZ-3)+'/000/000/'+IntToStr(GetX)+'/000/000/'+IntToStr(GetY)+'.jpeg'; |
+ | end. | ||
+ | </code> | ||
Вроде похоже, только X и Y на этой карте в виде 3-значных чисел, надо проверить, будет ли работать с 1- или 2-значными. | Вроде похоже, только X и Y на этой карте в виде 3-значных чисел, надо проверить, будет ли работать с 1- или 2-значными. | ||
Строка 122: | Строка 125: | ||
Конечно, можно добавить для начала нули вручную и посмотреть, что получится: | Конечно, можно добавить для начала нули вручную и посмотреть, что получится: | ||
- | begin | + | <code delphi> |
- | ResultURL:=GetURLBase+'0'+IntToStr(GetZ-3)+'/000/000/00'+IntToStr(GetX)+'/000/000/00'+IntToStr(GetY)+'.jpeg'; | + | begin |
- | end; | + | ResultURL:=GetURLBase+'0'+IntToStr(GetZ-3)+'/000/000/00'+IntToStr(GetX)+'/000/000/00'+IntToStr(GetY)+'.jpeg'; |
- | + | end; | |
+ | </code> | ||
(понятно, что работать будет только для X,Y,Z ≤ 9). | (понятно, что работать будет только для X,Y,Z ≤ 9). | ||
Строка 144: | Строка 149: | ||
**4.** Для того, чтобы перевернуть карту, надо написать так: | **4.** Для того, чтобы перевернуть карту, надо написать так: | ||
- | Код: Выделить всё | + | Y := round(intpower(2,GetZ-1)) - 1 - GetY |
- | Y := round(intpower(2,GetZ-1)) - 1 - GetY | + | |
- | + | ''2^(Z-1)'' - это число тайлов по каждой координате для зума Z. Использовать round приходится, чтобы получить тип integer (в Паскале с этим строго). | |
- | + | ||
- | 2^(Z-1) - это число тайлов по каждой координате для зума Z. Использовать round приходится, чтобы получить тип integer (в Паскале с этим строго). | + | |
---- | ---- | ||
Строка 155: | Строка 157: | ||
**5.** В результате получился вот такой скрипт: | **5.** В результате получился вот такой скрипт: | ||
- | var | + | <code delphi> |
- | Y: integer; | + | var |
- | SX, SY: string; | + | Y: integer; |
- | + | SX, SY: string; | |
- | begin | + | |
- | Y := round(intpower(2,GetZ-1)) - 1 - GetY; | + | |
- | + | ||
- | case Y of | + | |
- | 0..9: SY := '00'+IntToStr(Y); | + | |
- | 10..99: SY := '0'+IntToStr(Y); | + | |
- | 100..999: SY := IntToStr(Y); | + | |
- | end; | + | |
- | + | ||
- | case GetX of | + | |
- | 0..9: SX := '00'+IntToStr(GetX); | + | |
- | 10..99: SX := '0'+IntToStr(GetX); | + | |
- | 100..999: SX := IntToStr(GetX); | + | |
- | end; | + | |
- | + | ||
- | if ((GetZ <= 10) and (GetZ >= 4)) then | + | |
- | ResultURL:=GetURLBase+'0'+IntToStr(GetZ-4)+'/000/000/'+SX+'/000/000/'+SY+'.jpeg'; | + | |
- | end. | + | |
+ | begin | ||
+ | Y := round(intpower(2,GetZ-1)) - 1 - GetY; | ||
+ | |||
+ | case Y of | ||
+ | 0..9: SY := '00'+IntToStr(Y); | ||
+ | 10..99: SY := '0'+IntToStr(Y); | ||
+ | 100..999: SY := IntToStr(Y); | ||
+ | end; | ||
+ | case GetX of | ||
+ | 0..9: SX := '00'+IntToStr(GetX); | ||
+ | 10..99: SX := '0'+IntToStr(GetX); | ||
+ | 100..999: SX := IntToStr(GetX); | ||
+ | end; | ||
+ | |||
+ | if ((GetZ <= 10) and (GetZ >= 4)) then | ||
+ | ResultURL:=GetURLBase+'0'+IntToStr(GetZ-4)+'/000/000/'+SX+'/000/000/'+SY+'.jpeg'; | ||
+ | end. | ||
+ | </code> | ||
Кроме добавления нулей, пришлось сделать GetZ-4 вместо GetZ-3, т.к. правая часть карты на некоторых зумах не помещалась. | Кроме добавления нулей, пришлось сделать GetZ-4 вместо GetZ-3, т.к. правая часть карты на некоторых зумах не помещалась. | ||
Так что теперь работает на зумах от 4 до 10, карта находится в левом нижнем углу. | Так что теперь работает на зумах от 4 до 10, карта находится в левом нижнем углу. | ||
- | Т.к. это попытка сделать образцово-показательный код, добавил туда | + | Т.к. это попытка сделать образцово-показательный код, добавил туда [[как скачивать нужные масштабы и не скачивать ненужные|ограничение зума]]: |
- | if ((GetZ <= 10) and (GetZ >= 4)) | + | <code delphi> |
+ | if ((GetZ <= 10) and (GetZ >= 4)) | ||
+ | </code> | ||
Обычно этого никто не делает (лень), а зря. Теперь при неправильном зуме SAS.Планета не будет слать на сервер дурацких запросов, не будет выводить на экран ошибки и сохранять в кэше ненужные tne. | Обычно этого никто не делает (лень), а зря. Теперь при неправильном зуме SAS.Планета не будет слать на сервер дурацких запросов, не будет выводить на экран ошибки и сохранять в кэше ненужные tne. | ||
Строка 196: | Строка 200: | ||
Например, так: | Например, так: | ||
- | + | <code html> | |
- | <a href="http://malmo.se/karta">http://malmo.se/karta</a> | + | <a href="http://malmo.se/karta">http://malmo.se/karta</a> |
- | <br> | + | <br> |
- | Спутниковый снимок города Мальмё. | + | Спутниковый снимок города Мальмё. |
- | <br> | + | <br> |
- | Работает на зумах от 4 до 10, карта находится в левом нижнем углу. | + | Работает на зумах от 4 до 10, карта находится в левом нижнем углу. |
- | + | </code> | |
Можно изменить иконки **18.bmp** и **24.bmp**, их видно в меню и в тулбаре, соответственно. | Можно изменить иконки **18.bmp** и **24.bmp**, их видно в меню и в тулбаре, соответственно. | ||
Строка 210: | Строка 213: | ||
{{:malmo-stad-logo.png|}} | {{:malmo-stad-logo.png|}} | ||
- | Как написано в главе [[описания_формата_пользовательских_карт_zmp|Описание формата пользовательских карт zmp]], цвет фона - (255, 0, 255). То есть пурпурный цвет обозначает прозрачность иконки. <del>К сожалению, сейчас поддерживаются иконки только в формате bmp, размер только 18х18 и 24х24.</del> В последних версиях программы логотип уменьшать не обязательно, достаточно переименовать в 24.bmp (а 18.bmp удалить). | + | Как написано в главе [[zmp|Описание формата пользовательских карт zmp]], цвет фона - (255, 0, 255). То есть пурпурный цвет обозначает прозрачность иконки. <del>К сожалению, сейчас поддерживаются иконки только в формате bmp, размер только 18х18 и 24х24.</del> В последних версиях программы логотип уменьшать не обязательно, достаточно переименовать в 24.bmp (а 18.bmp удалить). |