Utilisation de Gmap

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 !

#

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.

#

Du coup, il n’existe aucun moyen pr localiser sur une carte google des éléments dont on aurait renseigné uniquement l’adresse ?

#

Il en existe, mais pas avec le module Gmap (ou un autre module Drupal).

Vincent

Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.

#

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 :

  • détection de l’adresse IP
  • voir dans une base de données renseignée à quelle pays, ville etc. renvoi l’IP
  • renvoi d’un contenu en fonction de la localité (message, carte, page etc.)

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 ??

#
#

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é !

#

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 ?

#

Adresse postale

Merci

#

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&amp;v=2&amp;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...

#

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

#

Je pense que ce système peut être appliqué à ton cas, à 2 conditions :

  • que l’auteur de la node te donne son adresse (ce qui est possible si tu as 4 ou 5 auteurs, mais plus délicat si ce sont des auteurs plus nombreux comme sur ce site)
  • 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…)

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).

#

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

#

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…

#

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

#

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…

#

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 !

#

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…

#

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.

#

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 !

#

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/

#

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

#

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.

#

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 ?

#

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

#

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

#

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

Syndiquer le contenu