Нужно простое решение Google Maps; потерял в лабиринте модулей

15

Прежде всего, позвольте мне заявить, что мне все равно, какую версию Drupal мне придется использовать (6 или 7). У меня есть опыт работы с обеими версиями, мне до сих пор не нужно было работать с Google Maps. Требования довольно простые (насколько я понимаю):

1) Есть узел для каждой компании, которую я хочу добавить на карту

2) В форме редактирования узла я хотел бы добавить адрес и добавить его в пользовательскую карту Google (или, возможно, скопировать и вставить ссылку местоположения карты Google)

3) Иметь функцию поиска, чтобы найти ближайшую компанию для данного местоположения

Существует множество различных модулей, и я хотел бы указать правильное направление вместо того, чтобы просматривать более 15 различных модулей, просто чтобы наконец понять, что мне нужно написать собственный модуль для себя.

Заранее спасибо.

F1234k
источник

Ответы:

36

Я создал функцию Drupal, которая реализует это с помощью OpenLayers (см. Http://drupal.org/project/ol_locator ), или вы можете использовать следующую пошаговую инструкцию для настройки своей собственной.

  1. Загрузите и включите следующие модули:

  2. Включить подмодули:

    • Карта геополя 7.x-1.0-alpha5
    • Интерфейс Views 7.x-3.0-rc1
    • OpenLayers UI 7.x-2.0-alpha2
    • OpenLayers Просмотров 7.x-2.0-alpha2
  3. Перейти admin/structure/types/addи создать новый тип контента под названием " Location"

  4. Перейдите admin/structure/types/manage/location/fieldsи добавьте следующие поля:

    • Метка: Адрес> Имя поля: адрес> Тип поля: Почтовый адрес> Виджет: Форма динамического адреса
  5. Выберите список доступных стран из списка. Оставьте пустым, чтобы разрешить все из них.

  6. Отметьте «Форма адреса (для конкретной страны)»

    • Примечание. Страны и связанные с ними поля обрабатываются модулем Addressfield. Если вы не видите свою страну или если в ней нет соответствующих полей, вам необходимо отправить сообщение о проблеме с этим модулем http://drupal.org/project/addressfield (Проверьте, есть ли в очереди проблемы с вашей пропущу страну первым до публикации)
  7. Метка: Геополе> Имя поля: геополе> Тип поля: Геополе> Виджет: Геокод из другого поля

  8. Перейдите admin/structure/types/manage/ol_locator_location/displayи измените Defaultотображение для Geofield:

    • Метка: Скрытый> Формат: OpenLayers
  9. Нажмите на значок шестеренки и выберите следующее:

    • Предустановка OpenLayers: карта Geofield Formater> Параметры данных: использовать полную геометрию
  10. Перейти admin/structure/openlayers/layers/settingsи установить следующее:

    • Версия API Карт Google: v3.2
  11. Давайте проверим, работает ли геокодирование, создав тестовое местоположение.

    • При создании тестового типа контента убедитесь, что вы используете хорошо установленный адрес. Если Google не знает о вашем адресе, то и ваш новый сайт тоже не будет.
  12. Перейти admin/structure/views/addи создать новый вид со следующей информацией

    • Имя представления: Поиск Proximity> Описание: Отображает геокодированные местоположения на динамической карте, чтобы пользователи могли выполнять поиск по близости. > Показать: Тип контента: Местоположение отсортировано по: Не отсортировано> Продолжить и редактировать
  13. Добавьте следующие поля и сохраните их значения по умолчанию, кроме отмеченных мест:

    1. Содержание: Заголовок > Отметить Создать ярлык: «Заголовок»
    2. Содержание: адрес (адрес)
    3. Содержание: Геополе (Geofield)> Исключить из отображения
    4. Близость: расстояние (расстояние)
  14. Добавьте следующие критерии фильтрации к существующим:

    • Содержание: опубликовано (да) и
    • Содержание: Тип (= Местоположение)
    • Близость: большой круг (открыт)> Предоставить посетителям этот фильтр, чтобы они могли его изменить> Метка: Близость> добавить «10» в поле «Значение»> Разблокировать единицы измерения> Разблокировать местоположение
  15. Заголовок > Глобальный: Текстовая область> Показать, даже если просмотр не дал результата

    • "Найти местоположение рядом с вами. Вы можете искать, используя свой город, провинцию / штат или почтовый индекс."
  16. Поведение без результатов > Глобальный: Текстовая область и добавьте следующее:

    • «Извините, ничего не найдено.
      1.) Проверьте правильность вашего почтового индекса
      2.) Проверьте правильность написания своего города, провинции или штата.
      3.) Увеличьте расстояние сближения»
  17. Отправить текст кнопки : Поиск

  18. Добавить новое отображение: « Наложение данных OpenLayers »

  19. Формат :

    • Настройки> Применить открытые слои (переопределить)> Источники данных карты: WKT> Поле WKT: Геополе> Поле описания>> Применить (это отображение)
  20. Сохранить вид

  21. Перейти к admin/structure/openlayers/maps

  22. Клонировать карту по умолчанию

  23. Общая информация> Название: location_map. Название: Карта местоположения> Карта Описание: Это карта местоположения по умолчанию.

  24. Слой и стили> Наложение слоев (выберите только что созданный вид) Местоположения «Включено» «Активировано» То же самое для Placeholder для Geofield Formatter

  25. Поведения> Всплывающее окно (нужно вернуться и позже «Выбрать слой, к которому нужно применить всплывающие окна.» )> Увеличить масштаб для слоя «Выбрать слой для увеличения при загрузке карты» > Point Zoom Level: 20 ****

  26. Сохранить карту

  27. Вернитесь к виду, который мы только что создали

    • admin/structure/views/view/proximity_search/edit
  28. Добавить отображение «Страница»

    • Путь: /locator
    • Формат: Карта OpenLayers> Применить (это отображение)> Карта: Карта местоположений (та, которую мы только что создали в OpenLayers)> Применить
  29. Сохранить представление (Теперь мы должны увидеть нашу карту на панели предварительного просмотра внизу нашего представления с любым тестовым содержимым

  30. Добавить отображение: «вложение»

    • Формат: Таблица> Применить (это отображение)
    • Прикрепить к: странице
    • Наследовать открытые фильтры: Да
    • Удалите Заголовок> Глобальный: Текстовая область> Применить (это отображение)
    • Элементы для отображения: Показать определенное количество элементов | 5 штук
    • Наследовать пейджер: Да
    • Визуализировать пейджер: Да
  31. Сохранить вид

  32. Поведения> Всплывающие> Слои> desire_search_openlayers_1 (Карта Openlayers представлений, которую мы только что создали)

  33. Увеличьте масштаб до слоя> Увеличивает размер данного слоя при загрузке карты. >proximity_search_openlayers_1

  34. Вернитесь к admin/structure/types/manage/location/display> нажмите значок шестеренки и измените Open Layers Preset на карту расположения, которую мы только что создали> Обновить> Сохранить

Вуаля! Выполнено

MRP
источник
1
ваш ответ настолько подробен, что я хочу
назначить
Это не просто ответ, это учебник :)
Codium
+1, но важно отметить, что ol_locatorфункция может содержать ошибки в более новых версиях модулей, и в ней нет ограничений по номеру версии. Я это пережил (к сожалению). Но ваш ответ действительно очень подробный.
Sk8erPeter
Если модуль глючит, пожалуйста, опубликуйте его в очереди на выдачу моего модуля, указав, что именно не работает (полная информация). У меня нет проблем с решением проблем, но мне нужно знать о них. :)
Я только что протестировал OpenLayers Locator, и он работает очень хорошо и как рекламируется. Спасибо @nicoz.
Найджел Уотерс