Précédent   Forum du club des développeurs et IT Pro > Applications > SIG : Système d'information Géographique > IGN API Géoportail
IGN API Géoportail Forum d'entraide sur l'API Géoportail développé par IGN
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/12/2012, 19h23   #1
Zébulon-21
Membre confirmé
 
Inscription : mai 2009
Messages : 356
Détails du profil
Informations personnelles :
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : mai 2009
Messages : 356
Points : 259
Points : 259
Par défaut Déclinaisons du style Anchored

Cet exemple de l'API montre des variantes intéressantes du popup Anchored mais, en l'état, le code n'est pas facilement exploitable à cause des menus (sélection de langues étrangères et de styles) qui sont dédiés uniquement à la démo.

J'essaye donc d'en extraire une page fonctionnelle simplifiée, dans un style de popup unique (ex "Anchored.css.Think"), que l'on pourrait ensuite décliner facilement.

Pour l'instant le test n'est pas très concluant :
- le style "css.Think" est aux abonnés absents,

La personnalisation de la carte n'est pas mieux réussie :
- comment spécifier les coordonnées du centre et le niveau de zoom ?
- comment ajouter un (ou plusieurs) fichier(s) KML ?
- comment afficher les onglets "Couches", "Outils" et "Informations" habituels.
- comment restaurer les bordures habituelles de la carte.

Un petit coup de main serait le bienvenu.

Merci par avance.
Zébulon-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 09h18   #2
tcoupin
Membre régulier
 
Homme Thibault Coupin
Ingénieur Cartographe
Inscription : octobre 2012
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Thibault Coupin
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Cartographe
Secteur : Service public

Informations forums :
Inscription : octobre 2012
Messages : 58
Points : 78
Points : 78
  • L'ajout de couche KML est expliqué dans cette page
  • Et pour les onglets et les bordures, il suffit de changer le type de viewer :
    Code :
    viewer= new Geoportal.Viewer.Default('viewerDiv', OpenLayers.Util.extend([...]));
    Les viewers disponibles sont Simple, Default, Standard (et Mobile).

tcoupin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 13h02   #3
Zébulon-21
Membre confirmé
 
Inscription : mai 2009
Messages : 356
Détails du profil
Informations personnelles :
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : mai 2009
Messages : 356
Points : 259
Points : 259
Merci pour les conseils, très clairs et très bien documentés.

Sur cette page, en suivant tes indications on obtient bien tous les résultats souhaités et cette fois-ci c'est au niveau de la finalisation, lorsque le copier-coller ne suffit plus, qu'il subsiste quelques anomalies, par exemple :

- les pictos n'apparaissent pas,
- les popups restent ouvertes,
- le style "css.Think" n'est plus appliqué lorsqu'on désactive puis réactive une couche...


Il reste peut-être encore du code qui ne s'impose plus dans cette page sans le menu de sélection des styles ?
Zébulon-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 20h45   #4
tcoupin
Membre régulier
 
Homme Thibault Coupin
Ingénieur Cartographe
Inscription : octobre 2012
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Thibault Coupin
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Cartographe
Secteur : Service public

Informations forums :
Inscription : octobre 2012
Messages : 58
Points : 78
Points : 78
En regardant rapidement la console, il manque 4 images comme par exemple
Code :
http://www.valroc.net/ESSAI/html/images/house-Y.png
Après, quand j'essaye de fermer la popup, il y a une autre erreur :
Code :
Uncaught ReferenceError: unPopupFunc is not defined anchored-02.html:551
Et enfin pour ce qui est du style des popups, il est activé, tu définis ensuite l couche et enfin le style est remis à la valeur par défaut (ligne 570 à commenter)
Code :
1
2
  viewer.getMap().addControl(clickCtrl);
//viewer.setVariable('popupControler', clickCtrl);
J'espère que ça suffira, je ne pourrais pas répondre avant la semaine prochaine.

Bonne fêtes !
tcoupin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 21h22   #5
Zébulon-21
Membre confirmé
 
Inscription : mai 2009
Messages : 356
Détails du profil
Informations personnelles :
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : mai 2009
Messages : 356
Points : 259
Points : 259
Citation:
Envoyé par tcoupin Voir le message
J'espère que ça suffira, je ne pourrais pas répondre avant la semaine prochaine.

Bonne fêtes !
En effet, j'ai voulu aller trop vite car je pressentais bien des congés de fin d'année.

Merci pour les indications, je corrige tout ça.

En attendant, bonnes fêtes également à toi et à tes proches.
Zébulon-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 20h29   #6
Zébulon-21
Membre confirmé
 
Inscription : mai 2009
Messages : 356
Détails du profil
Informations personnelles :
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : mai 2009
Messages : 356
Points : 259
Points : 259
Par défaut On avance !

Banc d'essai de cette page.

OK avec FF et Chrome, par contre IE pose quelques problèmes :

1). Le texte déborde en bas du popup, quel que soit le style.

2). Lorsqu'on ferme le popup avec la croix, l'élément qui a été désélectionné n'est plus cliquable, et le phénomène existe aussi sur la page d'exemple de l'API.


Au niveau du positionnement des popups, c'est son angle qui est dirigé sur le point d'origine mais pas la pointe de la flêche, et cela quel que soit le style (démo ci-dessous).

Peut-on corriger cela car les paramètres des lignes 212 à 215 permettent seulement d'ajuster la flèche sur le popup.

- Style Think

- Style Bubble

- Style Tip

- Style Classic

- Style Shadow

- Style Black
Zébulon-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 09h53   #7
tcoupin
Membre régulier
 
Homme Thibault Coupin
Ingénieur Cartographe
Inscription : octobre 2012
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Thibault Coupin
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Cartographe
Secteur : Service public

Informations forums :
Inscription : octobre 2012
Messages : 58
Points : 78
Points : 78
Je viens de regarder sous IE9 et je n'ai pas les problèmes 1) et 2) Mystère...

En revanche pour le positionnement, il y a une solution
Dans la définition de Geoportal.Popup.Anchored.Css, il faut rajouter la méthode calculateNewPx (comme dans le code de l'exemple)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
     * Méthode API : setSize
     * Mise à jour des blocs lorsque la taille de popup change.
     *
     * Paramètres :
     * contentSize - {<OpenLayers.Size>} nouvelle taille de la popup (en pixels).
     */
    setSize:function(contentSize) {
        Geoportal.Popup.Anchored.prototype.setSize.apply(this, arguments);
        this.createBlocks();
    },
	
    /**
     * Method: calculateNewPx
     *
     * Parameters:
     * px - {<OpenLayers.Pixel at http://dev.openlayers.org/docs/files/OpenLayers/Pixel-js.html>}
     *
     * Returns:
     * {<OpenLayers.Pixel at http://dev.openlayers.org/docs/files/OpenLayers/Pixel-js.html>} The the new px position of the popup on the screen
     *     relative to the passed-in px.
     */
    calculateNewPx:function(px) {
       var newPx= Geoportal.Popup.Anchored.prototype.calculateNewPx.apply(this, arguments);

        var top= (this.relativePosition && this.relativePosition.charAt(0) == 't');
        newPx.y += (top? -this.csize.h : this.csize.h);

        var left= (this.relativePosition && this.relativePosition.charAt(1) == 'l');
        newPx.x += (left? this.csize.w/2+this.dOffset : -this.csize.w/2-this.dOffset);

        return newPx;
    }
tcoupin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 00h07   #8
Zébulon-21
Membre confirmé
 
Inscription : mai 2009
Messages : 356
Détails du profil
Informations personnelles :
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : mai 2009
Messages : 356
Points : 259
Points : 259
Par défaut On voit le bout

Maintenant le positionnement est normal.

Pour la question 1) de débordement de texte, c'était lié à la syntaxe html.

Apparemment, avec IE8 - et seulement sur la page inspirée de l'exemple API - il faut finir comme ceci :
"</font></div>" + "<br />",

Dans les autres cas on peut se contenter de terminer le texte avec "</font>"


Pour la question 2) j'ai cru comprendre que tu avais constaté la même chose avec IE9, qu'avec IE8, lorsqu'on ferme avec la croix ?
Zébulon-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 10h10   #9
tcoupin
Membre régulier
 
Homme Thibault Coupin
Ingénieur Cartographe
Inscription : octobre 2012
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Thibault Coupin
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Cartographe
Secteur : Service public

Informations forums :
Inscription : octobre 2012
Messages : 58
Points : 78
Points : 78
je n'ai testé que sous IE9 et je n'avais pas ce problème d'élément plus sélectionnable.
tcoupin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 10h36   #10
Zébulon-21
Membre confirmé
 
Inscription : mai 2009
Messages : 356
Détails du profil
Informations personnelles :
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : mai 2009
Messages : 356
Points : 259
Points : 259
Je mets donc ce sujet "Résolu" car le problème d'élément non sélectionnable déborde du sujet Anchored puisqu'il se produit aussi sur les exemples fournis par l'API.

S'il y a une solution, je suis preneur quand même.

Merci pour ton aide efficace.
Zébulon-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 11h55   #11
tcoupin
Membre régulier
 
Homme Thibault Coupin
Ingénieur Cartographe
Inscription : octobre 2012
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Thibault Coupin
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Cartographe
Secteur : Service public

Informations forums :
Inscription : octobre 2012
Messages : 58
Points : 78
Points : 78
J'ai aussi essayé avec IE8 et j'ai bien le problème.
J'ai essayé plusieurs choses mais rien de concluant.

Si on trouve la raison, on reviendra te le dire
tcoupin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 15h36   #12
tcoupin
Membre régulier
 
Homme Thibault Coupin
Ingénieur Cartographe
Inscription : octobre 2012
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Thibault Coupin
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Cartographe
Secteur : Service public

Informations forums :
Inscription : octobre 2012
Messages : 58
Points : 78
Points : 78
Par défaut dgrichard a trouvé la solution !

il faut modifier la callback lors du click sur la croix :
Code :
1
2
3
4
5
6
7
function(evt) {
    if (this.feature) {
        clickCtrl.unselect(this.feature);
        //unPopupFunc(this.feature);
    }
},
L'exemple sur le site de l'api va bientôt être modifié
tcoupin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 19h18   #13
Zébulon-21
Membre confirmé
 
Inscription : mai 2009
Messages : 356
Détails du profil
Informations personnelles :
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : mai 2009
Messages : 356
Points : 259
Points : 259
Impec !

Donc, merci à Didier et…

Une bonne pause St Sylvestre à toute l’équipe de l’IGN.
Zébulon-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 16h12   #14
Zébulon-21
Membre confirmé
 
Inscription : mai 2009
Messages : 356
Détails du profil
Informations personnelles :
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : mai 2009
Messages : 356
Points : 259
Points : 259
J'essaye d'exploiter en dehors du style Anchored le code donné par Didier, mais cette fois-ci la croix de fermeture de popup n'a plus d'effet sous aucun navigateur.

Je suppose que la formule magique (lignes 230 à 238 de la page) mériterait une adaptation que je ne sais malheureusement pas faire.

S’il était possible de m'éclairer sur ce dernier point...
Zébulon-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 09h43   #15
tcoupin
Membre régulier
 
Homme Thibault Coupin
Ingénieur Cartographe
Inscription : octobre 2012
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Thibault Coupin
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Cartographe
Secteur : Service public

Informations forums :
Inscription : octobre 2012
Messages : 58
Points : 78
Points : 78
Dans les exemples précédents, le constructeur de popup avait été définit préalablement et surtout personnalisé notamment pour accepter un argument supplémentaire par rapport au constructeur fourni par openlayers : un feature (voir ligne 121 de cette page) d'où le f qui traîne à la ligne 414 juste après la définition de la callback de click sur la croix.

Maintenant, tu utilises un constructeur fournie par OpenLayers : OpenLayers.Popup.FramedCloud (documentation) et comme le montre la doc, il n'y a pas de feature. Pas de feature, pas de passage de la condition
Code :
1
2
3
4
5
6
7
8
function(evt) {
    if (this.feature) {
        // Corrige défaut fermeture popup avec IE8
        // http://www.developpez.net/forums/d1290245/applications/sig-systeme-dinformation-geographique/ign-api-geoportail/declinaisons-style-anchored/
        clickCtrl.unselect(this.feature);
    }
}
Il faut donc lui attribué un feature à la main à la ligne 240 :
Code :
1
2
3
popup.feature=f;
f.popup= popup;
tcoupin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 21h12   #16
Zébulon-21
Membre confirmé
 
Inscription : mai 2009
Messages : 356
Détails du profil
Informations personnelles :
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : mai 2009
Messages : 356
Points : 259
Points : 259
Les bras m'en tombent tellement c'est limpide.

Dorénavant tout fonctionne parfaitement.

Merci à nouveau pour ton aide.
Zébulon-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h25.


 
 
 
 
Partenaires

Hébergement Web