Яндекс.Карта на Вашем сайте с возможностью добавления меток пользователями и вывод по категориям. Версия для API Яндекс.Карт 2.х
На страницах своего блога я рассказывал о том, как можно реализовать добавление меток пользователями и вывод по категориям, используя API Яндекс.Карт 1.x, сморите здесь и здесь.
В этой заметке я опишу как можно сделать тоже для версии API Яндекс.Карт 2.х.
В начале мы создадим таблицу ymapapiv2_markers_cat в базе данных MySQL, где будем хранить данные:
CREATE TABLE IF NOT EXISTS `ymapapiv2_markers_cat` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `hintText` varchar(255) NOT NULL, `balloonText` varchar(255) NOT NULL, `type` varchar(50) NOT NULL, `lat` varchar(255) NOT NULL, `lon` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
После начнем исправлять файлы.
Начнем с основного файла, который выводит карту с метками.
Для примера я буду использовать три различных категории: бары, кафе и рестораны.
Удаляем весь код лишних типов меток в форме добавления.
Теперь он будет иметь следующую структуру:
В примере метки не будут содержать текст в самом значке.
Поэтому код дальше тоже немного притерпел изменение
Переменные myMap и myCollection вынесены в глобальную область видимости.
После добавления элементов управления на карту, определяем коллекцию геообъектов myCollection
myCollection = new ymaps.GeoObjectCollection();
Код отвечающий за вывод данных о меках на карту я вынес в отдельную функцию show_c
Кликая по ссылкам рядом с картой, мы передаем название категории функции show_c.
В ней формируется запрос к скрипту vivodpointsmap-cat.php, а затем из ответа формируются метки и добавляются в коллекцию.
Затем коллекция добавляется на карту.
При следующем обращении к функции show_c данные удаляются из коллекции и добавляются новые.
Также меняются атрибуты ссылки с активной на неактивную.
Рассмотрим файлы addmetki.php и vivodpointsmap.php
Они тоже будут иметь изменения.
В файле vivodpointsmap.php мы принимаем, переданное методом GET значение названия категории, а затем выбираем из таблицы данные.
В зависимости от категории, определяем название стиля отображения метки.
Формируем ответ в формате json.
В файле addmetki.php мы добавим код:
после получения данных.
Здесь в зависимости от названия стиля метки, мы определяем категорию.
А далее записываем данные в таблицу ymapapiv2_markers_cat
Яндекс.Карта на Вашем сайте с возможностью добавления меток пользователями и вывод по категориям. Версия для API Яндекс.Карт 2.х : 14 комментариев
Отличный пример! Спасибо! Хотелось бы также иметь возможность Админу сайта удалять/редактировать без прямого обращения через PHPMyAdmin С уважением!
Здравствуйте, подскажите пожалуйста, как сделать так, что бы id метки был переменной и брал свое значение из другой таблицы в этой же БД??
И второй вопрос, если реализовать присвоение из другой таблицы БД», учитывая что значения меняться не будет, будет ли перезаписываться метка?или будет довавляться новая с тем же id?
Если была бы возможность — то можно было бы совместить — вывод по категориям с добавлением и поиск по городу…можете подсказать, как сделать.
Если правильно понимаю, то надо сначала выбрать по городу, а потом проверить на параметр категория и потом выводить, что получилось
В приведенном примере не записываются данные в базу данных почему-то
В базу записывается нормально, моя ошибка была, все отлично
А как реализовать данный пример для собственного слоя карты, я заменяю код //Определение начальных параметров карты function init ()