SASGIS

Веб-картография и навигация

SAS.Wiki

Веб-картография и навигация

Инструменты пользователя

Инструменты сайта


простой_пример

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

простой_пример [28/04/2012 12:53]
46.229.141.189 см. напр. http://ru.wikipedia.org/wiki/Мальмё
простой_пример [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). То есть пурпурный цвет обозначает прозрачность иконки. К сожалению,​ сейчас поддерживаются иконки только в формате bmp, размер только 18х18 и 24х24.+Как написано в главе [[zmp|Описание формата пользовательских карт zmp]], цвет фона - (255, 0, 255). То есть пурпурный цвет обозначает прозрачность иконки. ​<del>К сожалению,​ сейчас поддерживаются иконки только в формате bmp, размер только 18х18 и 24х24.</​del>​ В последних версиях программы логотип уменьшать не обязательно,​ достаточно переименовать в 24.bmp (а 18.bmp удалить).