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 :

Pb zoom centrée sur GPX


Sujet :

IGN API Géoportail

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Pb zoom centrée sur GPX
    Bonjour,

    Je fais pas mal de test depuis quelques jours mais sans résultat.
    J'ai essayé de parcourir le forum pour trouver une solution mais soit je ne suis pas doué soit la réponse n'y est pas.

    J'ai un script qui me permetait de charger un gpx sur l'api geoportail en version beta 2

    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
    56
    57
    58
    59
    60
    61
    62
    <script type="text/javascript">
        //<![CDATA[
        var a = null;
        var map;
        var pano_layer = null;
        var lw = 800;
        var hw = 600;
        var mw = lw;
        var mh = lw;
        getScreenSize();
    
        function getScreenSize() {
            if (document.body) {
                lw = (document.body.clientWidth);
                hw = (document.body.clientHeight);
             } else {
                lw = (window.innerWidth);
                hw = (window.innerHeight);
             }
         }
    
          var gpMap, olMap,traceLayer;
          var styleMapSimple = new OpenLayers.StyleMap({
                strokeColor: '#0000FF',
                strokeWidth: 3,
                strokeOpacity: 0.8
            });		
          
          function initGeoportalMap() {
                geoportalLoadmap("map", "normal", "FXX");
                if(map.allowedGeoportalLayers){
                    map.addGeoportalLayers(map.allowedGeoportalLayers);
                }
                map.openLayersPanel(false);
                map.openToolsPanel(false);
                gpMap = map;
                olMap = map.getMap();
                for (i = 0; i < olMap.layers.length; i++)
                {
                    lyr = olMap.layers[i];
                    if (lyr.name == 'geoportal.catalogue.maps.theme.name') lyr.setOpacity(1);
                    if (lyr.name == 'geoportal.catalogue.orthophotos.theme.name') lyr.setVisibility(false);
                 }
    
                 loadGPX('1664.gpx');
         }
    
         function loadGPX(url) {
              tName = "Le tour des Lacs du Val d'Arrens [Balaitous- Val d'Azun]";
              traceLayer = gpMap.addLayer("GPX",tName,url,{styleMap: styleMapSimple});
               traceLayer.events.register('loadend',lyr, function(e){zoomToLyr();})
          }
    	
          function zoomToLyr() {
               distance = 1;
               bounds = traceLayer.features[0].geometry.getBounds();
               olMap.zoomToExtent(bounds);
           }
    
        //]]>
    </script>
    La fonction zoomToLyr permettait une fois le gpx chargé de zoomer automatiquement sur celui-ci

    J'ai voulu adapté mon code pour la version beta 4 et là impossible de faire fonctionner cette fonction....
    Si vous pouviez m'aider... merci d'avance

    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
    56
    		<script type="text/javascript">
    			//<![CDATA[
    			map = null;			
    
    			function initGeoportalMap()
    			{
    				OpenLayers.Lang.setCode('fr');
    				geoportalLoadmap("cartediv", "normal", "FXX");
    				if (!map)
    				{
                	 alert('Impossible de charger la carte');
                	return;
            		}
            		
            		if (map.getMap().allowedGeoportalLayers)
            		{
            			map.getMap().addControl(new OpenLayers.Control.LoadingPanel());
    					map.addGeoportalLayers(['GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC'],{opacity:1.0});
    					map.addGeoportalLayer('ORTHOIMAGERY.ORTHOPHOTOS:WMSC',{visibility:false});
    					map.openLayersPanel(false);
    					map.openToolsPanel(false);
    					map.setInformationPanelVisibility(true);
    
    					 loadGPX("<?php echo $gpx; ?>");
            		}				
    			}
    
    			function loadGPX(url)
    			{
              	var styleGpx = new OpenLayers.StyleMap({
              		"default": new OpenLayers.Style({
                  		strokeColor:'#ff0000',
                  		strokeWidth:3 ,
    	     				strokeOpacity: 0.6
              		}),
              		"select": new OpenLayers.Style({
                  		strokeColor:'#3399ff',
                  		strokeWidth:3 ,
    	      			strokeOpacity: 0.6
              		})
              	});
    	  
    	  			tName = "test";
    	  			traceLayer = map.getMap().addLayer("GPX",tName,url,{styleMap: styleGpx });
    	  			traceLayer.events.register('loadend',lyr, function(e){zoomToLyr();})
    			}
    
    			function zoomToLyr()
    			{
    	   		bounds = traceLayer.features[0].geometry.getBounds();
    	   		alert(bounds)
    	   		map.zoomToExtent(bounds);
    			}
    			//]]>
    		</script>
    Autre petit détail, depuis la version beta 4 tous les scripts se servant de cette version ne fonctionne pas sous opera.
    Est-ce qu'il y a une astuce ou est-ce un bug ?

    Merci de votre aide

    a+++

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 119
    Points : 1 764
    Points
    1 764
    Par défaut Une réponse en exemple
    Dans ton code, il y a plein de petites erreurs ...
    Essaye avec Firebug tes scripts avant de faire des tentatives sur d'autres navigateurs!

    Ma page http://atlasnw.free.fr/geoportail/ex.../gpx_zoom.html

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    Dans ton code, il y a plein de petites erreurs ...
    Essaye avec Firebug tes scripts avant de faire des tentatives sur d'autres navigateurs!

    Ma page http://atlasnw.free.fr/geoportail/ex.../gpx_zoom.html
    Bonjour

    Merci de votre réponse.
    Je vais donc essayer de voir Firebug ainis que de regarder votre exemple qui je pense me servira bien.

    Je reveindrais vous dire si cela a fonctionné

    a++

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Je viens de faire donc différents essai avec Firegox et Firebug en m'inspirant bien évidemment de la source de l'exemple que tu m'as donné.
    J'ai compris à peu près les erreurs que j'avais faite.

    Il me reste cependant une question et 2 bugs.

    1) Quel est la différence de charger le gpx directement ou par l'intermédiaire de la méthode proxy ?
    Il me semblait qu'il fallait utiliser le proxy pour des fichiers externes au site.

    2) Si je reste en version 1.0beta4 je n'ai pas la carte qui s'affiche sous opera alors que sous firefox oui (j'ai essayé aussi tous les exemple sur le site de l'IGN et c'est pareil, Opera version 10.10), par contre en chargeant la version 1.0beta5 là il y a du mieux...

    3) Ma page fonctionne très bien sous firefox mais par contre sous opera j'ai le message d'erreur suivant :

    JavaScript - http://jeton-api.ign.fr/getToken?key...4975.callback& non téléchargé

    Je n'arrive pas à comprendre pourquoi.

    Voici mon code :

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    <?php
    	header('Content-Type: text/html; charset=utf-8');
    	
    	// --- Démarrage de session
    	session_start();
    	
    			
    		$rep_racine = "../../";
    		$rep_donnees = $rep_racine."donnees/";
    		$rep_topos = $rep_donnees."topos/";
    		$rep_topo = $rep_topos.(int)$_GET['id']."/";
    		$rep_gps = $rep_topo."gps/";
    		$gpx = $rep_gps.(int)$_GET['id'].".gpx";
    		
    		if (file_exists($gpx))
    		{
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-FR" lang="fr-FR">
    	<head>
    		<title>Visualisation gpx</title>
    		<!-- IE8 compatibility mode -->
    		<!--[if IE 8]>
    		<meta http-equiv="X-UA-Compatible" content="IE=7"/>
    		<![endif]-->
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    		<meta http-equiv="Content-Script-Type" content="text/javascript" />
    		<meta http-equiv="Content-Style-Type" content="text/css" />
    		<meta http-equiv="cache-control" content="no-cache" />
    		
    		
    		
    		<script type="text/javascript" src="http://api.ign.fr/geoportail/api?v=1.0beta4&amp;key=672250580210104975&amp;instance=viewer&amp;includeEngine=false&amp;"><!-- --></script>
        	<script type="text/javascript" src="./geoportail/api/js/1.0beta5/GeoportalExtended.js"></script>
        	<script type="text/javascript">
        	<!--
    		// the viewer variable is declared by the API through the instance parameter
    		viewer = null;
    		var kbControl = null;
    		
    		function initGeoportalMap()
    		{
      			if (typeof(geoportalLoadviewer) != 'function')
      			{
        			OpenLayers.Console.error(OpenLayers.i18n('new.instance.failed'));
        			return;
      			}
      			
     			geoportalLoadviewer("viewerDiv", "normal", 'FXX', null, null, './geoportail/proxy.php' + '?url=');
      			viewer.addGeoportalLayers(['GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC']);
      			var style1 = new OpenLayers.StyleMap({
        			"default": new OpenLayers.Style({
          			strokeColor: '#0000ff',
          			strokeWidth: 3
        			}),
        			"select": new OpenLayers.Style({
          			strokeColor: '#3399ff',
          			strokeWidth: 3
        			})
      			});
                                          
                                          viewer.setLayersPanelVisibility(false);
    
    			var gpx1 = viewer.getMap().addLayer("GPX", "gpx1", "<?php echo $gpx; ?>", {
    				styleMap: style1,
        			visibility: true,
        			minZoomLevel: 8,
        			maxZoomLevel: 14
      			},
      			{});
      			
      			gpx1.events.register('loadend',gpx1, function(e){zoomToLyr();});
    			function zoomToLyr()
    			{
    				bounds = gpx1.features[0].geometry.getBounds();
     				viewer.getMap().zoomToExtent(bounds);
    			};
    		}
    		-->
        </script>
    	</head>
    	 <body onload="initGeoportalMap();">
        <div id="viewerDiv" style="width:98%;height:98%;"></div>
    
      </body>
    </html>
    
    <?php
    		}
    	
    ?>
    Merci de votre aide

    a++

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par XIII2008 Voir le message
    1) Quel est la différence de charger le gpx directement ou par l'intermédiaire de la méthode proxy ?
    Il me semblait qu'il fallait utiliser le proxy pour des fichiers externes au site.
    Le proxy est nécessaire dès que l'on charge des données qui ne sont pas prises en charge nativement par le butineur et que l'on veut manipuler :


    1. charger une page web : natif ;
    2. charger une image : natif ;
    3. charger un fichier XML (GPX, KML, etc ...) : pas natif, utilisation de XmlHTTPRequest(), proxy à cause des mesures de sécurité de Javascript : on ne peut interpréter que des données venant du même site que le site où a été récupéré le Javascript qui exécute le XmlHTTPRequest() (ouf!)

    Il est possible de coder un GPX sous forme d'une chaîne de caractères et de le charger sans proxy. Mais, c'est en fait complètement équivalent à charger ce GPX sous forme d'un fichier depuis le même site que la page

    Citation Envoyé par XIII2008 Voir le message
    2) Si je reste en version 1.0beta4 je n'ai pas la carte qui s'affiche sous opera alors que sous firefox oui (j'ai essayé aussi tous les exemple sur le site de l'IGN et c'est pareil, Opera version 10.10), par contre en chargeant la version 1.0beta5 là il y a du mieux...
    1.0beta4 et avant : utilisation de arguments.caller.callee non supporté par Opera
    1.0beta5 : j'ai modifié le code incriminé, tous les tests ne sont pas terminés, mais effectivement c'est beaucoup mieux

    Citation Envoyé par XIII2008 Voir le message
    3) Ma page fonctionne très bien sous firefox mais par contre sous opera j'ai le message d'erreur suivant :

    JavaScript - http://jeton-api.ign.fr/getToken?key...4975.callback& non téléchargé

    Je n'arrive pas à comprendre pourquoi.

    J'ai le même problème de temps à autre : tout ce passe comme si Opera refusait de faire la mise à jour du DOM et je ne sais pas pourquoi
    Il faudra résoudre ce boggue avant la mise en production ...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Bonjour Drichard

    Merci bcp pour ce complément d'information

    Par contre pour l'erreur de chargement la seule chose que je voix dans le débuggueur d'opéra est qu'apparemment l'accès à l'objet est interdit

    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
    Request summary
    URL
    jeton-api.ign.fr/getToken?key=672250580210104975&output=json&callback=Geoportal.GeoRMHandler.U672250580210104975.callback&
    Response
    403: Interdit
    Method
    GET 
    Host
    jeton-api.ign.fr
    Path
    /getToken
    Query arguments
    callback = Geoportal.GeoRMHandler.U672250580210104975.callback
    key = 672250580210104975
    output = json
    Par contre après avoir fait plusieurs tests sous opéra le problème ce pose à chaque fois que le code est sur un serveur local (localhost).
    Je viens d'essayer de le mettre en ligne sur notre site et là sans rien changer ça fonctionne.

    a++

Discussions similaires

  1. zoom centré sur le clic
    Par cmail dans le forum IGN API Géoportail
    Réponses: 25
    Dernier message: 19/03/2012, 16h08
  2. Cadre centré sur une page
    Par mrkinfo dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 21/02/2007, 21h25
  3. Effet zoom + ou - sur une vue aerienne
    Par cybernetique dans le forum Flash
    Réponses: 3
    Dernier message: 18/02/2007, 17h15
  4. Texte défilant centré sur plusieurs lignes
    Par mathieugamin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/11/2006, 10h49
  5. Une série de JButton superposée et centrée sur l'axe Y d'un BorderLayout.EAST?
    Par sdurand dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 16/10/2006, 14h59

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