Как добавить яндекс карту в каталог ?

Выкладываю свой вариант решения

#1 11 марта 2012 в 18:08
Смысл мероприятия: при добавлении новой записи в каталог мы в определенное поле "карта" вписываем координаты места, которое хотим выделить (через запятую долготу и широту).
Их легко найти на яндексе. Получаем на выходе: при просмотре каталога у нас открывается карта с балуном, на котором написано название объекта.

Итак, для начала нужно добавить новый тип записи. Где-то на форуме описывалось как это делать.
Я добавил тип карта с обозначением /~s~/. Далее выводим в хедере ключ, который можно получить на яндексе. Основные изменения будут в файле /components/catalog/fontend.php.
В нем после комментария "//print item details" (+- 700 строка)приводим код к следующему виду:

  1. ................................
  2. $fields = array();
  3.  
  4. if (sizeof($fstruct)>0){
  5. foreach($fstruct as $key=>$value){
  6. if (@$fdata[$key]!=''){
  7. if (strstr($value, '/~h~/')){ $value = str_replace('/~h~/', '', $value);
  8. $htmlfield = true; }
  9. if (strstr($value, '/~s~/')){ //если видим тип карта - начинаем действовать
  10. $fieldS = '';
  11. $value = str_replace('/~s~/', '', $value);
  12. $fdata[$key] = '<script type="text/javascript">
  13. YMaps.jQuery(function () { //подробнее ищем на api.yandex.ru
  14. var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
  15. map.setCenter(new YMaps.GeoPoint('.strip_tags($fdata[$key]).'), 15);
  16. //центр карты там, где точка, масштаб
  17. map.openBalloon(new YMaps.GeoPoint('.strip_tags($fdata[$key]).'), "'.$item['title'].'");
  18. //координаты точки и заголовок
  19. map.addControl(new YMaps.TypeControl()); //тип карты
  20. map.addControl(new YMaps.ToolBar()); //и так понятно =)
  21. map.addControl(new YMaps.Zoom()); // зум
  22. map.enableScrollZoom(); // зум при прокрутке колесика
  23. // map.addControl(new YMaps.MiniMap()); // мини карта, я убрал
  24. map.addControl(new YMaps.ScaleLine()); // линейка
  25.  
  26. })
  27. </script>
  28. <div id="YMapsID" style="width:500px;height:300px"></div>';
  29. //ширина и высота контейнера с картой
  30. }
  31. if (strstr($value, '/~m~/')){
  32. $value = str_replace('/~m~/', '', $value);
  33. $makelink = true;
  34. } else {$makelink = false; }
  35. .......................



И все, выводится как на скриншоте. В действии можно посмотреть на сайте жел-дор.рф в разделе "Организации".
#2 11 марта 2012 в 20:26
На мой взгляд это не удобно. У меня на сайте по другому реализовано — biznes62.ru
Достаточно при добавлении компании в каталог просто указать город и адрес, после чего карта формируется автоматически)
#3 12 марта 2012 в 16:32
яндекс апи позволяет и так делать, вопрос кривизны рук, но мой вариант грузится намного быстрее, имхо
#4 12 марта 2012 в 21:24

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

rpo
Возможно. Вопрос только в том, кто добавляет организации на сайт, если ты сам, то без разницы. А если пользователи, то я сильно сомневаюсь, что они будут искать и добавлять координаты…
#5 21 марта 2012 в 20:38
Я сам добавляю, пользователи данные присылают так
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.