Spip : Plugin GIS + tracés kml sur carte

lundi 28 mai 2007

SPIP / plugin / GIS

Cet article explique comment ajouter des tracés issus de fichiers kml sur une carte google maps affichées par le plugin GIS pour Spip. Après avoir modifié le plugin GIS, il suffit de joindre un fichier kml à un article ou une rubrique pour afficher son tracé sur la carte.

Mise à jour du 10/06/2007

Cette fonctionnalité est maintenant intégrée au plugin GIS disponible sur la zone. Il est possible d’afficher le contenu d’un fichier kml sur la carte d’un article et sur la carte d’une rubrique (en attachant le fichier kml à l’article ou à la rubrique). Par contre, il faut toujours ajouter les fichiers kml à la table spip_type_documents de la base de données comme expliqué ci-dessous.

Introduction

Dans un billet précédent, j’indiquais la disponibilité du plugin GIS qui permet d’attacher des cartes google maps à des articles ou des rubriques d’un site sous SPIP. Lisez l’article de présentation sur spip-contrib pour en savoir plus sur ce plugin.

Après avoir "joué" avec le plugin pour découvrir son fonctionnement, j’ai eu besoin d’afficher des tracés sur les cartes d’un site de test. J’ai trouvé le moyen de le faire sur le très bon site de Mike Williams. Il suffit d’utiliser cette fonction dans le code qui génère la carte google maps :

var kml = new GGeoXml("http://mydomain.com/myfile.kml");
map.addOverlay(kml)

Application au plugin GIS

Ouvrir le fichier plugins/gis/inc-gis_map.html et ajouter ce code à la ligne 25 :

<BOUCLE_kml(documents){id_article?}{id_rubrique?}{0,1}{extension=kml}>
var kml = new GGeoXml("#URL_SITE_SPIP/#URL_DOCUMENT");
map.addOverlay(kml)
</BOUCLE_kml>

Cette boucle récupère l’url complète du fichier kml attaché à la rubrique ou à l’article sur lequel on veut afficher la carte.

Aider Spip à reconnaître les fichiers kml

Ensuite, il faut ajouter les fichiers kml à la table spip_type_documents pour pouvoir les télécharger sur le site sans qu’ils soient compressés dans un zip. En effet, si on télécharge un document non référencé dans cette table sur le site, spip le compresse automatiquement dans un zip pour des raisons de sécurité.

Pour ajouter les fichiers kml à la table spip_type_documents, connectez-vous à l’interface phpMyAdmin de votre hébergement. Ajoutez une ligne à la table avec ces informations :

  • id_type : laisser vide
  • titre : Google Earth Placemark
  • descriptif : laisser vide
  • extension : kml
  • mime_type : application/vnd.google-earth.kml+xml kml

Et voilà, c’est terminé ! Maintenant, vous pouvez joindre des fichiers kml à vos articles ou rubriques et ceux-ci seront affichés sur vos cartes de l’espace public.

Pour générer ce type de fichier, vous pouvez utiliser le site de google maps et cliquer sur l’onglet mes cartes. Après avoir dessiné les tracés sur votre carte, il faut cliquer sur le lien KML (en haut au-dessus de la carte) pour télécharger le fichier.

Vos commentaires

  • tom

    Bonjour,
    Je viens d’installer le plugin Gis et lorsque je veut le configurer il apparaît le messag d’erreur suivant : Erreur : Fichier inc/geomap_config introuvable.
    Je suis sous spip 1.9.2 avec le squellette beespip.

    Si vous avez une idée merci de vos réponses.

    Tom
    buch.tom05@gmail.com
    www.rando-hautesalpes.com

    1er juin 2007, 13:34

  • bb

    Bonjour Tom,

    Tu as peut-être oublié d’activer le plugin "Googlemaps API" qui est nécessaire au fonctionnement du plugin GIS.

    Lire le post sur spip-contrib

    1er juin 2007, 18:26

  • stéphan (Artlogic)

    Formidable !
    Merci pour cette info. Une petite question : Le plugin GIS affiche la carte en fonction d’une coordonnée passée dans l’URL et un zoom défini une fois pour toute. Sais-tu s’il est possible de lui faire afficher l’itinéraire en pleine carte de façon dynamique ? Suivant mes kml, mes itinéraires sont un peu hors carte.

    11 juin 2007, 20:38

  • bb

    Bonjour Stéphan,

    J’avais pensé à cette fonctionnalité quand j’essayais d’afficher des tracés kml sur mes cartes. J’ai déjà quelques pistes pour mettre cela en place, mais je n’y suis pas encore arrivé.

    Je ferai une mise à jour de l’article dès que cela sera possible. On peut en discuter sur l’irc de spip.

    A bientôt ++

    12 juin 2007, 09:56

  • opopop

    Bonjour Bruno,

    Je n’arrive pas à créer le squelette qui me permettrait de zoomer et de centrer mes cartes en fonction de mots clès (tu me l’as déjà expliqué mais j’ai zappé depuis !)

    J’utilise le plugin ’Squelettes par mots clefs

    J’aimerai centrer chaque carte de mes rubriques en fonction du positionnement du marqueur d’un de leurs articles auquel on aura attribué le mot clé ’centrer_sur_article’ et qu’un zoom soit appliqué à la carte en fonction d’un mot clé associé à la rubrique

    Si quelqu’un a une piste...

    30 septembre 2008, 12:00

  • bb

    Bonjour opopop,

    Un truc dans le style devrait faire ce que tu veux :

    <BOUCLE_article_spec(ARTICLES){id_rubrique}{titre_mot=centrer_sur_article}{0,1}>
    <BOUCLE_centrer(GIS){id_article}>
    [(#MODELE{carte_gis}{id_article}{latit=#LAT}{lonxit=#LONX})]
    </BOUCLE_centrer>
    </BOUCLE_article_spec>

    Bon courage ++

    30 septembre 2008, 13:00

  • opopop

    Merci pour la rapidité de ta réponse.

    Cependant j’ai toujours mon problème concernant le zoom et on ne peut appliquer le critère zoom=#ZOOM dans une BOUCLE

    Je vais donc passer par le modèle

    < carte_gis|id_article=X|zoom=X >

    Un grand merci pour ton dévouement à la cause spipienne :)

    1er octobre 2008, 10:11

Répondre à cet article

Qui êtes-vous ?
Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.