Besoin d'une solution Google Maps simple; perdu dans le labyrinthe de modules


15

Tout d'abord, permettez-moi de dire que je ne me soucie pas de la version de Drupal que je devrais utiliser (6 ou 7). J'ai de l'expérience avec les deux versions, je n'avais tout simplement pas besoin de travailler avec Google Maps jusqu'à présent. Les exigences sont assez basiques (d'après ce que je comprends):

1) Avoir un nœud pour chaque entreprise que je souhaite ajouter sur la carte

2) Dans le formulaire de modification de nœud, je voudrais ajouter une adresse et la faire ajouter dans une carte google personnalisée (ou peut-être copier-coller le lien d'un emplacement google map)

3) Avoir une fonction de recherche pour trouver l'entreprise la plus proche pour un emplacement donné

Il existe des tonnes de modules différents, et je voudrais être dirigé vers la bonne direction au lieu de parcourir plus de 15 modules différents juste pour enfin réaliser que j'ai besoin d'écrire un module personnalisé pour moi.

Merci d'avance.

Réponses:


36

J'ai créé une fonctionnalité Drupal qui l'implémente à l'aide d'OpenLayers (voir http://drupal.org/project/ol_locator ) ou vous pouvez utiliser la procédure suivante pour configurer la vôtre.

  1. Téléchargez et activez les modules suivants:

  2. Activer les sous-modules:

    • Carte Geofield 7.x-1.0-alpha5
    • Vues UI 7.x-3.0-rc1
    • Interface utilisateur OpenLayers 7.x-2.0-alpha2
    • Vues OpenLayers 7.x-2.0-alpha2
  3. Accédez à admin/structure/types/addet créez un nouveau type de contenu appelé " Location"

  4. Accédez à admin/structure/types/manage/location/fieldset ajoutez les champs suivants:

    • Libellé: Adresse> Nom du champ: adresse> Type de champ: Adresse postale> Widget: Formulaire d'adresse dynamique
  5. Sélectionnez les pays disponibles que vous préférez dans la liste. Laisser en blanc pour tous les autoriser.

  6. Cochez "Formulaire d'adresse (spécifique au pays)"

    • Remarque: Les pays et leurs champs associés sont gérés par le module Addressfield. Si vous ne voyez pas votre pays ou s'il ne contient pas les champs appropriés, vous devez signaler un problème avec ce module http://drupal.org/project/addressfield (Vérifiez s'il y a un problème dans la file d'attente concernant votre pays manquant avant de poster)
  7. Label: Geofield> Nom du champ: geofield> Type de champ: Geofield> Widget: Géocodage d'un autre champ

  8. Accédez à admin/structure/types/manage/ol_locator_location/displayet modifiez l' Defaultaffichage de Geofield:

    • Étiquette: caché> Format: OpenLayers
  9. Cliquez sur l'icône d'engrenage et sélectionnez les éléments suivants:

    • Préréglage OpenLayers: Geofield Formater Map> Options de données: Utiliser la géométrie complète
  10. Accédez à admin/structure/openlayers/layers/settingset définissez les éléments suivants:

    • Version de l'API Google Maps: v3.2
  11. Testons pour voir si le géocodage fonctionne en créant un emplacement de test

    • Lors de la création d'un type de contenu de test, assurez-vous que vous utilisez une adresse bien établie. Si Google ne connaît pas votre adresse, votre nouveau site ne le sera pas non plus.
  12. Accédez à admin/structure/views/addet créez une nouvelle vue avec les informations suivantes

    • Afficher le nom: Recherche par proximité> Description: affiche les emplacements géocodés sur une carte dynamique pour que les utilisateurs puissent effectuer des recherches de proximité. > Afficher: Contenu de type: Emplacement trié par: Non trié> Continuer et modifier
  13. Ajoutez les champs suivants et conservez leurs valeurs par défaut, sauf indication contraire:

    1. Contenu: Titre > Cocher Créer une étiquette: "Titre"
    2. Contenu: Adresse (Adresse)
    3. Contenu: Geofield (Geofield)> Exclure de l'affichage
    4. Proximité: Distance (Distance)
  14. Ajoutez les critères de filtre suivants aux critères existants:

    • Contenu: Publié (Oui) et
    • Contenu: Type (= emplacement)
    • Proximité: Grand cercle (exposé)> Exposez ce filtre aux visiteurs pour leur permettre de le changer> Libellé: Proximité> ajoutez "10" au champ Valeur> Déverrouillez l'unité de mesure> Déverrouillez l'emplacement
  15. En-tête > Global: zone de texte> Afficher même si la vue n'a pas de résultat

    • "Trouvez un emplacement près de chez vous. Vous pouvez effectuer une recherche en utilisant votre ville, province / état ou un code postal / zip."
  16. Aucun comportement de résultat > Global: zone de texte et ajoutez ce qui suit:

    • "Désolé, aucun résultat n'a été trouvé.
      1.) Vérifiez l'exactitude de votre code postal / postal
      2.) Vérifiez l'orthographe de votre ville, province ou état
      3.) Augmentez la distance de proximité"
  17. Soumettre le texte du bouton : Rechercher

  18. Ajouter un nouvel affichage: " Superposition de données OpenLayers "

  19. Format :

    • Paramètres> Appliquer ces couches ouvertes (remplacer)> Sources de données cartographiques: WKT> Champ WKT: Champ géographique> Champ de description>> Appliquer (cet affichage)
  20. Enregistrez la vue

  21. Aller à admin/structure/openlayers/maps

  22. Cloner la carte par défaut

  23. Informations générales> Nom: location_map. Titre: Carte de localisation> Carte Description: Il s'agit de la carte de localisation par défaut.

  24. Calque et styles> Calques de superposition (sélectionnez la vue que nous venons de créer) Emplacements "Activé" "Activé" Faites de même pour l'espace réservé pour Geofield Formatter

  25. Comportements> Pop Up (devez revenir et "Sélectionner le calque auquel appliquer les popups." Plus tard)> Zoomer sur le calque "Sélectionner le calque sur lequel zoomer lorsque la carte est chargée" > Niveau de zoom du point: 20 ****

  26. Enregistrez la carte

  27. Revenez à la vue que nous venons de créer

    • admin/structure/views/view/proximity_search/edit
  28. Ajouter un affichage "Page"

    • Chemin: /locator
    • Format: OpenLayers Map> Appliquer (cet affichage)> Map: Emplacements Map (Celui que nous venons de créer dans OpenLayers)> Apply
  29. Enregistrez la vue (nous devrions maintenant voir notre carte dans le volet d'aperçu au bas de notre vue, avec tout contenu de test

  30. Ajouter un affichage: "pièce jointe"

    • Format: Tableau> Appliquer (cet affichage)
    • Joindre à: Page
    • Hériter des filtres exposés: Oui
    • Supprimer l'en-tête> Global: zone de texte> Appliquer (cet affichage)
    • Éléments à afficher: afficher un nombre spécifié d'éléments | 5 éléments
    • Hériter du téléavertisseur: Oui
    • Pageur de rendu: Oui
  31. Enregistrer la vue

  32. Comportements> Pop Up> Calques> proximite_search_openlayers_1 (La vue Openlayers map que nous venons de créer)

  33. Zoom sur la couche> Zoom sur l'étendue d'une couche donnée lors du chargement de la carte. >proximity_search_openlayers_1

  34. Revenez à admin/structure/types/manage/location/display> cliquez sur l'icône d'engrenage et modifiez le préréglage des couches ouvertes sur la carte de localisation que nous venons de créer> Mettre à jour> Enregistrer

Voila! Terminé


1
votre réponse est si détaillée que je veux vous offrir une prime et la récompenser automatiquement: D Je vais essayer les étapes maintenant et vous expliquer comment cela a fonctionné
F1234k

Ce n'est pas seulement une réponse, c'est un tutoriel :)
Codium

+1, mais il est important de noter que cette ol_locatorfonctionnalité peut être boguée avec les nouvelles versions de modules, et qu'il n'y a aucune restriction de numéro de version. Je l'ai vécu (malheureusement). Mais votre réponse est vraiment bien détaillée.
Sk8erPeter

Si le module est bogué, veuillez le poster dans la file d'attente des problèmes de mon module avec exactement ce qui ne fonctionne pas (détails complets). Je n'ai aucun problème à résoudre les problèmes, mais je dois les connaître. :)

Je viens de tester OpenLayers Locator et cela fonctionne très bien et comme annoncé. Merci @nicoz.
Nigel Waters

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.