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

JavaScript Discussion :

Accéder à la valeur d'une fonction à l'intérieur d'une autre fonction


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut Accéder à la valeur d'une fonction à l'intérieur d'une autre fonction
    Bonjour à tous,

    Avec ce titre peu explicite, je vais essaye de vous décrire mon problème.

    A partir de la librairie prototype, je créé une classe nommée "hypermap". Celle-ci contient quelques méthodes :

    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
     
    var hypermap = Class.create({
      initialize: function() {
         ...
      },
     
    addData: function(point){
            var oPoint = null;  
     
            for(var i=0;i<point.length;i++){            
                if (point[i].nodeName=="LONLAT"){                
                    coords = point[i].innerHTML.split(";");       
                    oPoint = new OpenLayers.Geometry.Point(parseFloat(coords[0]),parseFloat(coords[1]));
     
                }else if (point[i].nodeName=="LOCALISATION"){                
                    //oPoint = new OpenLayers.Geometry.Point(587036,6245152);
                    place = point[i].innerHTML;
     
                    // ICI Recuperation valeur
                    yqlgeo.get(place,function(o){
                        lon = o.place.centroid.longitude;
                        lat = o.place.centroid.latitude;                                  
                    });     
                    oPoint = new OpenLayers.Geometry.Point(lon,lat);
                }    
            }
     
            var feat = new OpenLayers.Feature.Vector(oPoint, null); 
            return feat
        },
     
    });
    Avec la méthode yqlgeo.get() (yqlgeo) je souhaite récupérer la longitude et la latitude du nom de la ville passée en argument pour ensuite les utiliser dans ma méthode addData.
    Mais comme celle-ci est elle même une fonction du coup la portée des variables reste interne à la fonction. Et oPoint = new OpenLayers.Geometry.Point(lon,lat) me retourne une erreur

    Je ne sais pas si j'ai bien réussi à expliquer mon problème. N'hésitez pas à me demander plus de détails si cela vous semble mal exprimé.

    Merci

    Arnaud

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    declares lon et lat en dehors de tes fonctions
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut
    Déjà essayé

    En les définissant de la manière suivante :

    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
     
    var lon="foo";
    var lat="foo";
     
    var hypermap = Class.create({
    addData: function(point){
            var oPoint = null;  
     
     
            for(var i=0;i<point.length;i++){            
                if (point[i].nodeName=="LONLAT"){                
                    coords = point[i].innerHTML.split(";");       
                    oPoint = new OpenLayers.Geometry.Point(parseFloat(coords[0]),parseFloat(coords[1]));
     
                }else if (point[i].nodeName=="LOCALISATION"){                
                    oPoint = new OpenLayers.Geometry.Point(587036,6245152);
                    place = point[i].innerHTML;
     
                    yqlgeo.get(place,function(o){
                        lon = o.place.centroid.longitude;
                        lat = o.place.centroid.latitude;                                   
                        console.log("first");
                        console.log(lon);
     
                    }); 
                    console.log("second");
                    console.log(lon);              
                }    
            }
     
            var feat = new OpenLayers.Feature.Vector(oPoint, null); 
            return feat
        }
     
    });
    Le console.log "First" me retourne : 7.278240
    Le console.log "Second" me retourne : foo

    Arnaud

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    parcequ'ils sont dans un namespace mypermap ?

    essaye d'y acceder par

    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut
    J'ai l'impression que je ne suis pas le seul à être dans la même situation :
    http://forums.thedigitalfix.co.uk/fo....php?p=9005758

    Pour info, même en les passant en global, cela ne fonctionne pas.

    Arnaud

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/10/2013, 11h11
  2. Réponses: 2
    Dernier message: 04/12/2011, 10h58
  3. Réponses: 15
    Dernier message: 16/09/2009, 16h19
  4. [Débutant] Choix de fonction à l'intérieur d'une boucle
    Par mdelvaux89 dans le forum MATLAB
    Réponses: 7
    Dernier message: 08/04/2009, 12h01
  5. Réponses: 6
    Dernier message: 07/08/2007, 21h42

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