SAS Планета имеет средства для работы с метками. К сожалению, их функциональность имеет некоторые ограничения.
К числу востребованных задач, решить которые встроенными средствами проблематично, в частности относятся следующие:
Решить все эти задачи возможно путем создания собственного слоя, накладываемого поверх карты.
Это совсем не сложно, если Вы знаете, что такое PHP, MySQL. Как это сделать, мы сейчас и разберем.
Вам понадобится веб-сервер с установленным PHP, MySQL. Разумеется, вы можете просто установить эти приложения на тот же компьютер, на котором находится SAS Планета.
Обратите внимание!
extension=php_gd2.dll
. А если такой строки нет - добавьте ее. После чего перезапустите службу веб-сервера.Скачайте и распакуйте файл с примером: sas_demo_db.zip
В связи с ошибкой в библиотеке работы с изображениями в SASПланете необходимо изменить файл map.php (см. Багтрекер). Исправленный файл с примером sas_demo.zip
(это три наших новых слоя, зачем столько - расcкажу позже) необходимо отредактировать файлы params.txt. В параметре DefUrlBase укажите имя или IP адрес веб-сервера (вместо стоящего по умолчанию значения 127.0.0.1).
Можно начинать
Как редактировать/удалять точки
К сожалению, в этом окне срабатывают «горячие» клавиши SAS Планеты. Избежать этого можно следующим образом:
Как добавлять точки
Как это работает
В программе SAS планета карты состоят из тайлов (tile - кафельная плитка), т.е. подогнанных друг к другу кусочков. Их размер - 256х256 точек (пикселей). При запуске программа начинает запрашивать тайлы с сервера с картами. Это наглядно видно, когда вы выбираете место, которое еще ни разу не посещали (иначе карты грузятся из кэша). Происходит это так в соответствие с параметрами карты настроенными в файлах params.txt и GetUrlScript.txt zmp.
В нашем примере на веб-сервер будут переданы координаты сторон тайла (долгота/широта), его абсолютные координаты и текущий масштаб. (Последние 3 параметра нужны для управления кэшем - см. ниже).
На веб-сервере эти координаты передаются скрипту map.php который на их основании запрашивает из БД MySQL информацию по всем объектам, которые находятся в этом тайле. На основании этих данных скрипт генерирует тайл с метками (KML) и возвращает его SAS Планете. Однако SAS Планета поддерживает KML его не в полной мере. Фактически, можно вывести небольшую белую точку с черной окантовкой либо многоугольник. А нам-то надо выводить надпись и картинки. Для того, чтобы это сделать, создается еще один слой - графический.
Вы можете включить слои DemoDB - метки (kml) и DemoDB - картинки (png) по отдельности, чтобы было понятно, что представляет из себя каждый слой.
Кроме того, нам необходимо иметь возможность добавлять точки в произвольное место на карте. Для этого используется слой DemoDB - разметка (kml) который заполняет весь экран «кликабельными» метками.
Что такое sascm.exe
SAS Планета имеет три режима работы с кэшем (только кэш, кэш/интернет, только интернет). Однако все эти режимы являются общими и для карты и для всех слоев. Для наших целей это не вполне подходит. В отличие от слоев вроде Panoramio или Wikimapia наш слой может обновляться достаточно часто - в т.ч. каждую минуту. Фактически нам необходимо, чтобы слои с информацией из БД работали в режиме только интернет, а слой с картой - в режиме кэш + интернет или вообще только кэш. Эту задачу решает программа SAS Cache Manager (sascm.exe). Она запрашивает у веб-сервера информацию о выводимых тайлах слоев к веб-серверу и удаляет из кэша уже отображенные тайлы.
Для настройки sascm используется файл sascm.ini. Параметры:
MapServer=127.0.0.1 - имя или IP адрес сервера со слоем.
ClientName=client1 - имя клиента. Можно не задавать, в этом случае в качестве имени используется IP адрес клиента. Необходимо для того, чтобы различать запросы от разных клиентов в условиях, когда к одной и той же базе подключено несколько пользователей.
MapCaches=demopng,demokml,demorazmetka - имена каталогов с кэшами слоев, которые надо «чистить». Должны совпадать со значениями, указанными в параметре 'NameInCache' в файлах params.txt этих слоев.
Непосредственно после запуска sascm проверяет, запущена ли SAS Планета и если не запущена - запускает ее. Сделано для того, чтобы не надо было запускать 2 файла.
После запуска sascm.exe с интервалом 3 сек:
Далее из каталога с кэшем для выбранных слоев
Если при работе с SAS Планетой Вам необходимо принудительно обновить текущий слой, то:
Разумеется, что если Вы работаете в режиме «только Интернет», то будет работать и без sascm.
Исходники - находятся в каталоге SASCM_Src.