IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

interfaceviewer ou viewer


Sujet :

IGN API Géoportail

  1. #1
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut interfaceviewer ou viewer
    Question plutôt théorique....
    A ce que je crois savoir d'après d'anciennes discussions dans ce forum, l'IGN favoriserait la mise en application courante de l'api JS du géoportail via interfaceviewer. L'utilisation d'un chargement direct via viewer étant plutôt réservée à des applications plus élaborées.
    1/ Qu'en est-il avec la nouvelle version?
    2/ Pour un amateur comme moi, je me pose souvent la question de savoir pourquoi faire une différence entre ces deux modes de chargement, puisque entre autres, on passe du premier à l'autre par la fonction interfaceviewer.getViewer(). Dans ce cas, si je comprends bien, le chargement de l'api pourrait se faire systématiquement par l'interfaceviewer, quitte à travailler ensuite sur le viewer en utilisant cette dernière fonction. Non? Y-a t'il des notions qui m'échappent?
    3/ Avec un chargement direct via le viewer, je suis resté avec un complément de codage jugé alors obligatoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    if (window.__Geoportal$timer === undefined) {    var __Geoportal$timer = null;
    }
    /**
     * Function: checkApiLoading
     * Assess that needed classes have been loaded.
     * Parameters:
     * retryClbk - {Function} function to call if any of the expected classes
     * is missing.
     * clss - {Array({String})} list of classes to check.
     * Returns: {Boolean} true when all needed classes have been loaded, false otherwise.
     */
    function checkApiLoading(retryClbk, clss) {
        if (__Geoportal$timer !== null) {
            //clearTimeout: annule le minuteur "__Geoportal$timer" avant sa fin
            window.clearTimeout(__Geoportal$timer);
            __Geoportal$timer = null;
        }
        /**
         * Il se peut que l'init soit exécuté avant que l'API ne soit chargée
         * Ajout d'un code temporisateur qui attend 300 ms avant de relancer l'init
         */
        var f;
        for (var i = 0, l = clss.length; i < l; i++) {
            try {
                f = eval(clss[i]);
            } catch (e) {
                f = undefined;
            }
            if (typeof(f) === 'undefined') {
                __Geoportal$timer = window.setTimeout(retryClbk, 300);
                return false;
            }
        }
        return true;
    }
    /**
     * Function: loadAPI
     * Load the configuration related with the API keys.
     * Called on "onload" event.
     * Call <initMap>() function to load the interface.
     */
    function loadAPI() {
        // on attend que les classes soient chargées
        if (checkApiLoading('loadAPI();', ['OpenLayers', 'Geoportal', 'Geoportal.Viewer', 'Geoportal.Viewer.Default']) === false) {
            return;
        }
    
    
        // on charge la configuration de la clef API, puis on charge l'application  xxxxxxxxx
        Geoportal.GeoRMHandler.getConfig([apiKey], null, null, {
            onContractsComplete : initMap
        });
    }
    // assignation de la fonction à appeler lors de la levée de l'évènement "onload"
    window.onload = loadAPI;
    Qu'en est-il aujourd'hui avec la nouvelle version de l'api?

    4/ Par ailleurs, sans me faire trop d'illusion car cela peut-être complexe en terme de gestion pour vous, je réitère quand même l'idée de pouvoir construire son fichier geoportail.js en fonction des applications et des outils (controls) du geoportail qu'on utilise. Avoir 3 tailles (GeoportalMin.js, Geoportal.js, GeoportalExtended.js) allant du simple au double en taille mémoire c'est bien, mais comme l'utilisateur moyen ne connait pas bien les capacités de ces 3 modules, on favorise plutôt GeoportalExtended.js (qui peut le plus...) sans aucune notion d'optimisation de son chargement. Plutôt dommage, non?

  2. #2
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Bonjour Christian

    Citation Envoyé par cmail Voir le message
    A ce que je crois savoir d'après d'anciennes discussions dans ce forum, l'IGN favoriserait la mise en application courante de l'api JS du géoportail via interfaceviewer. L'utilisation d'un chargement direct via viewer étant plutôt réservée à des applications plus élaborées.
    1/ Qu'en est-il avec la nouvelle version?
    2/ Pour un amateur comme moi, je me pose souvent la question de savoir pourquoi faire une différence entre ces deux modes de chargement, puisque entre autres, on passe du premier à l'autre par la fonction interfaceviewer.getViewer(). Dans ce cas, si je comprends bien, le chargement de l'api pourrait se faire systématiquement par l'interfaceviewer, quitte à travailler ensuite sur le viewer en utilisant cette dernière fonction. Non? Y-a t'il des notions qui m'échappent?
    3/ Avec un chargement direct via le viewer, je suis resté avec un complément de codage jugé alors obligatoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    if (window.__Geoportal$timer === undefined) {    var __Geoportal$timer = null;
    }
    /**
     * Function: checkApiLoading
     * Assess that needed classes have been loaded.
     * Parameters:
     * retryClbk - {Function} function to call if any of the expected classes
     * is missing.
     * clss - {Array({String})} list of classes to check.
     * Returns: {Boolean} true when all needed classes have been loaded, false otherwise.
     */
    function checkApiLoading(retryClbk, clss) {
        if (__Geoportal$timer !== null) {
            //clearTimeout: annule le minuteur "__Geoportal$timer" avant sa fin
            window.clearTimeout(__Geoportal$timer);
            __Geoportal$timer = null;
        }
        /**
         * Il se peut que l'init soit exécuté avant que l'API ne soit chargée
         * Ajout d'un code temporisateur qui attend 300 ms avant de relancer l'init
         */
        var f;
        for (var i = 0, l = clss.length; i < l; i++) {
            try {
                f = eval(clss[i]);
            } catch (e) {
                f = undefined;
            }
            if (typeof(f) === 'undefined') {
                __Geoportal$timer = window.setTimeout(retryClbk, 300);
                return false;
            }
        }
        return true;
    }
    /**
     * Function: loadAPI
     * Load the configuration related with the API keys.
     * Called on "onload" event.
     * Call <initMap>() function to load the interface.
     */
    function loadAPI() {
        // on attend que les classes soient chargées
        if (checkApiLoading('loadAPI();', ['OpenLayers', 'Geoportal', 'Geoportal.Viewer', 'Geoportal.Viewer.Default']) === false) {
            return;
        }
    
    
        // on charge la configuration de la clef API, puis on charge l'application  xxxxxxxxx
        Geoportal.GeoRMHandler.getConfig([apiKey], null, null, {
            onContractsComplete : initMap
        });
    }
    // assignation de la fonction à appeler lors de la levée de l'évènement "onload"
    window.onload = loadAPI;
    Qu'en est-il aujourd'hui avec la nouvelle version de l'api?
    Rien n'a changé de ce point de vue là avec la nouvelle version.

    Cela dit, l'utilisation de l'InterfaceViewer ne pénalise pas par rapport au Viewer : on peut faire les mêmes choses avec les deux ; la méthode InterfaceViewer.getViewer() permet de récupérer le viewer.


    4/ Par ailleurs, sans me faire trop d'illusion car cela peut-être complexe en terme de gestion pour vous, je réitère quand même l'idée de pouvoir construire son fichier geoportail.js en fonction des applications et des outils (controls) du geoportail qu'on utilise. Avoir 3 tailles (GeoportalMin.js, Geoportal.js, GeoportalExtended.js) allant du simple au double en taille mémoire c'est bien, mais comme l'utilisateur moyen ne connait pas bien les capacités de ces 3 modules, on favorise plutôt GeoportalExtended.js (qui peut le plus...) sans aucune notion d'optimisation de son chargement. Plutôt dommage, non?
    ça serait bien effectivement : je choisis telle et telle fonctionnalité, je clique sur le bouton "générer" et j'ai mon API taillée à ma mesure.

    Le service n'est pas simple à mettre en oeuvre, mais il faudrait y réfléchir (je ne te promet rien cependant)

    Gilles

  3. #3
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    Cela dit, l'utilisation de l'InterfaceViewer ne pénalise pas par rapport au Viewer : on peut faire les mêmes choses avec les deux ; la méthode InterfaceViewer.getViewer() permet de récupérer le viewer.
    OK, C'est bien ce que je crois, mais j'ai eu (et j'ai abandonné!) des problèmes pour passer par InterfaceViewer avec cet exemple http://depot.ign.fr/geoportail/api/develop/tech-docs-js/examples/geoportalMap_comparator.html . Pensez-vous mettre à jour cette page?

    ça serait bien effectivement : je choisis telle et telle fonctionnalité, je clique sur le bouton "générer" et j'ai mon API taillée à ma mesure.
    L'autre jour en me penchant sur le problème , j'ai trouvé cette page http://blog.rodolphe.quiedeville.org...ent-openlayers et sa parente http://blog.rodolphe.quiedeville.org...rie-OpenLayers qui sont instructives... Dois-je rappeler la taille de l'api ?

    Mais c'est sûr que ce ne sera pas pour demain....

  4. #4
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Citation Envoyé par cmail Voir le message
    OK, C'est bien ce que je crois, mais j'ai eu (et j'ai abandonné!) des problèmes pour passer par InterfaceViewer avec cet exemple http://depot.ign.fr/geoportail/api/develop/tech-docs-js/examples/geoportalMap_comparator.html . Pensez-vous mettre à jour cette page?
    ce n'est pas forcément prévu de la réécrire avec InterfaceViewer, mais as tu gardé des traces du ou des problème(s) rencontré(s) ? On peut t'aider à les résoudre si tu veux t'y replonger dedans.


    L'autre jour en me penchant sur le problème , j'ai trouvé cette page http://blog.rodolphe.quiedeville.org...ent-openlayers et sa parente http://blog.rodolphe.quiedeville.org...rie-OpenLayers qui sont instructives... Dois-je rappeler la taille de l'api ?

    Mais c'est sûr que ce ne sera pas pour demain....


    C'est bien le mécanisme mis en avant par les discussions que tu cites que nous utilisons pour générer les différents packagings de l'API (Min, Standard, Extended ou autres) : on paramètre les scripts de génération avec les classes à inclure ou exclure, on lance le tout et on déploie les fichiers js générés.

    Cela dit proposer un service qui génère les fichiers de paramétrage à partir du choix d'un utilisateur, lance la compilation et propose le fichier résultat au téléchargement demande un certain investissement qui ne pourra pas forcément se faire dans l'immédiat, voire du tout si cela est trop important à mettre à œuvre.

  5. #5
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    ce n'est pas forcément prévu de la réécrire avec InterfaceViewer,
    Zut!.... Mais pas grave!

    tu gardé des traces du ou des problème(s) rencontré(s) ?
    Bien sûr que j'ai des trucs à droite et à gauche, mais je manque de courage pour reprendre la question... En plus, j'ai un peu oublié les différentes pistes approchées, et il y a tellement d'autres sujets où je galère...
    Un jour surement, mais pas prêt aujourd'hui à relancer ce sujet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/04/2005, 15h15
  2. Viewer de pdf de powerpoint ou de jpeg
    Par busta28 dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 15/09/2004, 22h22
  3. [Viewers] Interface "ContentProvider"
    Par bonnefr dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 04/06/2004, 11h54
  4. [CR][VB6] ParameterField & Viewer
    Par CDRIK dans le forum SDK
    Réponses: 3
    Dernier message: 16/03/2004, 18h06
  5. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo