В 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 |