Skip to main content Help Control Panel

Login   A+   A-

Community «   Le forum «   Nouvelles fonctions «  

Répartition géographique

avatarMoi-même -- on May 30 2006, from Entre chaise et clavier...
yacs-team.png Yacs team - Modérateur
Localisation graphique via un service tiers
Bonjour,
prenons pour exemple local.google.com

Il y a un internaute qui a pondu une agrégation de données google pour une application de forum qui s'appelle punBB :
  • ...chaque membre du forum ayant renseigné sa localisation géographique se voit assigné une étiquette sur une carte continentale via son profil,
  • ...et tout visiteur peut générer ce même type de carte pour l'ensemble de la communauté du forum, ce qui donne une carte planétaire.
Des exemples vous seront plus parlant :
  1. Exemple avec tous les utilisateurs
  2. Exemple d'une carte individuelle via le profil

... l'interêt ? dans un usage collectif de yacs avec une communauté dont on est sûr de sa nature internationale. Là j'entends spécifiquement un interêt pragmatique. Imaginons que cet usage collectif concerne un regroupement virtuel d'individu autour d'un évènement auquel est dédié le projet du site, que cet évènement génrère des déplacement internationaux et toutes problématiques collatérales : covoiturage pour s'y rendre par exemple, ou retrouvailles post-évènement via une simple fonction géographique telle que celle-ci.
On peut imaginer aussi un interêt ludique dans le cas d'autres usage de yacs. Par exemple ici, il serait intéressant d'avoir d'un seul coup d'oeil une vue d'ensemble de tout usager inscrit au site, sachant qu'il est déjà international avec deux langues d'usage. Mais plus que ludique.... et si un jour il nous prenait l'envie d'organiser une rencontre (inter)nationale de yacsiennes et yacsiens addict !!?

Comments

Agnès on May 31 2006
Puisque tu ouvres le débat, j'y vais de ma pierre à l'édifice.

J'adhère à cette idée de carte collective, et au-delà, ce que j'aimerai avoir, c'est une carte qui sache s'adapter à une échelle qu'on lui donnerai : je travaille sur du portail collaboratif à l'échelle d'un territoire de vie (donc environ 60km d'un bout à l'autre), et ça m'intéresserai d'avoir une carte collective sur cette échelle là.

Puisque notre information est dédiée au local, la carte permettrait de situer cela au local également.

Je suis pas sûre de rêver, parce que les cartes (relativement) détaillées existent déjà. Serait-ce compliqué à implémenter dans Yacs ?


Agnès
Il n'y a pas de problèmes, que des solutions.
GnapZ on May 31 2006
Agnès : Je vais jetter un oeil à tout cela, ça serait un "+" pour ceux qui ont des communeautés, quelles que soient les zones géographiques à couvrir.
  • Geoloc est un service de statistiques et n'est pas très clair au niveau des droits et de la license.
  • GoogleMaps est plus orienté sur un service simple et pourrait mieux convenir


Dans les 2 cas, cela nécessite une inscription préalable donc si on prends en charge ce type de service avec Yacs, se sera à chacun de s'y inscrire, à l'image des messageries instantanées.

De par ce fait, cela ne peut être une fonction en soit mais un plus qui pourrait être géré si présent (comme pour les gravatars).

A étudier.
Bernard on May 31 2006
On y pense, on y pense. Comme l'a dit GnapZ, ceci nécessite une inscription préalable.
Moi-meme on June 2 2006
Si on imagine une évolution d'un service déjà existant sur yacs, "l'emplacement", on peut peut-être envisager quelque chose de plus simple dans un premier temps et se passer de gogol. Exemple : le profil de gnapz, où l'on voit, comme pour des emplacements liés à des articles, une carte générée dynamiquement via de simples coordonnées latitude/longitude.
Serait-ce compliqué d'utiliser la même chose en générant une carte générale d'utilisateurs, avec les même points rouges sur toute une surface continentale ou planétaire en récupérant les données de profil utilisateurs ?
Tof on June 2 2006
Moi-meme :

Bonne idée !


Tof
GnapZ on June 2 2006
Tof : Oui, j'avais aussi pensé à cette idée mais dans ce cas nous avons 2 problèmes:
  • La carte est trop petite et fixe.
  • 95% des utilisateurs sont en France ! Il faut alors soit une carte mondiale énorme, soit avoir la fonction de zoom.


En attendant, la carte existante pourrait s'afficher sur la liste des membres et les pointer dessus mias il ne va y avoir que 2 points .
Agnès on June 2 2006
GnapZ : Disons trois, allez Mais est-ce qu'on peut aller chercher d'autres cartes et faire pointer les utilisateurs dessus ?

J'en reviends à mon bout de vallée entre quelques chaines de montagnes. Chez nous, la carte du monde, c'est 1 point d'assuré, et sans grand intérêt (à moins que les touristes du monde eeeeentier s'y mettent aussi !).

C'est quoi le système actuel ?


Agnès
Il n'y a pas de problèmes, que des solutions.
Moi-meme on Feb. 20 2007
" Tof : Oui, j'avais aussi pensé à cette idée mais dans ce cas nous avons 2 problèmes: - La carte est trop petite et fixe. - 95% des utilisateurs sont en France ! Il faut alors soit une carte mondiale énorme, soit avoir la fonction de zoom. En attendant, la carte existante pourrait s'afficher sur la liste des membres et les pointer dessus mias il ne va y avoir que 2 points . "


GnapZ, serait-il possible d'avoir quelques indications de la façon avec laquelle tu t'y serais pris pour adopter cette option ?
J'avoues que je ne peux pas attendre, donc je mettrai bien les mains dans le cambouis.

L'heure de yacs est à autre chose en ce moment...
Moi-meme on Mar. 5 2007
Agnès : il y a un autre service (gratuit) de géolocalisation qui répondrait en partie à ton désir de régionaliser. C'est mappemonde.net : on peut choisir d'ouvrir la carte de manière mondiale, continentale, nationale...

Pour l'intégration dans le profil du yacsien, apparemment il existe déjà un mod pour les forum phpBB permettant de le faire dès l'inscription au forum, quelque chose adaptable à mon avis au mode d'enregistrement sur un système yacs. Quelques infos de plus...
Par ailleurs, ça nécessite quand même que la carte ait déjà été ouverte sur mappemonde, c'est à dire qu'elle doit exister pour qu'un utilisateurs puisse s'y inscrire depuis un CMS. Au fond, c'est pas si différent que de proposer d'utiliser gravatar sur yacs, il faut aussi qu'il y ait déjà eu un contact d'usage entre gravatar et l'usager nouvellement enregistré.
GnapZ on Mar. 5 2007
Moi-meme : Trop long à expliquer pour GoogleMaps, je trouve la dernière proposition plus simple. D'ailleurs, avant intégration, voici un exemple de ce que ça pourra donner (hors yacs pour l'instant) en se basant sur les 5 premiers utilisateurs de la liste des membres : Yacs Members Map
Moi-meme on May 2 2007

Bonjour,

je déterre tout ça parce que le mapping google a beaucoup évolué...

Voyez par exemple ce qu'on peut envisager dans une relation php/mySQL

On peut imaginer maintenant que, sur le même modèle d'usage que permet la géolocalisation individuelle dans les profils de chacun, l'API google dont la clef serait détenue par l'associé principal du site serve une carte dynamique basée sur les infos usagers.

Au final, ce que chacun aura bien voulu renseigner au sein de son profil en terme de localisation géographique produira une belle carte naviguable, satellisable, zoomable, collective et gratuite.

(bonus : obtenir une API key google est gratuit et la bestiole se nourrit de vrais bouts d'ajax, entre autres, mais surtout exploite l'intégration javascript, si facile avec yacs...)


GnapZ on May 2 2007
Tout à fait d'accord. J'avais démarré avec la mise en place des fonctions de l'api basées sur gmap2. Ca marche effectivement pas trop mal.

Mon problème est plus au niveau de l'intégration des données des utilisateurs car cela revient à créer des marqueurs javascript contenant toute la liste des utilisateurs.

A quel endroit et comment rappatrier ces infos ? lors de la création de la carte ? dans un fichier xml chargé en Ajax ? Quelles requêtes Sql établir sachant que les champs actuels ne correspondent pas aux données attendues par les marqueurs gmap2 ?

Je ne sais pas trop bien m'y prendre avec tout ça mais c'est effectivement faisable. Il faudra peut-être revoir les champs de localisation de Yacs pour les adapter.

Tout commence par un script à placer dans la zone HEAD:
<script
    src
="http://maps.google.com/maps?file=api&amp;v=2&amp;key=La_Cle_GoogleMap"
      
type="text/javascript"></script>
    <script type="text/javascript">

    //<![CDATA[

    function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
      }
    }

    //]]>
    </script>

Cela crée une carte centrée sur la france. Le chargement se fait sur la balise BODY avec onload="load()" onunload="GUnload()".

L'appel de la carte se fait par un simple DIV qui peut donc se trouver dans n'importe quelle page avec
<div id="map" style="width: 500px; height: 300px"></div>

Le style peut bien sûr se faire dans le fichier CSS du skin avec l'ID "map".
Moi-meme on May 2 2007

Effectivemment, l'astuce php/sql donnée chez les développeurs geek de l'API attend des entrées précises dans une table qui n'est pas celle de yacs, je n'y avais pas pensé.

Du coup ça demande un remodelage quelque part. Peut-être simplement ajouter un champ "localisez-vous pour notre carte map" dans le profil des users, avec une donnée qui serait exceptionnellement enregistrées dans une autre table que celle actuelle, et dédiée à la google map. Ca demanderait de créer une table supplémentaire et donc on imagine que cette fonction, n'intéressant pas tout le monde, devrait être laissée au choix par l'associé dans le panneau de configuration à l'item "Utilisateurs".

On peut aussi imaginer que cette map soit plutôt liée à l'overlay contact, et que les entrées des coordonnées de l'adresse postale soient récupérées pour la google map ?


GnapZ on May 2 2007
Moi-meme :

Pas évident effectivement. Comme gMap nécessite l'inscription chez Google pour avoir une clé Map pour chaque site, tous les utilisateurs de Yacs n'autont pas forcément envie de faire la démarche.

Donc une table spécifique ne sara pas forcément utilisée. Il n'est alors pas possible de remplacer la gestion actuelle.

Une autre méthode serait d'utiliser un service externe comme mon essai chez mapmonde.net mais ce n'est plus dans l'optique d'intégration de Yacs.

Par contre, pour ceux qui ont fait la démarche d'obtenir une clé, ton idée d'overlay me fait penser qu'on pourrait plus facilement développer un overlay dédié à cette carte !

Ainsi, en y renseignant la clé, la position de centrage et le niveau de zoom, l'overlay pourrait très bien générer les marqueurs des utilisateurs inscrits ... s'ils ont rensigné leur position.

... position qui n'est pas forcément compatible avec le système de géoposition de gMap ...

Tout un programme ...
Moi-meme on May 2 2007

C'est vrai que ça demande une formalité externe de plus à l'administrateur, et ce n'est pas tout à fait la philosophie du panneau de config, même s'il existe des outils qui le demandent (comme le de partager des données avec un autre serveur, et donc d'en avoir un autre)

Pour mappemonde, rendons grâce au développeur, c'est gratuit et plutôt bien ficelé. Mais c'est externe (à part pour les données si on l'intègre dans phpBB), et puis il faut bien avouer que la naviguation map c'est un autre niveau de confort et je dirais je ludicité.

Je crois aussi que l'idée d'un overlay semble la plus attachante à tout points de vue, puisque non intrusive pour le panneau de config, et surtout si j'ai bien compris un overlay est capable de partager ses données avec d'autres tables...

Vraiment, ça serait un sacré plus autant pour ceux que ça intéresse que pour une assise supplémentaire de la vélocité yacsienne. Ce cms faisant une belle part au principe de communauté d'usagers, la géolocalisation n'est pas toujours un gadget pour certaine. Je pense aux covoitureurs par exemple.

Tiens d'ailleurs ça me donne une autre idée d'overlay... bionic

Question : ton code dans le <head>, tu l'as inséré dans quel fichier php ?


GnapZ on May 2 2007
Moi-meme :

Pour éviter de toucher aux scripts, je l'ai inséré dans le champ HEAD des méta-informations de rendu visuel. Cette zone est idéale pour ce genre de script.
Moi-meme on May 2 2007

Ah oui... j'oublies trop souvent que yacs permet de personnaliser finement sans forcément toucher au cambouis bionic

Merci


Agnès on May 3 2007
GnapZ, Moi-même : je suis avec toujours autant d'intérêt cette discussion. Là où on en est aujourd'hui, j'aimerai bien tester ça. Est-ce que l'un de vous pourrai faire une petite "marche à suivre pour les newbies comme moi" ? (Oh, s'il vous plaît...) Merci
-----
Agnès
Il n'y a pas de problèmes, que des solutions.
Moi-meme on May 3 2007

Jusque là tout est gratuit; mais attention à une clef API correspond un seule domaine possible pour l'utiliser (puisque tu vas t'amuser à intégrer une carte sur un site)

Ensuite,

  • La doc sera une aide précieuse pour les premiers pas (gogole ne fait pas de support), avec ses exemples. En gros basiquement tu dois trouver un endroit dans ton cms pour insérer le code fourni par gogol (Gnapz le met dans "l'en-tête" panneau de config), ensuite ilm n'y plus qu'à insérer dans le corps d'une page le javascript, plus ou moins élabroé selon le rendu souhaité.
  • (pour aller plus loin, développement doc)

Basiquement ça donnera un head comme ça :

<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 StrictEN"
"http:www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http:
www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<script src="http:TON_SOMAINE/REPERTOIRE/map?file=api&amp;v=2"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[

function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
}
}

//]]>
</script>
</head>

et un BODY ainsi :

<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 300px"></div>
</body>

Il reste des groupes de discussions assez actifs pour se faire aider (ou aider) :

En espérant que ce sera utile.


Bernard on May 6 2007
Moi-meme: super le tutoriel fourni par Google. Je pense que ceci va accélérer le processus d'intégration à YACS, tout ça ...
Moi-meme on May 6 2007

Aaaaah... Je n'en attendais pas moins du maître des lieux

Content que ça ressemble à une adoption. Mine de rien, ça rassure comme approbation.


Moi-meme on May 8 2007

J'ai quand même du mal à trouver un moyen pour intégrer l'appel au chargement de la page (body) :

onload="load()" onunload="GUnload()".


GnapZ on May 8 2007
Moi-meme :

Il faut recopier la fonction body() de page.php vers skin.php. Modifier la balise Body et faire appel à Skin::body() dans le template.
Moi-meme on May 11 2007

Merci

Va bien falloir un jour que je mette sérieusement les mains dans les fonctions de ce fichier. Pour le moment mes exépriences n'étaient pas motivantes

Notez une nouvelle info que je découvre : on peut peut-être se passer d'un partage d'enregistrement entre tables de données, puisque le API googlemap supporte très bien le parsing xml semble-t-il.

Si j'ai bien compris l'aide gogol, il suffirait pour nous que la localisation des utilisateurs (donnée du profil) soit contenue dans un fichier data.xml : un marqueur est alors crée pour chaque coordonnée enregistrée, et roule ma poule ...

Curieux que vous jetiez un oeil technique à ça et me donniez votre impression...


Bernard on May 13 2007
Allez, séquence démo de la toute nouvelle version 7.5alpha13 :

-  l'index des usagers dispose d'une nouvelle commande pour cartographier tout le monde sur Google

-  dans ma fiche, l'image dynamique est remplacée par un vrai appel à Google maps.

-  Pour activer tout ça, il faut, à partir de 7.3alpha13, passer par le panneau de configuration des services web pour indiquer sa clé Google. Et c'est tout ...
Moi-meme on May 14 2007

yippee


Moi-meme on May 19 2007

Question Bernard : est-ce qu'on peut ensuite déplacer à volonté la carte ? Je veux dire, elle est actuellement disponible depuis une commande dans le panneau des usagers, mais si l'on souhaite la présenter plus efficacement dans un article dédié ou sur la couverture de l'accueil ?


Bernard on May 24 2007
Moi-meme: c'est le code [location=xxx] qui est traduit en carte, donc tu peux en mettre où tu veux. La preuve :

Loading...

Moi-meme on May 24 2007

Bernard : oups, je voulais dire 'la carte générale' des usagers... A-t-elle aussi un code associé ?


Bernard on May 27 2007
Moi-meme: pas de code, mais seulement un lien à ce jour locations/map_on_google.php?all=users

A quoi penses-tu pour ce nouveau besoin ?
Moi-meme on May 28 2007

Merci

Et bien je pensais simplement à exporter une telle carte dans une section quelconque, qu'elle ne soit pas simplement condamnée à la page index des membres. On peut par exemple imaginer qu'elle soit utile dans une section qui ait besoin d'approfondir ou de discuter de notions sur la communauté.


Fernand on May 30 2007
Je ne comprend pas. J'habite à Paris, mais la place est déjà prise (sur la carte Google) par Bernard. Je me suis donc mis à Londres (parce que j'aime bien ce coin) et que j'ai une facheuse tendance cyclique à avoir envie d'y habiter. C'est en attendant... Mais si un vrai londonnien débarque dans la communauté ?
J'ai vu que pour Tof et Agnès qui habitent aussi la même ville, ça fait doublon. Il n'y en a donc qu'un seul d'entre-eux qui apparaît sur la carte -sans doute le premier inscrit.
Bon, j'ai essayé de me mettre près de Paris dans une petite ville à quelques kilomètres: même problème.
Je pourrais aussi bien taxer New-York ou Rio. Tiens, oui, Rio, c'est une idée !
Agnès on May 30 2007
Fernand, j'ai revu les coordonnées de mon emplacement, en prenant soin de mettre légèrement différent de Tof. Mais j'avoue que ça ne change absolument rien : j'suis pas sur la carte
-----
Agnès
Il n'y a pas de problèmes, que des solutions.
Fernand on May 30 2007
Agnès : Confirmation... J'ai donc été obligé de m'accaparer (momentanément) Londres. Mais, qui sait ? Je vais peut-être me trouver obligé d'aller y habiter
Même en me mettant dans des villes à côté de Paris, ça ne fonctionne pas.
La tolérance des coordonnées latitude longitude est svraisemblablement réglable. Autrement il ne pourrait pas y avoir plus d'un membre par lieu... Et pour les grandes villes, ça ferait d'autant plus désordre...

GnapZ on May 30 2007
Agnès, Fernand: Je ne vous suit pas là. Agnès tu es bien présente à côté de Tof, il suffit de zoomer sur la carte et on vous voit bien distinctement. De plus vous avez bien vos deux lieux dans la liste (mêmes noms).

Je viens de modifier le miens pour me mettre proche de vous deux et effectivement, je ne me vois pas. Je vais voir 2-3 trucs (fermer/ouvrir la session, caches, etc).
GnapZ on May 30 2007
Supprimez simplement vos cookies (Yetanozer) ... et hop !
GnapZ on May 30 2007
Et éventuellement ceux de Google si ça ne suffit pas. Par contre, videz le cache du navigateur (au moins pour la page de la carte) pour que ça fonctionne bien.
Agnès on May 30 2007
Cache navigateur vidé à suffit

Pour voir les deux goncelinois toutefois, faut descendre assez bas dans la précision. Mais c'est OK

chouette !
-----
Agnès
Il n'y a pas de problèmes, que des solutions.
GnapZ on May 30 2007
Agnès : Content ! Si vous faites une modif il faudra tout de même supprimer les cookies car le cache ne suffira pas (testé sur Ff).
Bernard on May 31 2007
Il est donc naturel de penser que, vus de loin, Agnès et Tof ne font qu'un..
GnapZ on June 1 2007
Agnof ou Tagnès (facile et de mauvais goût) ? out
Bernard on June 4 2007
Pour répondre à une requête précédente de Moi-meme, il faudrait ajouter le code [location=users] pour cartographier les membres d'une communauté YACS à peu près dans n'importe quelle page, non ?
Moi-meme on June 5 2007

Tout à fait ! Je ne saurais pas proposer mieux


Bernard on June 17 2007
Bon ben alors voilà

Loading...

Moi-meme on June 30 2007

râââââ les bouts de php et le switch entre les éditeurs et le switch avec la source et tout, c'est pas encore ça dans yacs

bon je recommence

2 sec


Moi-meme on June 30 2007

mais quelle tarte je fais...

j'ai essayé d'intégrer une map google sur un yacs qui n'a pas le fonction de location=user telle qu'implémentée dans les nouvelles versions depuis le début de ce topic, et connement par paresse j'ai recopié le code de gnapz dans ce commentaire, puis changé par ma clef bien sûr. Rien, pas de carte. En fait il manque les // dans le http:// de la clef dans le code de gnapz ! Ca risquait pas d'arriver tout seul.

Par contre tout ça mérite un topic si on veut implémenter ses jolies petites cartes, en dehors du location=user. Je veux bien m'y coller, mais j'ai un petit doute.

En gros ma manip a été :

  • Copie du contenu HEAD dans les méta informations du rendu visuel
  • Dans skins/page.php, copier toute la function body()
  • La coller dans skins/mon_skin/skin.php à la fin

Déjà là j'étais pas sûr de devoir copier plutôt couper le morceau de page.php. Pour pas faire de redondance et rester cohérent j'ai fini par couper.

  • ajouter l'appel sur le corps de page, onload (*voir plus bas)


  • Enfin dans skin/mon_skin/template.php faire appel à cette fonction qui n'est plus dans page.php mais skin.php, donc remplacer Page::body() par Skin::body()
  • Et puis intégrer le bout de html dans une page de test.

J'ai bon ?

 

*Alors là où j'ai mis du temps, c'est trouver la bonne place pour l'appel au chargment du body : onload="load()" onunload="GUnload()"

Dans skin.php, fonction body(), je l'ai mis là :

// start the body
        echo '<body'.$id.$class.' onload="load()" onunload="GUnload()">'."\n";

Oui ..?


Moi-meme on June 30 2007

Tant pis pour ma mise en forme italique et tout.

Sinon une démo par là, avec en prime une récupération marqueurs issue d'un data.xml

C'est vrai que c'est pas drôle la syntaxe ggmap, voire sinistre, mais les possibilités sont très vastes..


GnapZ on June 30 2007
Moi-meme : Oui, tout semble bon mais pourquoi tant de peine alors que c'est intégré dans les dernières versions ? Il suffit de rentrer la clé gMap et d'ajouter un emplacement. Cet emplacement est alors utilisable dans n'importe quel article avec [ location=No ].

On peut alors créer des cartes sur n'importe quoi d'autre que les utilisateurs. [ location = users ] est une carte dynamique créée à partir de la table des utliisateurs.
Moi-meme on June 30 2007

GnapZ : je n'ai tout simplement pas mis à jour une v6.12. Eternel problème de mettre à jour tout un système pour lui conférer juste une faculté de plus...


Moi-meme on Nov. 13 2007

" Pour voir les deux goncelinois toutefois, faut descendre assez bas dans la précision. Mais c'est OK chouette ! "

Bernard, apparemment une solution a été fourni par un geek à propos du problème qu'évoque Agnès (des marqueurs se chevauchent pour une même destination) : markers too close together - not anymore !

Qu'en penses-tu pour le futur de notre fonction gmap ?...

Par ailleurs j'informe qu'un nouvel article sur les API et PHP est sorti, intéressant aussi pour yacs...

(encore plus d'infos ?)


-----
Yacs.Info : l'atelier ordinaire des innovations

***** 5 rates
Posted by Moi-meme on May 30 2006, commented by Moi-meme on Jan. 26, (popular)