Catégories:
Bonjour,
J’ai installé le module de Géolocalisation GMAP mais n’arrive pas à comprendre son utilisation.
J’ai créé un type de contenu spécial et ce contenu, j’aimerais le localiser directement sur la page ou avec un lien, grace à son adresse géographique.
Comment puis-je faire ? Et existe t-il un tutoriel de GMap ? Je n’en ai pas trouvé….
Merci et encore bravo pour votre travail !
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Ce n’est pas tout à fait ce que le module Gmap propose. En fait, pour générer une carte Google, Gmap a besoin de la latitude et la longitude (que tu peux récupérer sur un site comme maporama.fr en saisissant l’adresse cherchée).
Vincent
Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.
drupalfrance
1772
Du coup, il n’existe aucun moyen pr localiser sur une carte google des éléments dont on aurait renseigné uniquement l’adresse ?
sivasamba
37
Il en existe, mais pas avec le module Gmap (ou un autre module Drupal).
Vincent
Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.
drupalfrance
1772
Peut être que c’est à creuser cette histoire de géolocalisation, j’ai fais des recherches sur Google, et j’ai cru comprendre que le fonctionnement est le suivant :
Pour créer le module, un peu de PHP, rien de méchant, le plus dur, c’est de trouver une base de données renseignée (et gratuite !)…
Une idée ??
Olivier17
60
Une piste ici :
http://www.bonvga.net/google_earth
kalis1@drupal.org
112
Je crois qu’il y a un malentendu…
Je parlais d’un contenu et non pas d’un visiteur…
Par exemple, 1) j’aimerais rentrer l’adresse de certaines personnes et les retrouver sur une carte directement sur la page de leur profil..
2) Avoir une carte toute seule sur une autre page qui me permet par exemple de voir ttes les personnes…. avec si possible la possibilité de faire des filtres sur ces personnes pour choisir d’en afficher certains…
Est ce plus clair ?
Merci en tout cas pr votre aide et votre réactivité !
sivasamba
37
Merci kalis1 pour ce lien, c’est intéressant (même s’il n’y a apparemment pas de solution miracle : il faut payer pour avoir un base précise).
Sivasamba, quand tu dis «rentrer l’adresse de certaines personnes», tu parles d’une IP ou adresse postale ?
Olivier17
60
Adresse postale
Merci
sivasamba
37
Le module Gmap te permets de faire ça...
Installe-le et configure-le, puis avec un script de ce genre, tu peux afficher ton adresse sur une carte Google :
<html>
<head>
<script src="http://maps.google.com/maps?file=api&v=2&key="123456789"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(46.152694, -1.154659), 16);
}
}
//]]>
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 300px"></div>
</body>
</html>
Tu remplaces la clé "123456789" de mon exemple par la clé que Google t'as donné et "46.152694, -1.154659" par les coordonnées géographiques de ton adresse postale...
Olivier17
60
Merci.. C’est une piste intéressante mais c’est une solution uniquement pour une adresse postale rentrée en dure non ?
Moi j’aimerais que cette carte s’adapte en fonction de l’adresse de la node… chaque node aura une adresse…
Merci beaucoup en tout cas
sivasamba
37
Je pense que ce système peut être appliqué à ton cas, à 2 conditions :
Avec ça, tu te montes une petite base de données et le script qui va avec, pas compliqué…
Sinon, tu as le choix de payer l’abonnement à des bases de données pour la géolocalisation ; tu pourras faire ce que tu veux, mais c’est payant (sauf si tu ne cherches qu’à afficher le pays d’origine).
Olivier17
60
C’est bien ce que je pensais…
Je pense que je vais m’orienter ta 2eme solution :
- que tu fasses toi même la démarche de chercher la latitude et la longitude correspondant à leurs adresses postale (c’est gratuit, pas compliqué, mais c’est le coup de le faire quoi…)
Du coup, je vais utiliser ton script avec les bonnes latitudes et longitudes…
en revanche tu peux m’expliquer le :
«Avec ça, tu te montes une petite base de données et le script qui va avec, pas compliqué…»
Merci beaucoup… J’avance doucement mais surement
sivasamba
37
Bah tu peux faire une table ‘geo’ dans ta base de données qui va contenir :
- nom (de l’auteur)
- prénom
- pseudo
- adresse
- code_postal
- ville
- pays
- latitude
- longitude
Et après, un script PHP qui récupère le pseudo de l’auteur de ta node, et qui retourne l’inclut dans une requete SQL du type :
«SELECT latitude, longitude FROM geo WHERE pseudo = ‘la variable que tu as récupéré’
Et après, cette latitude et longitude, tu l’utilise pour ta carte Google…
Olivier17
60
Si tu as des problèmes avec l’utilisation de Gmap, il y a une doc assez bien faite :
http://www.google.com/apis/maps/documentation/#The_Basics
Olivier17
60
Le module Gmap ne fonctionne vraiment bien que couple au module «location» ou justement tu peux saisir ton adresse par contenu et qui apres affiche une carte avec ta ou tes «locations» pour ce contenu…
Aux denieres nouvelles il est pas encore supra stable et c un peu une usine a gaz, mais bon…
tostinni
1268
J’ai installé les 2 modules mais la localisation ne se fait pas en entrant uniquement l’adresse…
En regardant des forums US, j’ai pu voir que la localisation par adresse ne pouvait se faire que pour les USA et le canada.
Pour la France, la seule chose qui marche, c’est de rentrer «en dur» la latitude et la longitude dans les champs créés par la module «location».
Et dans ce cas là, ca marche.
Il n’existe donc aucun moyen aujourd’hui avec Drupal et pour la France de localiser des nodes juste avec leur adresse c ca ?
On est obligé de récupérer la latitude et la longitude ?
Merci beaucoup !
sivasamba
37
J’avoue que j’ai pas trop joue avec location justement car j’etais pas super fan, j’ai juste vu qu’il y avait une base des codes postaux francais qui trainait sur d.o
Ceci dit je suis vraiment pas fan du couple gmap+location c vraiment usine a gaz…
Ce que je faisais pour mon ti test c’etait de permettre la localisation en cliquant sur la carte pour le node du coup c plus simple et plus visuel a mon avis…
C qd meme bizarre que la localisation par adresse marche pas ds location…
tostinni
1268
C qd meme bizarre que la localisation par adresse marche pas ds location…
Ouaip. En même temps, c’est pas trivial. Il peut y avoir des fautes de frappes dans l’adresse ou des ambiguités, il arrive que le géolocaliseur de Google renvoie plusieurs propositions, etc. Ce sont autant de cas de figures qui devraient être pris en charge par le module si on veut qu’il implémente cette fonctionnalité.
Vincent
Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.
drupalfrance
1772
Bonjour…
Est ce que quelqu’un pourrait m’indiquer un vrai tutoriel pour véritablement être en mesure de placer manuellement ou automatiquement chaque node sur une carte et surtout que cette carte apparraissent sur la node…
merci beaucoup pour votre aide !
sivasamba
37
Le lien que je t’ai proposé précédemment ne te satisfait pas ?
Perso, j’ai uniquement utilisé cette doc, et j’y suis arrivé…
http://www.google.com/apis/maps/documentation/
Olivier17
60
Je pense que avec le module localisation + gmap ça doit être possible de le faire avec un poil de javascript.
En gros tu active la localisation pour le contenu (ou les utilisateur) que tu veux géolocaliser. Ensuite si gmap est activé tu pourra renseigner la long/lat via une map google (je pense que tu as déjà vu ça…). Le seul truc qui te reste à faire c’est via du javascript lorsque l’utilisateur renseigne le champs «pays» par exemple recentrer la carte sur ce pays.
J’ai posté le bug ici : http://drupal.org/node/213789
http://cloud33.com & http://listentothis.net
gagarine
220
Moi je cherche le moyen de créer un formulaire comme celui que l’on peut voir ici http://drupalfr.org/node/3240 .
Pour la France le code INSEE est impératif.
MDKDO
66
Personnellement j’ai testé GMAP + Location et il me semble que cela marche très bien.
J’ai crée un contenu spécifique, j’y ai inclus le formulaire de location avec les champs rue, ville, …
Lorsque l’on crée un nouveau contenu, je rentre mon adresse et sauvegarde le noeud. Le module me calcule automatique la latitude et la longitude du noeud.
On peut ensuite aller directement dans la vue node location map qui va afficher tous les noeuds qui ont des informations cartographiques.
Ou alors créer un bloc qui va afficher la carte lorsque l’on va visualiser le noeud.
Ou alors créer un panel qui affiche les info du noeud avec une jolie carte.
C’est cela que vous voulez faire ?
Alexandre Eisenchteter
www.ineation.com
www.twitter.com/ineation
ineation
192
Oui je sais !
mais je veux contrôler l’orthographe des champs.
Le module location ne supporte pas les accents latins du genre :
Provence-Alpes-Côte d’Azur / Bouches du Rhône
et je veux également utiliser la classification (Taxonomy autocomplete) pour le champ ville et ne pas avoir :
Paris, paris, Paris 1, paris 1er, Paris 01,Paris 1 arrondissement
ou
Marseille, MARSEILLE NORD etc etc
MDKDO
66
si mettre les mainq dans le code ne te dérange pas, dans ce module, il y a des chose intéressantes : http://drupal.org/project/home
à partir de l'adresse renseignée dans un node spécifique, via l'API google, il récupère les longitudes et latitudes et les stocke en base.
pour les petits problèmes d'accents et d'autres choses, c'est que les adresses en france font preuve de plus de subtilités qu'aux usa. le module Home a aussi les mêmes problèmes d'accents et de problèmes de localisation.
Ce sont les champs 'AdministrativeAreaName' et 'SubAdministrativeAreaName' renvoyés parl'API de Google qui posent problème.
En gros, pour bien résoudre les adresses en France, il faut récupérer le champ "SubAdministrativeAreaName" à la place du champ "AdministrativeAreaName"
j'ai résolu (jusqu'à preuve du contraire ;-) ) le problème en modifiant le code. je l'avais posté sur le forum du module (pointhomes.com) mais le serveur du site s'est planté il y a quelques semaines.
s'il y en a que cela intéresse, voici mon code modifié qui appelle l'API Google:
function home_geocode($address, $return = 'll') {
$address = GetXMLTree(file_get_contents("http://maps.google.com/maps/geo?q=". urlencode($address) .
"&output=xml&key=". variable_get('google_site_key', '')));
/* geocoding error*/
if ($address['kml']['Response']['Status']['code'] != '200') {
return false;
}
$address = $address['kml']['Response']['Placemark'];
if (isset($address[0])) {
$address = $address[0];
}
$address['Point']['coordinates'] = explode(',', $address['Point']['coordinates']);
/*watchdog('homegallery', 'codeswitch= '. $return, WATCHDOG_WARNING);*/
switch ($return) {
case 'll':
return array($address['Point']['coordinates'][1], $address['Point']['coordinates'][0]);
break;
case 'full':
if (isset($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['DependentLocality']['DependentLocalityName']))
{
if (isset($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['DependentLocality']['Thoroughfare'])) {
/*watchdog('homegallery', 'dept1= '. $geocode['departement'], WATCHDOG_WARNING);*/
/*Prise en compte du cas des villes avec arrondissements*/
return array('address' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['DependentLocality']['Thoroughfare']['ThoroughfareName']),
'zipcode' => $address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['DependentLocality']['PostalCode']['PostalCodeNumber'],
'city' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['LocalityName']),
'state' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['AdministrativeAreaName']),
/*'departement' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['AdministrativeAreaName']['SubAdministrativeAreaName']),*/
'departement' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['SubAdministrativeAreaName']),
'country' => utf8_encode($address['AddressDetails']['Country']['CountryNameCode']),
'latitude' => $address['Point']['coordinates'][1],
'longitude' => $address['Point']['coordinates'][0]);
}
else {
/*watchdog('homegallery', 'depart2= '. $geocode['departement'], WATCHDOG_WARNING);
Prise en compte du cas des villes avec lieux-dits ou hameaux*/
return array('address' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['DependentLocality']['DependentLocalityName']),
'zipcode' => $address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['DependentLocality']['PostalCode']['PostalCodeNumber'],
'city' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['LocalityName']),
'state' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['AdministrativeAreaName']),
/*'departement' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['AdministrativeAreaName']['SubAdministrativeAreaName']),*/
'departement' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['SubAdministrativeAreaName']),
'country' => utf8_encode($address['AddressDetails']['Country']['CountryNameCode']),
'latitude' => $address['Point']['coordinates'][1],
'longitude' => $address['Point']['coordinates'][0]);
}
} else {
/*watchdog('homegallery', 'departement3= '. utf8_encode(print_r($address)), WATCHDOG_WARNING);*/
//
return array('address' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['Thoroughfare']['ThoroughfareName']),
'zipcode' => $address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['PostalCode']['PostalCodeNumber'],
'city' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['Locality']['LocalityName']),
'state' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['AdministrativeAreaName']),
/*'departement' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['AdministrativeAreaName']['SubAdministrativeAreaName']),*/
'departement' => utf8_encode($address['AddressDetails']['Country']['AdministrativeArea']['SubAdministrativeArea']['SubAdministrativeAreaName']),
'country' => utf8_encode($address['AddressDetails']['Country']['CountryNameCode']),
'latitude' => $address['Point']['coordinates'][1],
'longitude' => $address['Point']['coordinates'][0]);
}
break;
}
}
www.on-brade.com, les bonnes affaires près de chez vous
yogo2000
51
J’ai testé aussi, ça marche très bien sous Drupal 6.10 avec les modules Location (v3) et Gmap (v3).
Le bon tuto, en la matière, est là : http://groups.drupal.org/node/19614
LEKTUM : http://www.lektum.com/
TWITTER : http://twitter.com/atelierlektum
lektum
78