Version 13 — Octobre 2012 — b_b
Article obsolète gardé ici pour arhive
Idées en vrac / Todolist
GIS2 utilise la librairie Mapstraction ce qui lui permet de fonctionner directement avec les providers suivants : openlayers, googlev2, googlev3, microsoft bing, yahoo, mapquest etc
Avant tout :
Toutes les fonctionnalités de GIS n’étaient pas compatibles avec OpenLayers. J’ai commencé à jouer avec celui-ci dernièrement et corrigé quelques bugs.
http://zone.spip.org/trac/spip-zone/log/_plugins_/open_layers
D’autres personnes semblent être intéressées par le sujet...
Si cela peut aider, le plugin SPIP-Geoportail intègre quelques fonctionnalités décrite ci-dessus.
En particulier :
NB : l’API Géoportail est basée sur OpenLayers (ce qui peut aider).
La version de dev du plugin est disponible par svn ici :
http://zone.spip.org/trac/spip-zone/browser/_plugins_/gis/trunk
Vous pouvez la tester à vos risques et périls ;)
Indiquez vos retours et observations ci-dessous :
Benfer : le 6 juillet 2011
+ demander à b_b quel est le probleme du bug mapstraction
Installation sous SPIP 2.1.10
Sur la zone : _plugins_/GIS/trunk/
Ajouter les plugins médiathèque et afficher objets ( afficher objets est incu par défaut dans la 2.3-dev.
Le gestionnaire demande l’ajout d’un paquet h2fe2d58a-mxn-2..16
lib/, apparemment mapstraction, il suffit de cliquer sur le bouton pour confirmer l’ajout du paquet.
Fatal error : Maximum execution time of 30 seconds exceeded in /home/users4/a/atravers/www/PCPI/ecrire/inc/flock.php on line 383
Finalement c’est installé.
Essai de récupérer mon contenu depuis GIS 1 : ni mon KML ni mon marker perso ne s’affichent, mais je suis sous OpenLayers, je dois d’abord essayer GoogleMap.
Avec Google v3 ça ne marche pas non plus, alors je vais essayer de retourner à la v2, comme avant, mais pour cela je dois récupérer mon ancienne clé Google, créée pour ce site.
Cela ne semble plus révéler des erreurs par défaut à partir de GIS 1. Je peux commencer à reformuler mes squelettes pour GIS 2.
Les parametres sont documentes dans le code. Je vais les reformuler ici :
Voici une copie de la doc telle que présentée dans le squelette carte_gis.html
]
Pour modifier l’emplacement d’un marqueur dans l’interface privée, cliquez à l’endroit souhaité sur la carte.
On peut passer par le modèle pour appeler un kml en superposition de la carte, ce qui oblige à créer un squelette personnalisé pour chacun des articles qui utilisent ce type de fichier.
Pour ajouter un KML en superposition de la carte, la meilleure méthode est de créer une boucle document pour l’inclure au modèle.
Notez qu’on ne peut ajouter qu’un seul kml pour une carte. On peut toutefois éditer les kml pour transformer plusieurs kml en un seul en respectant la syntaxe spécifique ( une variante de xml ).
Ah ! en passant à OpenLayers, mon KML ne s’affiche plus, et la carte n’est plus en mode satellite ( c’est normal il n’y a pas de mode satellite, il faut rajouter des couches externes pour cela ).
!! Intégré dans GIS v2, v3 et v4 !!
Dans le cadre du développement d’un site d’actu culturel, il est apparu le besoin de géolocaliser les évements plutôt que les articles. Voici comment procéder.
Ajouter dans mes_option.php ce genre de code : (le nom localise_evenement est un exemple)
$spip_pipeline['affiche_milieu'] .= "|localise_evenement";
function localise_evenement($flux){
if ($flux['args']['exec']=='evenements_edit'){
$objet = 'evenement';
$id_objet = $flux['args']['id_evenement'];
if ($objet && $id_objet) {
if (1) {
$contexte['objet'] = $objet;
$contexte['id_objet'] = $id_objet;
$flux['data'] .= "<div id='pave_gis'>";
$bouton = bouton_block_depliable(_T('gis:cfg_titre_gis'), false, "pave_gis_depliable");
$flux['data'] .= debut_cadre_enfonce(find_in_path('images/gis-24.png'), true, "", $bouton);
$flux['data'] .= recuperer_fond('prive/contenu/gis_objet', $contexte);
$flux['data'] .= fin_cadre_enfonce(true);
$flux['data'] .= "</div>";
}
}
}
return $flux;
}
Puis dans le répertoire du plugin gis2/json le fichier gis_evenements.html que voici :
<BOUCLE_eve(EVENEMENTS){gis}{id_evenement ?}{id_article ?}{id_rubrique ?}{id_secteur ?}{id_mot ?}{id_auteur ?}{recherche ?}{0, #ENV{limit}}{","}>
{"type": "Feature",
"geometry": {"type": "Point", "coordinates": [#LON, #LAT]},
"id":"#ID_GIS",
"title":[(#TITRE_GIS*|sinon{#TITRE*}|supprimer_numero|json_encode)],
"description":[(#DESCRIPTIF_GIS|sinon{#DESCRIPTIF}|json_encode)][(#SET{logo_doc,''})]
[(#LOGO_GIS|oui)
[(#SET{logo_doc,#LOGO_GIS|image_passe_partout{32,32}|image_recadre{32,32}})]]
[(#LOGO_GIS|non)
[(#CHEMIN{images/marker_defaut.png}|oui)
[(#SET{logo_doc,#CHEMIN{images/marker_defaut.png}|image_passe_partout{32,32}|image_recadre{32,32}})]
]][(#GET{logo_doc}|oui)
#SET{icon_w,#GET{logo_doc}|extraire_attribut{src}|largeur}
#SET{icon_h,#GET{logo_doc}|extraire_attribut{src}|hauteur}
#SET{icon_anchorPoint,''}
[,"icon": (#GET{logo_doc}|extraire_attribut{src}|url_absolue|json_encode)],
"icon_size": [(#VAL{91}|chr)]#GET{icon_w},#GET{icon_h}[(#VAL{93}|chr)],
"icon_anchor": [(#VAL{91}|chr)][(#GET{icon_w}|div{2})],[(#GET{icon_h})][(#VAL{93}|chr)]
]}</BOUCLE_eve>
Dès lors, vous avez la possibilité d’associer un marqueur à un événement.