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

APIs Google Discussion :

Insertion impossible de GPolygon sous IE


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut Insertion impossible de GPolygon sous IE
    Bonjour tout le monde,

    Je programme à l'heure actuelle un code Javascript qui va insérer des polygons sur une API Google Maps.
    Ce dernier marche très bien sur FireFox mais pas sur Internet Explorer et les navigateurs de même base.
    Voici le code qui dérange :

    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
    function afficherContour(id_ref, type, premier){
     
     if (GBrowserIsCompatible()) { 
     
            var xhr = getXhr();
        xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
                    var xmldoc = xhr.responseXML;
                    var markers = xmldoc.getElementsByTagName('marker');
                    var pts = new Array();
     
            for (var i = 0; i < markers.length; i++) { 
                          pts[i] = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); 
    // ou pts[pts.length] = ...
    // ou pts.push ( ... )
     
                    }
     
     
                    var poly = new GPolygon(pts,"#FF0001",2,1,"#00FF01",0); 
                    map.addOverlay(poly); // marche sur FF mais pas sur IE
        }
        }
     
            xhr.open("GET","php/xmlPolygon.php?id_Ref="+id_ref+"&type="+type,true);
        xhr.send(null);
      }
    }
    J'ai l'impression que le problème vient uniquement de l'insertion du polygon sur la Gmap2 donc soit Gpolygon() soit map.addOverlay().
    Je précise que les points sont bons, sinon ça ne marcherait pas sous FF et un petit alert sur pts me l'a aussi montré ^^

    Voici un exemple d'insertion de polygons marchant sous IE et FF au cas où vous en auriez besoin.
    http://econym.googlepages.com/example_states.htm

    Merci pour votre aide

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur PHP & Zend Framework 1 et 2
    Inscrit en
    Avril 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur PHP & Zend Framework 1 et 2
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 259
    Par défaut
    Bonjour
    J'ai eu le même problème, car j'avais déclaré une map en local (avec 'var ') et sous IE il faut mettre 'window.map = map' à la fin du load pour se servir de la carte hors de la fonction load (se servir de la variable comme une variable globale).

  3. #3
    Rédacteur

    Homme Profil pro
    Développeur PHP & Zend Framework 1 et 2
    Inscrit en
    Avril 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur PHP & Zend Framework 1 et 2
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 259
    Par défaut
    Regarde sur mon site :

    http://www.blanchon-vincent.fr/iut-s...hy/1ere-annee/

    Clique sur google map tu verra celle que j'avais fait et tu verra pour que ca marche sous IE j'avais rajouté window.map = map comme je t'ai dit

    J'espere que c'est ca que tu voulais

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur PHP & Zend Framework 1 et 2
    Inscrit en
    Avril 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur PHP & Zend Framework 1 et 2
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 259
    Par défaut
    Je viens de voir ta page (j'aurais du regarder avant dsl) et tu as pas de fonction load
    Mais je pense c'est le même problème, dans la boucle 'for' il ne le prend pas, donc mets window.map = map après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    map.setCenter(new GLatLng(42.16,-100.72),4);
    // Tu rajoutes :
    window.map = map ;

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 23
    Par défaut
    Bonjour fnnyaert

    J'ai essayé ce que tu m'as donné mais le problème est toujours le même.
    Ma variable map a déjà été déclarée en globale et le problème ne vient pas d'ici vu que je peux utiliser map dans d'autres fonctions marchant très bien

    tu as pas de fonction load
    Ma fonction load est dans un autre fichier .js. Et puis, si elle n'existait pas, comment FF et IE auraient-ils pu afficher la carte ?

    Petit debug de la partie ne fonctionnant pas :

    voici la fonction complète :
    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
    function afficherContour(id_ref, type, premier){
     
     if (GBrowserIsCompatible()) { 
     
            var xhr = getXhr();
    	xhr.onreadystatechange = function(){
    	if(xhr.readyState == 4 && xhr.status == 200){
                	var xmldoc = xhr.responseXML;
                    var markers = xmldoc.getElementsByTagName('marker');
                    var pts = new Array();
     
                     if(premier){
                         var latmax = parseFloat(markers[0].getAttribute("lat"));
                         var latmin = parseFloat(markers[0].getAttribute("lat"));
                         var lngmax = parseFloat(markers[0].getAttribute("lng"));
                         var lngmin = parseFloat(markers[0].getAttribute("lng"));
                      }
     
    		for (var i = 0; i < markers.length; i++) { 
                          pts[i] = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); 
     
                        if(premier){
                              if (latmax < markers[i].getAttribute("lat")){latmax = parseFloat(markers[i].getAttribute("lat"));} 
                              if (latmin > markers[i].getAttribute("lat")){latmin = parseFloat(markers[i].getAttribute("lat"));}
                              if (lngmax < markers[i].getAttribute("lng")){lngmax = parseFloat(markers[i].getAttribute("lng"));} 
                              if (lngmin > markers[i].getAttribute("lng")){lngmin = parseFloat(markers[i].getAttribute("lng"));}
                          }
                    }
     
                    if (premier){
                      var bool = zoom(latmax,lngmax,latmin,lngmin);
                      var poly = new GPolygon(pts,"#FF0001",2,1,"#00FF01",0);
                    } else {
                      var poly = new GPolygon(pts,"#FFFFFF",2,0.8,"#FFFFFF",0.5);
                    }
                    map.addOverlay(poly);
    					 }
    				}
                    xhr.open("GET","php/xmlPolygon.php?id_Ref="+id_ref+"&type="+type,true);
    		xhr.send(null);
      }
    }
    - id_ref et type n'ont pas une grande importance ici.
    - premier est un boolean = true.
    - fonction getXhr() est OK
    - "if(xhr.readyState == 4 && xhr.status == 200){" est OK. On entre dans la condition.
    - la recherche des maximums et des minimums marchent très bien.
    - la fonction Zoom est lancée et utilise map.setCenter() en fonction des maximums et des minimums pré calculés. Sachant que cela fonctionne sous IE et sous FF, on ne peut pas dire que le problème vienne de la variable map.
    - "var poly = new GPolygon(pts,"#FF0001",2,1,"#00FF01",0);" semble marcher étant donné que poly.getVertexCount() renvoi 170.
    - "map.addOverlay(poly);" BBBIIIPPPPPP !! marche sous FF mais pas sous IE.

    J'espère que toutes ces explications pourront vous aider à résoudre mon problème. Je dois terminé le programme dans moins de trois semaines et je n'ai pas le temps de passer mes journées à essayer de résoudre ce problème plus d'une journée.

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur PHP & Zend Framework 1 et 2
    Inscrit en
    Avril 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur PHP & Zend Framework 1 et 2
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 259
    Par défaut
    Envoi moi toute ta carte à mon mail, je vais essayer de regarder :

    mail@blanchon-vincent.fr

    Ca te marque quoi comme erreur ?
    Je pense que cela vient de map
    Envoi le par mail je vais regarder ce soir ou demain soir

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

Discussions similaires

  1. [PDO] [SQLite] create table et insert impossible sous linux (ok sous windows)
    Par rebolon dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 31/07/2007, 15h59
  2. Insertion impossible a cause de l'IDENTITY_INSERT
    Par oli_carbo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/03/2006, 14h24
  3. Requete insertion dans une table sous delphi?
    Par EssaiEncore dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/01/2006, 15h12
  4. Réponses: 1
    Dernier message: 05/06/2005, 14h57
  5. Insertion multiple à base de sous requête SELECT
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/04/2005, 16h34

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