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

Автор: | 28.08.2011

В этой небольшой заметке я хочу рассказать Вам о нескольких изменениях для улучшения кода примера, рассмотренного в статье «Яндекс.Карта на Вашем сайте с возможностью добавления меток пользователями и вывод по категориям».

Спасибо, читателям блога за оставленные комментарии к упомянутой заметке.

От них я узнал о двух моих недачетах, которые я исправляю.

1. При добавлении данных о метке многострочного описания перестают отображаться все метки данной категории.

Чтобы решить данную проблему необходимо изменить файл vivodpointsmap.php, который формирует файл в формате JSON.

Нужно после строки if($mar[‘type’] == ‘cafe’) {$cattype = "Кафе";}

Добавить следующий код:

$descriptions = str_replace("n", "<br />", $mar['descriptions']);

Мы заменяем все переводы строк в описании тегом «<br />».

А затем в строке

$json =  array(name=>$mar['name'], descriptions=>$mar['descriptions'], type=>$cattype, lat=>$mar['cx'], lng=>$mar['cy']);

Параметр $mar[‘descriptions’] заменить на $descriptions.
Если Вы формируете ответ через функцию echo, тогда нужно будет изменить строку

$json =  $json.'{"name" : "'.$mar['name'].'", "descriptions" : "'.$mar['descriptions'].'", "type":"'.$cattype.'", "lat" : "'.$mar['cx'].'", "lng" : "'.$mar['cy'].'"},';

В ней также нужно $mar[‘descriptions’] заменить на $descriptions.

2. Иногда, при добавлении нескольких меток в одну и туже категорию на карте, данные сохранялись в базу два раза.

Здесь ошибка появлялась из-за того, что несколько раз обрабатывалось событие click по кнопке Добавить.

Чтобы этого не происходило нам нужно исправить файл vivodpoints.html.

Сразу после строки

$element.find('#submit').bind('click', function () {

мы добавляем стоку

$element.find('#submit').unbind('click');

Этой строкой мы удаляем привязанное событие click для кнопки Добавить.

Проверить работу в действии

Исправленные файлы примера Вы можете загрузить:vivodpointsmap.php или vivodpointsmap_echo.php

Яндекс.Карта на Вашем сайте с возможностью добавления меток пользователями и вывод по категориям — доплнение: 8 комментариев

  1. Александр

    Спасибо! Интересно, почему иногда два раза прописывалась метка…
    Очень полезно было бы сделать так, чтобы рядом со списком меток в скобочках отображалось сколько их уже поставлено.

  2. Дима

    Отлично! Не нашел на вашем сайте связки yandex maps + zoo. Не могли бы вы сделать урок о интеграции yandex maps в Zoo (yootheme), ведь по умолчанию там стоит google maps, который содержит в себе мало прорисованных городов России.
    По этой ссылке http://joomlaforum.ru/index.php/topic,159618.msg904446.html#msg904446
    можно найти данное решение, но в нем плохо отображается балун и нет формы поиска и др… Спасибо.

  3. Дима

    Здравствуйте. Каким образом можно дать возможность ставить метки лишь зарегистрированным пользователям, а доступ к просмотру карты с метками организовать для всех пользователей.

  4. Юрий

    Огромное спасибо автору за такие интересные решения. Присоединяюсь к вопросу Дмитрия — как разграничить просмотр и редактирование карты разными группами пользователей?

  5. Петр

    Огромное спасибо за Ваши уроки, все получилось, и даже больше! Сейчас увидел в действии на некоторых сайтах Яндекс карты с панорамированием улиц. Думаю, с какой стороны подходить к решению. Был бы признателен за любую помощь.

  6. Андрей

    Добрый день!
    Замечательная работа. Я премного благодарен автору.
    У меня только вопрос.
    Сделал как написано, все работает, только вот балун показывает квадратики, а где должна быть категория — null.
    Ковырялся в настройках кодировки, и в файлах менял, и в базе данных — не помогает.
    Что это может быть?
    Заранее спасибо.

    1. admin Автор записи

      Вероятно код выводящий данную строку в балуне не в той кодировке. У меня в скриптах и в базе данных используется кодировка UTF-8.
      Еще раз проверьте кодировку всех файлов. Сохраните их с помощью программы Notepad++ предварительно выбрав в ней Кодировки-Преобразовать в UTF-8 без BOM.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *