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.
Téléchargez et activez les modules suivants:
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
Accédez à admin/structure/types/add
et créez un nouveau type de contenu appelé " Location
"
Accédez à admin/structure/types/manage/location/fields
et ajoutez les champs suivants:
- Libellé: Adresse> Nom du champ: adresse> Type de champ: Adresse postale> Widget: Formulaire d'adresse dynamique
Sélectionnez les pays disponibles que vous préférez dans la liste. Laisser en blanc pour tous les autoriser.
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)
Label: Geofield> Nom du champ: geofield> Type de champ: Geofield> Widget: Géocodage d'un autre champ
Accédez à admin/structure/types/manage/ol_locator_location/display
et modifiez l' Default
affichage de Geofield:
- Étiquette: caché> Format: OpenLayers
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
Accédez à admin/structure/openlayers/layers/settings
et définissez les éléments suivants:
- Version de l'API Google Maps: v3.2
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.
Accédez à admin/structure/views/add
et 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
Ajoutez les champs suivants et conservez leurs valeurs par défaut, sauf indication contraire:
- Contenu: Titre > Cocher Créer une étiquette: "Titre"
- Contenu: Adresse (Adresse)
- Contenu: Geofield (Geofield)> Exclure de l'affichage
- Proximité: Distance (Distance)
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
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."
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é"
Soumettre le texte du bouton : Rechercher
Ajouter un nouvel affichage: " Superposition de données OpenLayers "
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)
Enregistrez la vue
Aller à admin/structure/openlayers/maps
Cloner la carte par défaut
Informations générales> Nom: location_map. Titre: Carte de localisation> Carte Description: Il s'agit de la carte de localisation par défaut.
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
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 ****
Enregistrez la carte
Revenez à la vue que nous venons de créer
admin/structure/views/view/proximity_search/edit
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
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
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
Enregistrer la vue
Comportements> Pop Up> Calques> proximite_search_openlayers_1 (La vue Openlayers map que nous venons de créer)
Zoom sur la couche> Zoom sur l'étendue d'une couche donnée lors du chargement de la carte. >proximity_search_openlayers_1
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
ol_locator
fonctionnalité 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.Utilisez un module google maps simple . C'est très simple et facile à utiliser.
la source