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 :

Conserver la puce automatique malgré un "overlay"


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 19
    Points
    19
    Par défaut Conserver la puce automatique malgré un "overlay"
    Bonjour,

    Avec geoportal.load(), sans "overlays", une puce s'affiche sur les coordonnées de centrage.
    Exemple :
    http://api.ign.fr/geoportail/api/doc/examples/geoportalMap_simple1.html

    Si on veut faire disparaitre cette puce, il suffit de déclarer un "overlays", à vide (overlays:{}), ou avec un vrai "overlays" (KML au hasard).
    Exemple :
    http://api.ign.fr/geoportail/api/doc...simple1.0.html


    Ma question est la suivante :
    Si on veut conserver cette puce automatique, ET afficher un KML.. comment s'y prend-on ?
    Toujours au format geoportal.load(), que j'apprécie tant !
    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
      var iv= null;
        window.onload= function() {
            iv= Geoportal.load(
                // div's ID:
                'viewerDiv',
                // API's keys:
                ['1711091050407331029'],
                {// map's center :
                    // longitude in degrees:
                    lon:2.5457005,
                    // latitude in degrees:
                    lat:46.2366904
                },
                5,//map's zoom
                {
                    // only use maps :
                    layers:['GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC'],
                    // add a kml (url relative to this page) :
                    overlays:{
                        'kml':[{name:'TOP100',url:'../data/S_TOP100.kml'}]
                    }
                    ,language:'fr'
                }
            );
        };

  2. #2
    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
    Cette réponse répond à ta question...

    Il faut donc travailler ton kml...

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par cmail Voir le message
    Cette réponse répond à ta question...

    Il faut donc travailler ton kml...
    Merci pour l'info, je crois comprendre la problématique..
    Cependant, j'ai 300 KML sur mon serveur, je me vois mal les reprendre 1 par 1.

    Solution alternative : N'est-il pas possible de générer dans les options du geoportal.load() un 2eme KML (ou autre type d'overlay), mais qui ne provient pas d'une URL mais qui est créé de toute pièce sur place (comme le fait sans doute l'API Geoportail pour mettre cette puce sur ces coordonnées)...

    Sinon, ça fait bricolage, mais je peux appeler un kml de type marker.kml.php.. qui va me générer un fichier KML de façon dynamique en fonction des coordonnées passées en paramètre.. Mais ça devient lourd..

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 130
    Points : 1 765
    Points
    1 765
    Par défaut
    Et en chargeant dans une deuxième temps le kml par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     viewer.getMap().addLayer('KML' ...
    Et puis sinon, 300 kml par programme, ça se reprend !

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    Et en chargeant dans une deuxième temps le kml par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     viewer.getMap().addLayer('KML' ...
    Effectivement, ça fait de nombreuses semaines que je développais en tentant de rester sur simplement le geoportal.load().. J'essayais donc de trouver une solution "conforme".
    Mais en y ajoutant un addLayer séparé, oui, effectivement, ça fonctionne.
    Sauf que le KML se retrouvait dessus la puce.. et que l'inversement des ZIndex semblait compromis, vu que la puce était créé en interne.

    Du coup, sur le même principe, voilà ce que j'ai fait (fortement inspiré du forum et exemples) :
    En 2 mots, le KML est toujours fait dans le geoportal.load(), puis après rendu du KML, création d'un "vecteur" qui correspondra à notre puce. Puis inversion des ZIndex pour placer cette nouvelle puce dessus.


    Dans le geoportal.load() :
    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
    		overlays:{
    			'kml':[{
    				'name':'Le circuit',
    				'url':'/comresweb/206.kml', 
    
    				options:{
                        params:{
    						visibility:true,
    						skipAttributes:['name'], 
    			            preFeatureInsert:
    			                function(f) {
    			                    if (f) {
    			                    	f.style.strokeOpacity=1; // force l'opacité du tracé
    			                    	if (f.style.label!==undefined) {
                                            f.style.label= ''; // efface le libellé sens de circuit"
                                        }
    			                    }
    			                },
    			            panMapIfOutOfView:false,
    			    		eventListeners:{
    			                "loadend" : function() {
    			                     if (this.maxExtent) {
    			                         //Zoom et recentrage sur l'emprise maxi
    			                         this.setVisibility(true);
    			                         this.map.zoomToExtent(this.maxExtent);
    			                     }
    			                     js_addMarker(this);
    			                 }            
    							}
    			            },
    						options:{
                                hover:true
                            }
    					}
    					}]
    			},
    et une fonction js_addMarker():
    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
    function js_addMarker(p_kml_obj) {
    	viewer=ivfull.getViewer();
    
    	// les coordonnées du point
    	var l_point = new OpenLayers.Geometry.Point(4.24,45.497);
    
    	//Passage en projection Géoportail
    	var sourceproj = OpenLayers.Projection.CRS84; // WGS84
    	var destproj = viewer.projection; // projection Geoportail
    	l_point.transform(sourceproj, destproj);
    
    
    	var l_style = {
    		externalGraphic: /comresweb/epingle.png',
    		graphicWidth: 32,
    		graphicHeight: 32,
    		graphicYOffset: -32,
    		graphicXOffset: -16,
    	};
    
    	//Création du POI  à partir du point
    	var l_poi = new OpenLayers.Feature.Vector(l_point, null, l_style);
    
    	//couche du marqueur
    	var couche = new OpenLayers.Layer.Vector('Depart');
    	couche.addFeatures([l_poi]);
    
    	viewer.getMap().addLayer(couche);
    
    	// on inverse les zIndex pour placer le marqueur au dessus du tracé KML
    	var zi= p_kml_obj.getZIndex();
    	p_kml_obj.setZIndex(couche.getZIndex());
    	couche.setZIndex(zi);
    }

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

Discussions similaires

  1. [AC-2010] saut de numerotation automùatique malgré la touche echap
    Par Kigwenn dans le forum IHM
    Réponses: 2
    Dernier message: 10/12/2010, 15h44
  2. ResultSet trié automatiquement malgré order by
    Par Mageni dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 19/04/2010, 19h18
  3. puces automatiques dans Word
    Par MC Mouttet dans le forum Word
    Réponses: 1
    Dernier message: 29/05/2008, 13h57

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