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

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

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

Возьмем готовый пример из заметки "Продолжаем работать с маркерами используя API Яндекс.Карт" пример: http://webmap-blog.ru/examples/ymap_pr_3.html

Нужно будет изменить изображения значка метки и соответствующие размеры — s.iconStyle.size, s.iconStyle.offset.

В самой верхней строчке пишем код:

<?php include ("config.php"); ?>

— подключения к базе данных.

После кода добавления элементов управления на карту включаем несколько строк php-скрипта для выборки данных о метках из таблицы mappoint.

 
<?php
 
$result = mysql_query("SELECT * FROM mappoint");
if(mysql_num_rows($result)>0)
{
while ($mar = mysql_fetch_array($result))
{
 
?>

Далее изменяем код следующим образом:

var point<?php echo $mar['id']; ?> = new YMaps.GeoPoint(<?php echo $mar['cx'], ',', $mar['cy']; ?>); 		
var placemark<?php echo $mar['id']; ?> = new YMaps.Placemark(point<?php echo $ip; ?>, {style: s});
placemark<?php echo $mar['id']; ?>.setBalloonContent('<div style="text-align:center"><strong><?php echo $mar[name]; ?></strong><br><br><?php echo $mar[descriptions]; ?></div>');     
map.addOverlay(placemark<?php echo $mar['id']; ?>);

И добавляем еще немного кода PHP.

<?php			
}				
}	
?>

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

Сохраняем данный файл с расширением php.

Чтобы сократить количество используемых файлов, можно объединить файл для ввода пользовательских меток и только что созданный скрипт.

В результате у нас получиться законченное приложение, состоящее из трех файлов.

1. vivid_mappoint.php — ввод пользовательских меток и вывод их на карту;
2. config.php — соединение с базой данных;
3. outpoint.php — добавление парвметров о метках пользователей в базу данных.

Полный код файлов vivid_mappoint.php и outpoint.php.

Пример работы.

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

  • Гость: Все супер!крласс!!!! у меня есть вопрос можем ли мы ограничивать доступ. например метки могут добавляить только зарегистрированные пользователи или только админы. спасибо!
  • Гость: Рафаиль, всё зависит от того, на какой стадии у тебя находится реализация работы с пользователями. ;)
  • Гость: Здравсвтуйте. Есть ошибка с которой я справится не могу, если сможете помогите. ВОт адрес, я думаю вы всё поймете http://phpforum.ru/index.php?showtopic=24741 Ваш скрипт из этого примера http://webmap-blog.ru/examples/vivid_mappoint.php тоже сдался, я добавил 3 строчки в самом низу var point138 = new YMaps.GeoPoint(43.974481,56.284366); var placemark138 = new YMaps.Placemark(point138, {style: s}); placemark138.setBalloonContent('<strong>dfgdfgdfgdfg</strong>gfdgdfgdfgdfgdfgdfgdfg dfgdfgdfgdfg dfgdfgdfg dfgdfgd'); map.addOverlay(placemark138); КАК ЭТО ИСПРАВИТЬ???
  • Гость: по e-mail: ugolsergey@gmail.com
  • Гость: У меня почему то не отображаются маркеры на карте в БД они есть в исходном коде тоже а на картах не кажет хотя рисунок и пусть к нему верный
  • Гость: можешь скинуть на электронку все файлы для создания примера с занесением меток. что-то у меня не получается сделать такой трюк с метками.
  • Гость: Пример работы "http://webmap-blog.ru/examples/vivid_mappoint.php" не работает.
  • Гость: Исправил, все работает
  • Гость: пример так и не работает(
  • Гость: Я бы передавал координаты по-другому. Без ненужного парсинга и с большей точностью +' ' +' '
  • Steve Johnson: Отличный мануал ... но хотелось бы спросить, как в этом примере переключить карту на "народную карту"? Вот использую этот код приведенный в уроке! Что надо поменять, чтобы отображалась народная карта? <script type="text/javascript"> window.onload = function () { var map = new YMaps.Map(document.getElementById("YMapsID")); map.setCenter(new YMaps.GeoPoint(74.615862, 42.877738), 10); type: 'yandex#publicMap'; map.addControl(new YMaps.TypeControl()); map.addControl(new YMaps.ToolBar()); map.addControl(new YMaps.Zoom()); map.addControl(new YMaps.ScaleLine()); map.enableScrollZoom(); var ml = new YMaps.YMapsML( 'http://mysite.com/point_users.php' ); map.addOverlay(ml); YMaps.Events.observe(ml, ml.Events.Fault, function (error) { alert('Ошибка: ' + error); }); } </script>
  • Сергей Угольников: Тип карты нужно задавать в ее параметрах: map.setCenter(new YMaps.GeoPoint(74.615862, 42.877738), 10, YMaps.MapType.PMAP); Кроме того, при подключении API необходимо подключить модуль Народной карты: &modules=pmap