Pull to refresh

Выводим ноды на Google Maps

Reading time2 min
Views9.7K
Предположим, что у нас есть достаточно простая задача — показывать на карте местоположение объектов (нод, пользователей). Например, офисов, или, скажем, магазинов подарков. Т.е. мы должны получить страницу, где выводится карта с расположением всех объектов заданного типа, и показать карту на странице каждого отдельного объекта. Речь пойдет о 6-ой версии Друпала, но в 5-ке всё аналогично (если честно, скрин в конце снят именно с Drupal 5). Чтобы выполнить эту задачу я буду использовать следующие модули: GMAP, Location, Views (на сайте у меня используются еще и CCK & Contemplate, но они в этой задаче настолько вспомогательны, что говорить о них не стоит). включение модулейИтак, качаем-включаем. Для нормальной работы GMAP нам потребуется получить у гугла Google Maps API Key. Дело это бесплатное и быстрое. Полученный ключ вводим в настройках GMAP, затем выставляем настройки для карты. настройки GMapCледом нам придется настраивать модуль Location (он же Местанахождение… долго искал)настройки модуля Location
Главное, что нас тут должно волновать — страна и галка "Use a Google Map to set latitude and longitude "Что ж, теперь разрешим использование геолокации для наших материалов. Итак, у меня уже есть тип материала "Офис", записи в котором я и буду выводить на карту:разрешаем использование координат для нодыВыше я указал, что для каждой записи может быть только один адрес, задал город и страну по умолчанию. Осталось совсем немного: создадим карту, где будут показываться все объекты и выведем карту на странице самого объекта.Вывод общей карты делаем через View:создание представления для вывода данных на картеГлавное здесь — Стиль: Gmap. Ну и список полей с фильтром… Теперь осталось показать карту на странице самого офиса. Тут придется малость влезть в код. Итак, в шаблон для этого типа материалов я добавил следующую конструкцию:<?php print gmap_simple_map($node->locations[0]['latitude'], $node->locations[0]['longitude'], '', '<strong>'.$node->locations[0]['name'].'</strong><br/>'.$node->locations[0]['street'], 15, '650px', '400px', FALSE,''); ?>Т.е. вывожу карту размером 650х400 пикселей, показываю на ней маркер, в окошке с описанием пишу название ноды и адрес. Вот, собственно, и всё… Попробуем в действии? Добавим запись и проставим там местоположение:
редактирование материала, указываем координатыПосмотрим, как выглядит карта на странице объекта:дом Зингера на картеА вот так выглядит страница со списком объектов. Пока, их, правда, только 2, так что не слишком впечатляет:карта офисовВпрочем, можно показать, скажем, список магазинов подарков в Петербурге или местоположение львиных статуй в Питере:список магазинов подарков в Санкт-Петербурге
Tags:
Hubs:
Total votes 16: ↑11 and ↓5+6
Comments14

Articles