Динамический текст в MapInfo Pro

 

В MapInfo Pro существует два типа текстов: обычный, который вводится вручную, и динамический, который меняется в зависимости от контекста, например: текущая дата в окне карты или номер страницы на листе отчёта. Для создания динамического текста используется MapBasic.

 

Динамический текст (смарт-текст) впервые появился в MapInfo Pro 17, но тогда его можно было добавить только в Отчёт. Теперь же, с выходом MapInfo Pro 2021, преимуществами динамического текста можно воспользоваться и в окне Карты. В данной статье мы рассмотрим использование смарт-текста в обоих случаях.

 

 

Динамический текст в окне Отчёта

 

Для простоты повторного использования динамических текстов существуют заранее подготовленные часто используемые выражения - "синонимы". В MapInfo Pro v2021 использование синонимов стало еще проще, так как теперь они отображаются в выпадающем списке Текст на вкладке Отчёт.

 

Рассмотрим на конкретном примере, как добавить динамический текст в отчёт.

 

Всегда полезно включить в отчёт дату, чтобы потом можно было увидеть, когда была напечатана карта. Это, конечно, можно сделать и вручную, главное потом не забыть эту дату изменить, если вы снова будете печатать отчёт на следующий день. В данном случае динамический текст избавит вас от потенциальных проблем и будет автоматически менять дату на текущую. Чтобы добавить динамический текст в окно отчёта в раскрывающемся списке "Текст" выберем "Дата" в подсписке "Смарт-текстов". Теперь щелкнем в месте, куда нужно вставить дату.

 

 

Динамический текст имеет два состояния: когда он редактируется и когда нет. В первом случае он отображается в виде выражения MapBasic. Оно начинается со знака доллара ($), за которым следуют фигурные скобки ({}), внутри которых находится "синоним". В приведенном ниже примере был использован синоним Дата. Также можно создать и свое собственное выражение, для этого начинать надо с $mb и фигурных скобок.

 

 

Когда вы закончите редактирование, выражение будет проверено, и, если оно не содержит ошибок, результат отобразится в отчёте в виде текста - это его второе состояние.

 

 

 

Динамический текст в окне Карты

 

В недавней статье об одном из нововведений MapInfo Pro 2021 - "Построении временных рядов", мы уже добавляли к карте динамический текст, показывающий информацию о текущем временном периоде.

Таким же образом динамический текст можно добавить и к любой другой карте.

 

Из выпадающего списка "Добавить к карте" на вкладке "Карта" выберем "Оформление смарт-текста".

 

 

Перед нами откроется новое окно, в котором можно задать нужное выражение, изменить шрифт и положение текста на вашей карте.

 

 

По умолчанию диалог добавляет к карте её название - Заголовок карты, используя название окна карты. Точно также, как и в окне отчета, вы можете заменить "синоним" на любое другое выражение MapBasic.

 

 

Проверим работу динамического текста и изменим название карты в окне браузера - текст в окне карты тоже сразу изменится.

 

 

Вы можете использовать любое выражение MapBasic для создания динамического текста, но, конечно, наибольший смысл имеет использовать что-то относящееся к карте или её окну.

Вот несколько других примеров выражений:

 

1) На карте можно отобразить используемую систему координат.

 

 

2) На карте можно отобразить текущий картографический масштаб.

 

 

Ниже приведен пример карты с динамическими текстами названия, картографического масштаба и используемой системы координат.

 

 

 

Выражения для создания Динамического текста

 

Рассмотрим выражения для создания динамического текста чуть подробнее. Выражение по умолчанию выглядит следующим образом:

 

$mb{WindowInfo(CurContext(4), WIN_INFO_NAME)}.


Давайте разберем три основных элемента, из которых оно состоит.

 

$mb{} - указывает MapInfo Pro рассматривать содержимое внутри {} как выражение MapBasic. В окне отчёта вы также можете использовать ${}, который будет указывать MapInfo Pro искать соответствующий "синоним". В настоящее время "синонимы" не поддерживаются в окне карты.

WindowInfo() - это стандартная функция MapBasic, которая может дать вам подробную информацию об окне, такую как имя, тип и размер.

CurContext(4) - это функция MapBasic, которая ссылается на содержимое, где она используется. Обычно CurContext() используют для получения ID окна. Именно так она используется здесь, где 4 означает ID окна карты.


Вот несколько других полезных выражений для создания динамического текста:

 

$mb{MapperInfo(CurContext(4), MAPPER_INFO_CARTO_SCALE_EXPR)} - Текущий картографический масштаб карты

$mb{MapperInfo(CurContext(4), MAPPER_INFO_COORDSYS_NAME)} - Название системы координат карты

$mb{MapperInfo(CurContext(4), MAPPER_INFO_MINX)} - X координата левого нижнего угла карты

$mb{MapperInfo(CurContext(4), MAPPER_INFO_MAXX)} - X координата правого верхнего угла карты

$mb{MapperInfo(CurContext(4), MAPPER_INFO_MINY)} - Y координата левого нижнего угла карты

$mb{MapperInfo(CurContext(4), MAPPER_INFO_MAXY)} - Y координата правого верхнего угла карты

$mb{MapperInfo(CurContext(4), MAPPER_INFO_ZOOM)} - Масштабирование карты

$mb{MapperInfo(CurContext(4), MAPPER_INFO_DISTUNITS)} - Сокращенные единицы измерения расстояния на карте, например, "км"

$mb{MapperInfo(CurContext(4), MAPPER_INFO_AREAUNITS)} - Сокращенные единицы площади карты, например, "кв. км"


Вы также можете объединить несколько выражений внутри {}, чтобы получить сложную текстовую строку или несколько строк:

 

$mb{"Title: " + WindowInfo(CurContext(4), WIN_INFO_NAME)} - Комбинирует фиксированное значение в кавычках "" со значением, возвращаемым из функции MapBasic

$mb{MapperInfo(CurContext(4), MAPPER_INFO_CARTO_SCALE_EXPR) + Chr$(10) + MapperInfo(CurContext(4), MAPPER_INFO_COORDSYS_NAME)} - Объединяет результат двух функций MapBasic и располагает их на отдельных строках. Функция Chr$(10) возвращает символ новой строки.

 

 

Заключение 


Таким образом, динамический текст в MapInfo Pro позволяет упростить рутинную часть работы, меняя текст в зависимости от контекста. Ранее эта особенность была доступна только в окне Отчёта, но теперь, с выходом MapInfo Pro 2021, вы можете добавлять динамические тексты и в окно Карты, и такие тексты будут сохраняться при печати или экспорте этого окна.

 

Ознакомьтесь с другими нововведениями, и оставайтесь с нами, чтобы узнать еще больше новостей о MapInfo Pro v2021!

 

 

 

 

Другие полезные статьи:

 

Что будет нового в MapInfo Pro 2021
Построение временных рядов в MapInfo Pro 2021
Веб-сервисы в MapInfo Pro