just photo

Drupal 6. Google Maps. GMap и Location

Julia 29/03/2009

Настройка отображения местоположения нода на картах Google,
с использованием модулей GMap и Location.

Еще эту группу модулей называют Mapedelic, разрабатываться начала еще в 2005 году, поэтому видимо их настройка под определенные требования весьма не тривиальна, когда сталкиваешься с ними впервые.

Опишу здесь настройку Mapedelic под следующую задачу.
Допустим у нас есть ноды определенного типа, для которых надо указать их местоположение на карте.
Довольно распространенный случай, например, ноды - магазины или музеи на карте города.
На странице нода должен быть адрес и карта с маркером.

Примерно так:
screenshot""

  1. Первое, что делаем - скачиваем и устанавливаем набор модулей GMap и Location
  2. Модули, которые должны быть включены:
    • Location
    • Node location
    • Location phone (необязательно, но скорее всего вам понадобится)
    • GMap
    • GMap location
  3. Модуль Node location (из набора Location, и все требуемые для него модули) должен быть включен.
    В настройках нашего типа контента теперь появилась группа элементов Location:
    screenshot""

    В полях минимальное и максимально количество адресов указываем по 1 (как на скриншоте).
    Остальные настройки по вашему желанию.

    Теперь на странице редактирования нода можно указывать его адрес и телефон (тогда не забудте модуль Location Phone из комплекта Location). Но пока все это без карты.

  4. Для того, чтобы номер телефона был виден на странице нода, нужно добавить его в тему,
    т.е. из модуля Location копируем файл location.tpl.php в свою тему.
    И добавляем в него строчку:
    <?php if ($phone) {echo '<div>'. $phone .'</div>';} ?>
  5. Также может понадобиться убрать заголовок у группы элементов Location на странице нода.
    Тогда копируем файл locations.tpl.php из модуля Location в свою тему и
    вносим в него необходимые изменения.
  6. Теперь карты. Модуль GMap location (из набора GMap, и все требуемые для него модули) должен быть включен.
  7. В настройках модуля Location /admin/settings/location ставим галочку:
    Use a Google Map to set latitude and longitude
    теперь на странице редактирования нода можно указать местоположения прямо на карте,
    для многих стран положение определяется автоматически по адресу, введенному в полях Location.

    Настройте также сразу карту, на которой вы будете указывать положение Location chooser macro.

    [gmap |center=36.175, -115.136389|zoom=10]

    zoom=10 для отображения города на карте, а не целого материка :)

  8. Чтобы на странице нода появилась карта с его местоположением, нужно включить блок Location map
    В его настройках указываем размеры карты и другие параметры, если необходимо.

    Укажите также в списке урлов, на которых НЕ показывать блок
    node/*/edit
    иначе на странице редактирования нода не возможно будет указать положение прямо на карте.

  9. На странице нода, там где информация Location, будет показываться ссылка 'посмотреть на карте'.
    Чтобы ее убрать - отключаем соответствующую галочку в настройках нашего типа контента
    в группе полей Location -> Display settings
  10. Теперь у вас также есть возможность посмотреть местоположение всех нодов на одной карте
    по адресу /map/node
    Ее настройки - это настройки модуля Gmap location по адресу /admin/settings/gmap_location.
  11. Осталось только указать права доступа на просмотр карт для посетителей вашего сайта.

Для модулей Gmap и Location есть много дополнительных модулей.
Однако, для тех же требований есть более новый модуль Google Maps Tools.
Может быть попозже я опишу и работу с ним.

Туториал на английском -
Mapping with Drupal: GMap, Location & Views

тэги:

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

опишите, пожалуйста, подробнее, что Вы хотите, какое именно окно, с каким содержимым, и при нажатии на какой ярлык - я так понимаю Вы имеете ввиду ссылку, если да, то какую

Интересное решение. Спасибо!

---
химический анкер

Здравствуйте !

Не подскажете, как сделать, чтобы названия на карте по-возможности выводились по-английски. А то по-умолчанию на карте Таиланда все по-тайски. Не всем понятно :).
Ссылкой на гугл-мап это решается добавлением параметра "hl=en". Здесь же я так и не понял.

Спасибо !

Видимо сейчас настройками этого не сделаешь.
Вобще настройки карты в модуле Gmap устанавливаются через Map macro,
в частности для блока Gmap location, например, в настройках блока в поле Map Macro.

Но hl сейчас не поддерживается в этом макро.

Решил проблему добавив строку "'hl' => 'en'" в файл "gmap.module"

...
  $query = array(
    'file' => 'api',
    'v' => variable_get('gmap_api_version', GMAP_API_VERSION),
    'key' => gmap_get_key(),
    <strong>'hl' => 'en',</strong>
  );

теперь на картах есть английский: http://www.chiangmai.su/map/node

Актуальный обзор гео-модулей
http://www.levelos.com/blog/2010/08/mapping-drupal
(на английском)

Отправить новый комментарий

Содержимое этого поля хранится скрыто и не будет показываться публично.
  • Адреса страниц и электронной почты автоматически преобразовываются в ссылки.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Автоматический перевод строки.
  • Вы можете публиковать код, размещая его в <code>...</code> (generic) или в <?php ... ?> (раскрашенный PHP).

Дополнительная информация о настройках форматирования