Шрифт
Яндекс.Карта на Вашем сайте с возможностью добавления меток пользователями и вывод по категориям. Версия для API Яндекс.Карт 2.х
Play

Яндекс.Карта на Вашем сайте с возможностью добавления меток пользователями и вывод по категориям. Версия для 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 ()

📎📎📎📎📎📎📎📎📎📎