Изменения
Обновление
{{TOC Right}}В русской энциклопедии «Традиция» существует возможность размещения в статьях '''интерактивных географических карт'''.
{{Руководства}}
В проекте существует возможность размещения в статьях '''интерактивных географических карт'''.
Картографическая информация поступает из баз данных [[OpenStreetMap]], [[Osmosnimki]] и др. и отображается на страницах «Традиции» при помощи движка [[WikiLeaflet]], в свою очередь использующего библиотеку ''[[Leaflet]]''.
Картографическая информация поступает из баз данных [[OpenStreetMap]], [[Osmosnimki]] и др. и отображается на страницах проекта при помощи движка [[WikiLeaflet]], в свою очередь использующего библиотеку ''[[Leaflet]]''.
Авторы статей вики, однако же, полностью ограждены от этих технических подробностей: для них публикация карт сводится к употреблению {{nobr|1=шаблона {{tl|wl}},}} а также, возможно, его модифицированной версии — {{tl|карта в рамке}}.
Авторы статей вики, однако же, полностью ограждены от этих технических подробностей: для них публикация карт сводится к употреблению {{nobr|1=шаблона {{tl|wl}},}} а также, возможно, его модифицированной версии — {{tl|карта в рамке}}.
Вы находитесь на справочной странице «[[Справка:Карты]]», где оформление карт объясняется подробно и на примерах. (Существенно более краткую справку по параметрам шаблонов {{tl|wl}} и {{tl|карта в рамке}} вы можете найти на страницах самих шаблонов.)
== Первоначальное создание карты ==
== Первоначальное создание карты ==
Чтобы поместить карту на какой-либо странице в Традиции, достаточно вызвать {{nobr|1=шаблон {{tl|wl}}}} без параметров:
Чтобы поместить карту на какой-либо странице, достаточно вызвать {{nobr|1=шаблон {{tl|wl}}}} без параметров:
<nowiki>{{wl}}</nowiki>
<nowiki>{{wl}}</nowiki>
=== Свойства по умолчанию ===
=== Свойства по умолчанию ===
Когда шаблон не имеет параметров, тогда многие свойства такой карты определяются значениями по умолчанию:
Когда шаблон не имеет параметров, тогда многие свойства такой карты определяются значениями по умолчанию:
* Высота карты составляет 500 пикселов.
* Высота карты составляет 500 пикселов.
* В центре карты находится [[Геленджик]] (город, в котором родился [[Mithgol the Webmaster|Mithgol the Webmaster]], создатель [[WikiLeaflet]]).
* В центре карты находится [[Геленджик]] (город, в котором родился [[Mithgol the Webmaster|Mithgol the Webmaster]], создатель [[WikiLeaflet]]).
* Уровень увеличения равен тринадцати. (Понятие «уровень увеличения» имеет отношение к масштабу карты: на нулевом уровне увеличения карта всей планеты помещается внутрь квадрата размером 256×256 пикселов, а каждый последующий уровень сопровождается двукратным ростом масштаба, то есть удвоением размера карты.)
* Уровень увеличения равен тринадцати. (Понятие «уровень увеличения» имеет отношение к масштабу карты: на нулевом уровне увеличения карта всей планеты помещается внутрь квадрата размером 256×256 пикселов, а каждый последующий уровень сопровождается двукратным ростом масштаба, то есть удвоением размера карты.)
* Используется та же раскраска карты, что и на сайте OpenStreetMap.
* Используется та же раскраска карты, что и на сайте OpenStreetMap.
По ширине карта занимает всё доступное ей пространство страницы, но не более того (то есть не накладывается на предшествующие ей иллюстрации или оглавление, когда те прижаты к правому или левому краю страницы).
По ширине карта занимает всё доступное ей пространство страницы, но не более того (то есть не накладывается на предшествующие ей иллюстрации или оглавление, когда те прижаты к правому или левому краю страницы).
=== Интерактивность карт ===
=== Интерактивность карт ===
Все созданные шаблоном {{tl|wl}} географические карты обладают интерактивностью, то есть читатель (или автор) энциклопедии может управлять ими:
Все созданные шаблоном {{tl|wl}} географические карты обладают интерактивностью, то есть читатель (или автор) энциклопедии может управлять ими:
* Ухватив карту мышью (то есть подведя к карте курсор мыши и нажав левую клавишу, а затем не отпуская её), можно таскать карту в произвольном направлении (север, юг, восток, запад…), открывая новые части карты, соседствующие с изображённою. Пользователи мобильных устройств (у которых нет мыши, но есть сенсорный экран) могут таскать карту пальцем.
* Ухватив карту мышью (то есть подведя к карте курсор мыши и нажав левую клавишу, а затем не отпуская её), можно таскать карту в произвольном направлении (север, юг, восток, запад…), открывая новые части карты, соседствующие с изображённою. Пользователи мобильных устройств (у которых нет мыши, но есть сенсорный экран) могут таскать карту пальцем.
* В левом верхнем углу карты нарисованы кнопки «плюс» {{nobr|и «минус»,}} позволяющие увеличивать или уменьшать уровень увеличения.
* В левом верхнем углу карты нарисованы кнопки «плюс» {{nobr|и «минус»,}} позволяющие увеличивать или уменьшать уровень увеличения.
* Дважды ткнув какую-либо точку карты (мышью или пальцем), можно увеличить уровень увеличения и одновременно поместить эту точку в центр карты — этим приёмом пользуются при необходимости рассмотреть именно это место поподробнее.
* Дважды ткнув какую-либо точку карты (мышью или пальцем), можно увеличить уровень увеличения и одновременно поместить эту точку в центр карты — этим приёмом пользуются при необходимости рассмотреть именно это место поподробнее.
== Управление параметрами карты (на примере высоты) ==
== Управление параметрами карты (на примере высоты) ==
Чтобы изменить установленные по умолчанию параметры карты, внутри основного (внешнего) {{nobr|1=шаблона {{tl|wl}}}} помещают дополнительные (внутренние) {{nobr|1=шаблоны {{tl|wl}},}} и желаемые параметры карты указывают в качестве параметров этих внутренних шаблонов.
Чтобы изменить установленные по умолчанию параметры карты, внутри основного (внешнего) {{nobr|1=шаблона {{tl|wl}}}} помещают дополнительные (внутренние) {{nobr|1=шаблоны {{tl|wl}},}} и желаемые параметры карты указывают в качестве параметров этих внутренних шаблонов.
Так, например, чтобы изменить высоту карты, используется внутренний {{nobr|1=шаблон {{tl|wl}},}} первым параметром которого является слово «высота», а вторым — значение высоты (число пикселей).
Так, например, чтобы изменить высоту карты, используется внутренний {{nobr|1=шаблон {{tl|wl}},}} первым параметром которого является слово «высота», а вторым — значение высоты (число пикселей).
Вот пример кода, уменьшающего высоту карты до 250 пикселов:
<nowiki>{{wl|1=</nowiki>
<nowiki>{{wl|1=</nowiki>
<nowiki>}}</nowiki>
<nowiki>}}</nowiki>
Результат применения этого кода будет таков:
Результат применения этого кода будет таков:
{{wl|1=
{{wl|1=
}}
}}
Как видите, эта карта по высоте вдвое меньше, чем предыдущая.
Внутренний шаблон {{tl|wl}} является частью первого параметра внешнего {{nobr|1=шаблона {{tl|wl}},}} причём номер параметра («1=») указан в явном виде, чтобы дать подсказку механизму шаблонов. (Подробности об этом — в подразделе [[Справка:Механизм шаблонов#Неопределённые и пустые параметры|«Неопределённые и пустые параметры»]] справочной страницы «[[Справка:Механизм шаблонов|Механизм шаблонов]]».)
Внутренний шаблон {{tl|wl}} является частью первого параметра внешнего {{nobr|1=шаблона {{tl|wl}},}} причём номер параметра («1=») указан в явном виде, чтобы дать подсказку механизму шаблонов. (Подробности об этом — в подразделе [[Справка:Механизм шаблонов#Неопределённые и пустые параметры|«Неопределённые и пустые параметры»]] справочной страницы «[[Справка:Механизм шаблонов|Механизм шаблонов]]».)
== Указание центра карты и уровня увеличения ==
== Указание центра карты, уровня увеличения и границ ==
Чтобы указать центр карты (то есть основной отображаемый объект) и задать желаемый уровень увеличения, используется внутренний {{nobr|1=шаблон {{tl|wl}},}} первым параметром которого является слово «центр», а затем следуют значения координат (географической широты и долготы) центра карты и желаемое значение увеличения.
Чтобы указать центр карты (то есть основной отображаемый объект) и задать желаемый уровень увеличения, используется внутренний {{nobr|1=шаблон {{tl|wl}},}} первым параметром которого является слово «центр», а затем следуют значения координат (географической широты и долготы) центра карты и желаемое значение увеличения.
Вот пример кода, показывающего карту [[Московская область|Московской области]]:
<nowiki>{{wl|1=</nowiki>
<nowiki>{{wl|1=</nowiki>
<nowiki>}}</nowiki>
<nowiki>}}</nowiki>
Результат применения этого кода будет таков:
Результат применения этого кода будет таков:
{{wl|1=
{{wl|1=
}}
}}
В этом примере мы также изменяем и высоту карты (для закрепления сведений, изложенных в предыдущем абзаце).
Географические координаты указываются как числа градусов широты и долготы в форме десятичной дроби (дробная часть отделяется точкою). Положительные числа соответствуют северной широте и восточной долготе, а отрицательные означают южную широту и западную долготу. Указание минут и секунд широты и долготы (то есть шестидесятеричных долей вместо десятичной дроби) не применяется.
Географические координаты указываются как числа градусов широты и долготы в форме десятичной дроби (дробная часть отделяется точкою). Положительные числа соответствуют северной широте и восточной долготе, а отрицательные означают южную широту и западную долготу. Указание минут и секунд широты и долготы (то есть шестидесятеричных долей вместо десятичной дроби) не применяется.
Если не указать центр, он будет подобран автоматически как центр минимального «прямоугольника», включающего все выводимые объекты. Если не указать увеличение, оно будет подобрано так, чтобы уместились все объекты и центр (когда он задан явно).
С помощью вызова <code><nowiki>{{wl|границы|юг|запад|север|восток}}</nowiki></code> можно задать область карты, вывести фокус за границы которой перетаскиваним пользователю не будет позволено. Если указать только <code><nowiki>{{wl|границы}}</nowiki></code>, они будут установлены так, чтобы вместить все объекты карты и указанный явно её центр, плюс по десять пикселов с каждой стороны.
== Режим считывания координат ==
== Режим считывания координат ==
Понятно, что довольно хлопотно было бы сперва пытаться угадать координаты и увеличение, а затем долго «на глазок» заниматься их подгонкою, раз за разом внося коррективы в параметры шаблона {{nobr|1=<code><nowiki>{{wl|центр|...}}</nowiki></code>}} и нажимая кнопку «Предварительный просмотр», чтобы разглядеть, хорошо ли выглядит карта, помеченная этим шаблоном.
Понятно, что довольно хлопотно было бы сперва пытаться угадать координаты и увеличение, а затем долго «на глазок» заниматься их подгонкою, раз за разом внося коррективы в параметры шаблона {{nobr|1=<code><nowiki>{{wl|центр|...}}</nowiki></code>}} и нажимая кнопку «Предварительный просмотр», чтобы разглядеть, хорошо ли выглядит карта, помеченная этим шаблоном.
Движок ''WikiLeaflet'' позволяет существенно ускорить дело: после нажатия кнопки «Предварительный просмотр» карта, показываемая редактору вики, обретает дополнительные возможности и функции, позволяющие непосредственно считывать с неё координаты: сама карта станет подсказывать вид шаблонов, необходимых для указания её координат и увеличения.
Движок ''WikiLeaflet'' позволяет существенно ускорить дело: после нажатия кнопки «Предварительный просмотр» карта, показываемая редактору вики, обретает дополнительные возможности и функции, позволяющие непосредственно считывать с неё координаты: сама карта станет подсказывать вид шаблонов, необходимых для указания её координат и увеличения.
На служебных и справочных страницах иногда бывает необходимо, чтобы карта осталась в этом режиме и после сохранения шаблона, а не только при предварительном просмотре. Для этой цели используется внутренний {{nobr|1=шаблон {{tl|wl}},}} первым параметром которого является слово «редактор» {{nobr|или «edit».}}
Вот пример кода, переводящего карту [[Московская область|Московской области]] (взятую из предыдущего абзаца) в режим считывания координат:
<nowiki>{{wl|1=</nowiki>
<nowiki>{{wl|1=</nowiki>
<nowiki>}}</nowiki>
<nowiki>}}</nowiki>
Результат применения этого кода будет таков:
Результат применения этого кода будет таков:
{{wl|1=
{{wl|1=
}}
}}
Как вы можете убедиться на опыте, в этом режиме карта получает следующие возможности:
Как вы можете убедиться на опыте, в этом режиме карта получает следующие возможности:
* Если таскать карту или изменять уровень её увеличения, то под картою появляется код шаблона {{nobr|1=<code><nowiki>{{wl|центр|...}}</nowiki></code>,}} все параметры в котором ужé заполнены и соответствуют наблюдаемым параметрам карты. Поэтому остаётся только выделить этот код (в Файерфоксе, например, это делается тройным тычком мыши) и скопировать его в код шаблона карты, чтобы придать карте именно тот центр и именно тот уровень увеличения, которые только что были наглядно достигнуты тасканием карты, увеличением и уменьшением масштаба её.
* Если таскать карту или изменять уровень её увеличения, то под картою появляются коды шаблонов <code><nowiki>{{wl|центр|...}}</nowiki></code> и <code><nowiki>{{wl|границы|...}}</nowiki></code> все параметры в которых уже заполнены и соответствуют наблюдаемым параметрам карты. Поэтому остаётся только выделить этот код (в Файерфоксе, например, это делается тройным тычком мыши) и скопировать его в код шаблона карты, чтобы придать карте именно те центр, уровень увеличения и границы, которые только что были наглядно достигнуты тасканием карты, увеличением и уменьшением масштаба её.
* Если ткнуть точку на карте, то на карте появляется код шаблона {{nobr|1=<code><nowiki>{{wl|точка|...}}</nowiki></code>,}} заполненного координатами этой точки. (В форме {{nobr|1=<code><nowiki>{{wl|точка|...}}</nowiki></code>}} шаблон служит для создания пометок на карте — мы поговорим об этом далее.)
* Если ткнуть точку на карте, то на карте появляется код шаблона {{nobr|1=<code><nowiki>{{wl|точка|...}}</nowiki></code>,}} заполненного координатами этой точки. (В форме {{nobr|1=<code><nowiki>{{wl|точка|...}}</nowiki></code>}} шаблон служит для создания пометок на карте — мы поговорим об этом далее.)
Нетрудно видеть, что этот инструмент совершенно избавляет от необходимости догадываться о масштабе и о координатах начальной позиции карты: достаточно установить карту в желаемое положение и увеличение, а затем скопировать в код страницы шаблон, описывающий её параметры.
Нетрудно видеть, что этот инструмент совершенно избавляет от необходимости догадываться о масштабе и о координатах начальной позиции карты: достаточно установить карту в желаемое положение и увеличение, а затем скопировать в код страницы шаблон, описывающий её параметры.
Служебный шаблон {{nobr|1=<code><nowiki>{{wl|редактор}}</nowiki></code>}} не следует использовать в статьях энциклопедии, потому что итог его действия, то есть вывод кода внутренних {{nobr|1=шаблонов {{tl|wl}},}} отнюдь не будет понятен читателю энциклопедии и обременит его. И без этого внутреннего шаблона при редактировании энциклопедии достаточно нажать кнопку «Предварительный просмотр», чтобы отображаемые в предпросмотре карты перешли в режим считывания координат.
Служебный шаблон {{nobr|1=<code><nowiki>{{wl|редактор}}</nowiki></code>}} не следует использовать в статьях энциклопедии, потому что итог его действия, то есть вывод кода внутренних {{nobr|1=шаблонов {{tl|wl}},}} отнюдь не будет понятен читателю энциклопедии и обременит его. И без этого внутреннего шаблона при редактировании энциклопедии достаточно нажать кнопку «Предварительный просмотр», чтобы отображаемые в предпросмотре карты перешли в режим считывания координат.
== Обрамление карты рамкою, управление шириною ==
== Обрамление карты рамкою, управление шириною ==
Иногда возникает необходимость поместить карту в рамку и снабдить эту рамку подписью — наподобие того, как выглядят [[Справка:Изображения|изображения]], снабжённые параметром «frame» {{nobr|или «thumb».}}
Иногда возникает необходимость поместить карту в рамку и снабдить эту рамку подписью — наподобие того, как выглядят [[Справка:Изображения|изображения]], снабжённые параметром «frame» {{nobr|или «thumb».}}
Для этой цели основной (внешний) {{nobr|1=шаблон {{tl|wl}}}} следует заменить шаблоном {{tl|карта в рамке}} или его синонимом {{tl|mapframe}}; первым параметром этого шаблона является подпись для рамки, а совокупность дополнительных (внутренних) {{nobr|1=шаблонов {{tl|wl}}}} становится вторым его параметром.
Так, например, код карты Московской области принимает следующий вид:
Так, например, код карты Московской области принимает следующий вид:
<nowiki>{{карта в рамке</nowiki>
<nowiki>{{карта в рамке</nowiki>
<nowiki>}}</nowiki>
<nowiki>}}</nowiki>
Результат применения этого кода будет таков:
Результат применения этого кода будет таков:
{{карта в рамке
{{карта в рамке
}}
}}
У шаблона {{tl|карта в рамке}} есть параметр '''ширина''' (и его синоним '''width'''), позволяющий ограничить ширину карты (значением параметра является число пикселов ширины). В этом случае положение карты подобно положению иллюстрации {{nobr|с параметром «thumb»:}} карта прижимается к правому краю страницы, а последующий текст статьи обтекает карту слева.
У шаблона {{tl|карта в рамке}} есть параметр '''ширина''' (и его синоним '''width'''), позволяющий ограничить ширину карты (значением параметра является число пикселов ширины). В этом случае положение карты подобно положению иллюстрации {{nobr|с параметром «thumb»:}} карта прижимается к правому краю страницы, а последующий текст статьи обтекает карту слева.
{{карта в рамке
{{карта в рамке
|ширина=300
|ширина=300
}}
}}
Вот пример — код карты Московской области с ограниченной шириной (и с пониженным уровнем увеличения, чтобы область поместилась на карте):
<nowiki>{{карта в рамке</nowiki>
<nowiki>{{карта в рамке</nowiki>
Итог выполнения этого примера {{nobr|см. справа.}}
Итог выполнения этого примера {{nobr|см. справа.}}
Карту можно расположить не справа, а слева от текста, если параметру '''float''' придать значение '''left'''.
Карту можно расположить не справа, а слева от текста, если параметру '''float''' придать значение '''left'''.
Чтобы разместить карту по центру страницы, достаточно присвоить любое непустое значение параметру '''центр''' (значение параметра '''float''' при этом игнорируется).
Чтобы разместить карту по центру страницы, достаточно присвоить любое непустое значение параметру '''центр''' (значение параметра '''float''' при этом игнорируется).
Пример:
Пример:
}}
}}
Центрированием особенно уместно пользоваться в тех случаях, когда {{nobr|по каким-либо}} причинам текст, оттеснённый картою к правому или к левому краю страницы, выглядел бы некорректно (или вообще не помещался бы). Текст, расположенный после центрированной карты, помещается ниже её.
Центрированием особенно уместно пользоваться в тех случаях, когда {{nobr|по каким-либо}} причинам текст, оттеснённый картою к правому или к левому краю страницы, выглядел бы некорректно (или вообще не помещался бы). Текст, расположенный после центрированной карты, помещается ниже её.
=== Галереи карт ===
=== Галереи карт ===
Применение шаблона {{tl|строчный блок}} вокруг рамок с ограниченной шириною позволяет создавать своего рода галереи географических карт.
Применение шаблона {{tl|строчный блок}} вокруг рамок с ограниченной шириною позволяет создавать своего рода галереи географических карт.
Пример:
Пример:
{{main|Справка:Выбор тайлов}}
{{main|Справка:Выбор тайлов}}
Используемые по умолчанию тайлы задаются шаблоном <code><nowiki>{{wl|тайлы|имяСервераТайлов}}</nowiki></code>. Допустимые значения второго параметра: <code>osm</code>, <code>cycle</code>, <code>mapquest</code>, <code>openaerial</code>, <code>hydda</code>, <code>openmapsurfer</code>, <code>esriwp</code>, <code>thundertr</code>. В ходе работы пользователь может выбирать тайлы с помощью переключателя в правом верхнем углу.
== Динамические карты ==
=== Формирующиеся на стороне сервера ===
Возможно формирование серверных автоматических карт, на основании имеющейся семантической информации о географических координатах. Для этого надо вложить в шаблон {{tl|wl}} запрос ''[[Semantic MediaWiki]]'' {{fp|ask}}, возвращающий список точек, GeoJSON или значков, оформленный с помощью параметра <code>template=wl</code> или с использованием другого шаблона, вызывающего {{tl|wl}}. Такие карты будут обновляться только с перепарсингом страницы, на которой находятся.
Пример автоматической карты:
<pre><nowiki>{{На карте
| title=Города Московской области
| tiles=osm
| select=[[Категория:Города Московской области]]
}}</nowiki></pre>
{{На карте
:Используется основной сервер тайлов OpenStreetMap (рендерер «mapnik»).
| title=Города Московской области
| tiles=osm
| select=[[Категория:Города Московской области]]
}}
=== Формирующиеся на стороне клиента ===
Для часто обновляемых геоинформационных данных рекомендуется использовать карты, подкачивающие данные с сервера с помощью [[API MediaWiki|API ''MediaWiki'']]. Для этого достаточно завернуть код карты целиком в тег {{tag|csidiv}}:
:Этот параметр предусмотрен для употребления или тестирования карт в [[интранет]]е, закрытом от Интернета. В Традиции он не употребляется.
Пример:
:Используется сервер тайлов [[OpenCycleMap]] (карта для велосипедистов).
<pre><nowiki><csidiv>{{wl|1=
{{wl|фильтры}}
{{wl|кластер|8||default}}
{{#ask:[[Новость:+]] [[Текст::+]] [[Широта::+]] [[Долгота::+]] [[ID::+]] [[Место.Тип::{{{тип|+}}}]]
| ?Место
| ?Широта
| ?Долгота
| ?ID
| ?Текст
| ?Заголовок
| ?Дата события
| sort = Дата события
| order = desc
| format = template
| template = Новость на карте{{!}}категории={{{категории|}}}
| link = none
| named args = yes
| limit = 200
| searchlabel = Новости
}}
}}/csidiv></nowiki></pre>
<csidiv>{{wl|1=
:Используется сервер тайлов компании [[MapQuest]]. Он содержит данные OpenStreetMap, которые для небольших уровней увеличения дополняются элементами физической карты мира).
{{wl|фильтры}}
:Уровень увеличения может меняться в пределах от 0 до 18.
{{wl|кластер|8||default}}
{{#ask:[[Новость:+]] [[Текст::+]] [[Широта::+]] [[Долгота::+]] [[ID::+]] [[Место.Тип::{{{тип|+}}}]]
| ?Место
:Используется сервер тайлов MapQuest Open Aerial (данные спутниковой съёмки и аэрофотосъёмки).
| ?Широта
:Это не картографическая, а фотографическая информация о Земле.
| ?Долгота
:Уровень увеличения может меняться в пределах от 0 до 11.
| ?ID
| ?Текст
| ?Заголовок
:Используется сервер тайлов компании [[Scanex]] (Kosmosnimki.Ru: данные OpenStreetMap с изменёнными стилями и рендерингом).
| ?Дата события
:Уровень увеличения может меняться в пределах от 0 до 17.
| sort = Дата события
| order = desc
| format = template
| template = Новость на карте{{!}}категории={{{категории|}}}
| link = none
| named args = yes
| limit = 200
| searchlabel = Новости
}}
}}</csidiv>