SASGIS

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

SAS.Wiki

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

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

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


playground:отображение_на_карте_произвольной_информации_точек_картинок_и_т.п._из_базы_данных

Различия

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

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

playground:отображение_на_карте_произвольной_информации_точек_картинок_и_т.п._из_базы_данных [08/03/2011 15:29]
93.91.4.251
— (текущий)
Строка 1: Строка 1:
-SAS Планета имеет средства для работы с метками. К сожалению,​ их функциональность имеет некоторые ограничения. 
- 
-К числу востребованных задач, решить которые встроенными средствами проблематично,​ в частности относятся следующие:​ 
-  - Отображение точек на основании информации из базы данных 
-  - Изменять отображаемую информацию без перезапуска программы SAS Планета 
-  - Возможность редактирования точек, как средствами СУБД, так и из программы SAS Планета в многопользовательском режиме. 
- 
-__Решить все эти задачи возможно путем создания собственного слоя, накладываемого поверх карты.__ 
- 
-{{:​playground:​intro.jpg?​360|}} 
- 
-Это совсем не сложно,​ если Вы знаете,​ что такое PHP, MySQL. Как это сделать,​ мы сейчас и разберем. 
- 
-Вам понадобится веб-сервер с установленным PHP, MySQL. Разумеется,​ вы можете просто установить эти приложения на тот же компьютер,​ на котором находится SAS Планета. 
- 
-Обратите внимание! 
-  - В моем примере используется ряд функций PHP по работе с изображениями. Модуль для работы с изображениями (gd2) в PHP по умолчанию выключен. В случае PHP для Windows для того, чтобы включить его, в файле php.ini уберите комментарий в начале строки ''​extension=php_gd2.dll''​ А если такой строки нет - добавьте ее. После чего перезапустите службу веб-сервера. 
-  - Чтобы было проще работать с MySQL, установите какое-нибудь средство управления MySQL сервером,​ например phpMyAdmin 
- 
-**Скачайте и распакуйте файл с примером:​ {{:​playground:​sas_demo_db.zip|}}sas_demo_db.zip.** 
- 
-  - Содержимое каталога htdocs скопируйте в каталог document_root веб-сервера. 
-  - Туда же скопируйте файл arial.ttf (взять в каталоге windows\fonts). 
-  - В файле config.inc.php (находится в document_root) настройте параметры подключения к MySQL серверу 
-  - Создайте на MySQL сервере базу данных sasdemo. Импортируйте в нее дамп sasdemo.sql.gz. 
-  - Содержимое каталога sas (со всеми подкаталогами) следует скопировать в каталог SAS Планеты. 
-  - Удалите файл maps.ini из каталога maps SAS Планеты (для того, чтобы программа заново создала список карт). 
-  - В том случае,​ если веб-сервер стоит на другом компьютере (т.е. не на 127.0.0.1), то: 
-  * в каждом из каталогов программы SAS Планета 
-    * \maps\sas.maps\demodb\png 
-    * \maps\sas.maps\demodb\kml 
-    * \maps\sas.maps\demodb\razmetka 
-(это три наших новых слоя, зачем столько - расcкажу позже) необходимо отредактировать файлы params.txt. В параметре DefUrlBase укажите имя или IP адрес веб-сервера (вместо стоящего по умолчанию значения 127.0.0.1). 
-  * в каталоге SAS Планеты необходимо отредактировать файл sascm.ini, в нем указать адрес веб-сервера (вместо стоящего по умолчанию значения 127.0.0.1) 
- 
-**Можно начинать** 
- 
-  - Запустите SAS Cache Manager - файл sascm.exe (из каталога SAS Планеты). Что это такое - см. ниже. Он сам запустит SAS Планету. 
-  - Включите слои DemoDB - картинки (png) и DemoDB - подписи (kml) 
-  - Найдите на карте Москву и установите масштаб так, чтобы Москва заняла весь экран. Вы должны увидеть картинку,​ как в начале статьи. 
- 
-**Как редактировать/​удалять точки** 
- 
-  - Средствами СУБД (например,​ с помощью phpMyAdmin) 
-  - Непосредственно из SAS Планеты. 
-    * Для этого два раза кликните по белому квадратику рядом с иконкой точки. Откроется окно с информацией о точке и ссылками для редактирования/​удаления точки. 
-    * Отредактируйте информацию и нажмите "​Сохранить"​. Закройте окно редактирования. Обновите слои с точками (масштаб увеличить - подождать 4 сек - масштаб уменьшить. Если слой не обновился - мало ждали). 
- 
-К сожалению,​ в этом окне срабатывают "​горячие"​ клавиши SAS Планеты. Избежать этого можно следующим образом:​ 
-  * в окне, которое открывается после двойного клика по карте, ссылку "​Отредактировать точку"​ кликайте,​ держа нажатой клавишу Shift. В этом случае форма редактирования откроется в окне браузера а не дочернем окне SAS Планеты. 
- 
-**Как добавлять точки** 
- 
-  - Средствами СУБД 
-  - Непосредственно из SAS Планеты 
-  * Включите слой DemoDB - разметка (kml). 
-  * Увеличьте масштаб для точного позиционирования 
-  * кликните по тому месту, куда Вы хотите добавить точку 
-  * Дальше действия аналогичны редактированию точки 
-  * После добавления отключите слой DemoDB - разметка (kml) и обновите слои с точками. 
- 
-**Как это работает** 
- 
-В программе 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 Планета. Если такого приложения не запущено (т.е. пользователь закрыл SAS Планету),​ то sascm тоже завершает свою работу. 
-  - Если SAS планету запущена,​ то запрашивает у веб-сервера координаты и масштаб последнего сгенерированного тайла. 
-Далее из каталога с кэшем для выбранных слоев 
-  * стираются все файлы, относящиеся к масштабам,​ отличающимся от текущего 
-  * стираются все файлы текущего масштаба,​ отстоящие от текущего (последнего запрошенного) тайла более, чем на 1 экран 
- 
-Если при работе с SAS Планетой Вам необходимо принудительно обновить текущий слой, то: 
-  * уменьшите масштаб,​ подождите 4 секунды,​ увеличьте масштаб. Слой начнет отрисовываться по-новой. 
- 
-Разумеется,​ что если Вы работаете в режиме "​только Интернет",​ то будет работать и без sascm. 
- 
-Исходники - находятся в каталоге SASCM_Src.