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 :

Problème de contenu des popups KML (et de structure de fichiers KML générés par le site Géoportail)


Sujet :

IGN API Géoportail

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut Problème de contenu des popups KML (et de structure de fichiers KML générés par le site Géoportail)
    Bon, c'est encore moi, mais ça devrait être la dernière fois pour un bout de temps : Mon projet est finalisé à 99 % !
    (Heureusement, parce que on est peut-être à la limite de fuite des cerveaux de l'IGN en Uruguay )

    En essayant de "customiser" le CSS des popups de mes couches KML, je suis tombé par hasard sur ce qui me semble une anomalie.
    En effet, le code html des popups n'est pas le même suivant que lors de l'ajout de la couche KML on fait appel au style du fichier KML ou non
    ( extractStyles:true ou false )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {
    	formatOptions:{extractStyles:true}
    }
    1er cas : extractStyles:true

    Voici le code html, récupéré par Firebug :

    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
    <div id="chicken" class="gpPopup" style="position: absolute; overflow: hidden; border: 2px solid rgb(0, 0, 0); left: 388px; top: 384px; background-color: white; opacity: 1; width: 184px; height: 103px; z-index: 751;">
    	<div id="chicken_GroupDiv" style="position: relative; overflow: hidden;">
    		<div id="chicken_contentDiv" class="gpPopupContent" style="width: 164px; height: 101px; position: relative;">
    			<div class="gpPopupBody gpKML">
    				instance11770
    				<br>
    				Ceci est le texte descriptif du placemark Pentagone.
    				<br>
    				<table cellspacing="0" cellpadding="0" border="1">
    					<tbody>
    						<tr>
    							<td class="gpAttName">
    								attributetitle
    							</td>
    							<td class="gpAttValue">
    								Pentagone
    							</td>
    						</tr>
    						<tr>
    							<td class="gpAttName">
    								id
    							</td>
    							<td class="gpAttValue">
    								instance11770
    							</td>
    						</tr>						
    					</tbody>
    				</table>
    			</div>
    		</div>
    		<div id="chicken_close" class="gpPopupCloseBox" style="width: 17px; height: 17px; position: absolute; right: 1px; top: 1px;">
    		</div>
    	</div>
    </div>
    ... et voici le résultat :

    a) sur un placemark de type "polygone" :
    Nom : ES_true_01.jpg
Affichages : 661
Taille : 35,2 Ko

    b) sur un placemark de type "Point" :
    Nom : ES_true_02.jpg
Affichages : 651
Taille : 18,0 Ko


    2ème cas : extractStyles:false

    Voici le code html, récupéré par Firebug :

    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
    <div id="chicken" class="gpPopup" style="position: absolute; overflow: hidden; border: 2px solid rgb(0, 0, 0); left: 422px; top: 313px; background-color: rgb(255, 255, 255); opacity: 0.75; width: 184px; height: 107px; z-index: 751;">
    	<div id="chicken_GroupDiv" style="position: relative; overflow: hidden;">
    		<div id="chicken_contentDiv" class="gpPopupContent" style="width: 164px; height: 105px; position: relative;">
    			<div class="gpPopupHead gpKML">
    				instance11770
    			</div>
    			<div class="gpPopupBody gpKML">
    				Ceci est le texte descriptif du placemark "Pentagone".
    				<br>
    				<table cellspacing="0" cellpadding="0" border="1">
    					<tbody>
    						<tr>
    							<td class="gpAttName">
    								attributetitle
    							</td>
    							<td class="gpAttValue">
    								Pentagone
    							</td>
    						</tr>
    						<tr>
    							<td class="gpAttName">
    								id
    							</td>
    							<td class="gpAttValue">
    								instance11770
    							</td>
    						</tr>
    					</tbody>
    				</table>
    			</div>
    		</div>
    		<div id="chicken_close" class="gpPopupCloseBox" style="width: 17px; height: 17px; position: absolute; right: 1px; top: 1px;">
    		</div>
    	</div>
    </div>

    ... et voici le résultat :

    a) sur un placemark de type "polygone" :
    Nom : ES_false_01.jpg
Affichages : 668
Taille : 60,3 Ko

    b) sur un placemark de type "Point" :
    Nom : ES_false_02.jpg
Affichages : 621
Taille : 53,0 Ko


    Comme on le voit, le "titre" ("instance11770", ou "La Gurraz") est, dans le 2ème cas, dans une div spécifique dotée d'une class [gpPopupHead gpKML] et il bénéficie d'un style propre, alors que dans le 1er cas, il est dans la même div que la description et le tableau (éventuel) et ne peut donc pas bénéficier d'un style propre.

    Peut-être serait-il souhaitable de corriger cela, en harmonisant le cas 2 sur le cas 1) ?

    Pour ma part, en attendant cette correction éventuelle, je résous mon pb en n'utilisant donc PAS les styles inclus dans le fichier KML (donc 2ème cas). Cela m'oblige à déclarer le style depuis l'API. Le grave inconvénient est qu'en procédant ainsi, il me faut une couche KML pour chaque placemark polygonal, car ceux-ci doivent avoir un style différent ... ce qui est bien ennuyeux.

    Par ailleurs, mon fichier KML d'essai a été généré à partir du site Géoportail. avec les outils de dessin

    - pour pouvoir l'utiliser, il faut lui corriger la ligne 2 en incluant [xmlns=...]
    ... ce qui donne ceci :

    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
    <?xml version="1.0" encoding="UTF-8"?> 
    <kml xmlns="http://earth.google.com/kml/2.0">
      <Document>
        <name>Pentagone</name>
        <Style id="Surface_Style14123609207921412360920792">
          <LineStyle>
            <color>b20000ff</color>
            <colorMode>normal</colorMode>
            <width>5</width>
          </LineStyle>
          <PolyStyle>
            <outline>1</outline>
            <fill>1</fill>
            <color>66ff6b0f</color>
            <colorMode>normal</colorMode>
          </PolyStyle>
        </Style>
        <Placemark>
          <id>instance11770</id>
          <name>instance11770</name>
          <styleUrl>#Surface_Style14123609207921412360920792</styleUrl>
          <description><![CDATA[Ceci est le texte descriptif du placemark Pentagone.]]></description>
          <Polygon>
            <outerBoundaryIs>
              <LinearRing>
                <coordinates>6.810338752981573,45.51705138460195 6.813171165701324,45.5186451065664 6.819780128714077,45.51678074808685 6.817205208059758,45.514615609107544 6.812398689505028,45.51539747445963 6.810338752981573,45.51705138460195</coordinates>
              </LinearRing>
            </outerBoundaryIs>
          </Polygon>
          <ExtendedData>
            <Data name="attributetitle">
              <displayName>title</displayName>
              <value>Pentagone</value>
            </Data>
          </ExtendedData>
        </Placemark>
      </Document>
    </kml>
    Je ne suis pas sûr que sa structure, pour un polygone, soit des plus sympa :
    - Le titre du popup est le "name" du placemark (normal !), ce qui donne "instance11770" ... Boff
    - La description est comme il faut, là où il faut, (comme les charmes de Monica Bellucci )
    - le VRAI titre (içi :"Pentagone") se trouve relégué dans un tableau assez abscon, en tant que valeur d'un objet "attributtitle" ... re-boff

    Bien sûr, il n'est pas difficile de corriger le fichier KML à la main, mais bon ...


    Voilà ! C'était juste pour pourrir le début de la semaine à la pourtant très sympathique équipe de l'IGN, qui ne le mérite pourtant pas !

  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,

    Citation Envoyé par Duriv73 Voir le message
    ...

    Comme on le voit, le "titre" ("instance11770", ou "La Gurraz") est, dans le 2ème cas, dans une div spécifique dotée d'une class [gpPopupHead gpKML] et il bénéficie d'un style propre, alors que dans le 1er cas, il est dans la même div que la description et le tableau (éventuel) et ne peut donc pas bénéficier d'un style propre.

    Peut-être serait-il souhaitable de corriger cela, en harmonisant le cas 2 sur le cas 1) ?
    En effet, le sujet mérite analyse et réflexion

    Pour ma part, en attendant cette correction éventuelle, je résous mon pb en n'utilisant donc PAS les styles inclus dans le fichier KML (donc 2ème cas). Cela m'oblige à déclarer le style depuis l'API. Le grave inconvénient est qu'en procédant ainsi, il me faut une couche KML pour chaque placemark polygonal, car ceux-ci doivent avoir un style différent ... ce qui est bien ennuyeux.
    Il y a moyen de mettre tout dans une même couche en rendant les styles dynamiques. C'est un mécanisme OpenLayers 2 (bibiliothèque sous jacente à l'API Géoportail) dont on peut trouver un exemple d'application ici :

    http://dev.openlayers.org/releases/O...s-context.html


    Par ailleurs, mon fichier KML d'essai a été généré à partir du site Géoportail. avec les outils de dessin

    - pour pouvoir l'utiliser, il faut lui corriger la ligne 2 en incluant [xmlns=...]
    En effet, c'est sale si le namespace n'est pas spécifié. On va regarder.

    Je ne suis pas sûr que sa structure, pour un polygone, soit des plus sympa :
    - Le titre du popup est le "name" du placemark (normal !), ce qui donne "instance11770" ... Boff
    - La description est comme il faut, là où il faut, (comme les charmes de Monica Bellucci )
    - le VRAI titre (içi :"Pentagone") se trouve relégué dans un tableau assez abscon, en tant que valeur d'un objet "attributtitle" ... re-boff
    C'est à regarder aussi...

    Voilà ! C'était juste pour pourrir le début de la semaine à la pourtant très sympathique équipe de l'IGN, qui ne le mérite pourtant pas !
    Merci

  3. #3
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Bonjour,

    Je vais compléter la réponse de Gilles sur la deuxième partie du message (comme ça on aura été bien complémentaires )

    Citation Envoyé par Duriv73 Voir le message
    Par ailleurs, mon fichier KML d'essai a été généré à partir du site Géoportail. avec les outils de dessin

    - pour pouvoir l'utiliser, il faut lui corriger la ligne 2 en incluant [xmlns=...]
    C'est une remarque très judicieuse : le namespace du KML n'est pas défini dans l'export depuis le portail, ce qui poser des problèmes par la suite. On va faire en sorte de corriger ça sur le portail. Par contre, en attendant le correctif, il est préférable d'utiliser le namespace "xmlns="http://www.opengis.net/kml/2.2"" (plutôt que "xmlns="http://earth.google.com/kml/2.0") de manière à se baser sur les standards ouverts définis par l'OGC (Open Geospatial Consortium), en l'occurence le dernier standard version 2.2, plutôt que sur une structuration dépendant de Google.

    Citation Envoyé par Duriv73 Voir le message
    Je ne suis pas sûr que sa structure, pour un polygone, soit des plus sympa :
    - Le titre du popup est le "name" du placemark (normal !), ce qui donne "instance11770" ... Boff
    - La description est comme il faut, là où il faut, (comme les charmes de Monica Bellucci )
    - le VRAI titre (içi :"Pentagone") se trouve relégué dans un tableau assez abscon, en tant que valeur d'un objet "attributtitle" ... re-boff
    Nous sommes tout à fait conscients de ce petit biais de construction. Je ne vais pas rentrer dans les détails de conception, mais comme le Géoportail se base sur une API Flash c'est l'attribut "name" qui est utilisé en lieu et place de l'attribut "id" pour identifier les objets du KML. Ce n'est pas très propre, mais essayer de contourner cette bizarrerie coûterait beaucoup de temps de développement. En conséquence, il est indispensable que les objets du KML aient une valeur de "name" identique à celle de l'id, et l'attribut "name" est en quelque sorte protégé et inexploitable (et pas très sexy, contrairement à Monica ). Lors de l'export KML depuis un croquis, le choix a donc été fait de contourner l'indisponibilité du name en ajoutant une balise supplémentaire "attributetitle" dans un tableau ExtendedData, cette balise contenant le titre de chaque objet qui aurait dû se trouver dans l'attribut "name" (Ca suit au fond?). C'est le mieux qu'on pouvait faire moyennant la contrainte sur l'attribut "name". Voilà pour l'explication de cette structuration qui peut paraître curieuse.

    Les choses ont été bien faites pour que sur le site geoportail.gouv.fr, lors du réimport d'un KML créé depuis un croquis, cet attribut supplémentaire "attributetitle" prenne le pas sur l'attribut "name" à l'heure d'attribuer un titre aux objets KML. Fais le test : si tu réimportes ton KML sur geoportail.gouv.fr, tes objets auront bien gardé le titre que tu leur avais défini à la création du croquis, tant bien même ce titre ait été enregistré via "attributetitle" et pas "name". Sur le portail, la boucle est bouclée et tout est cohérent. En revanche, il est vrai que l'on perd cette cohérence si on utilise l'API Javascript, qui elle ne reconnaît pas "attributetitle" comme titre pré-éminent par rapport à la balise "name". C'est un point d'amélioration que l'on peut envisager pour garantir la cohérence entre le portail et l'API Javascript, on va y regarder. Merci pour la vigilance en tous cas.
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  4. #4
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut OK les gars ... bien compris !
    Citation Envoyé par gcebelieu Voir le message
    ...
    Il y a moyen de mettre tout dans une même couche en rendant les styles dynamiques. C'est un mécanisme OpenLayers 2 (bibiliothèque sous jacente à l'API Géoportail) dont on peut trouver un exemple d'application ici :

    http://dev.openlayers.org/releases/O...s-context.html
    Merci Gilles. Ca a l'air bien , mais je ne sais pas si je vais m'en sortir : C'est bien compliqué pour moi !

    Citation Envoyé par jrenard Voir le message
    Citation Envoyé par Duriv73 Voir le message
    Je ne suis pas sûr que sa structure, pour un polygone, soit des plus sympa :
    - Le titre du popup est le "name" du placemark (normal !), ce qui donne "instance11770" ... Boff
    - La description est comme il faut, là où il faut, (comme les charmes de Monica Bellucci )
    - le VRAI titre (içi :"Pentagone") se trouve relégué dans un tableau assez abscon, en tant que valeur d'un objet "attributtitle" ... re-boff
    Nous sommes tout à fait conscients de ce petit biais de construction. Je ne vais pas rentrer dans les détails de conception, mais comme le Géoportail se base sur une API Flash c'est l'attribut "name" qui est utilisé en lieu et place de l'attribut "id" pour identifier les objets du KML. Ce n'est pas très propre, mais essayer de contourner cette bizarrerie coûterait beaucoup de temps de développement. En conséquence, il est indispensable que les objets du KML aient une valeur de "name" identique à celle de l'id, et l'attribut "name" est en quelque sorte protégé et inexploitable (et pas très sexy, contrairement à Monica ). Lors de l'export KML depuis un croquis, le choix a donc été fait de contourner l'indisponibilité du name en ajoutant une balise supplémentaire "attributetitle" dans un tableau ExtendedData, cette balise contenant le titre de chaque objet qui aurait dû se trouver dans l'attribut "name" (Ca suit au fond?). C'est le mieux qu'on pouvait faire moyennant la contrainte sur l'attribut "name". Voilà pour l'explication de cette structuration qui peut paraître curieuse.
    Bon ben d'accord, Jérémy. Une fois que c'est expliqué ...

    Citation Envoyé par jrenard Voir le message
    ...
    Sur le portail, la boucle est bouclée et tout est cohérent. En revanche, il est vrai que l'on perd cette cohérence si on utilise l'API Javascript, qui elle ne reconnaît pas "attributetitle" comme titre pré-éminent par rapport à la balise "name". C'est un point d'amélioration que l'on peut envisager pour garantir la cohérence entre le portail et l'API Javascript, on va y regarder. Merci pour la vigilance en tous cas.
    Oui, ça, ce serait vraiment bien !


    Encore une fois, merci à vous deux pour vos réponses toujours claires, sympathiques et constructives.

  5. #5
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut
    ... oui, ce serait vraiment bien, et ce qui serait carrément le top, ce serait de donner aux popups KML (et GPX, tant qu'à faire) de l'API le même aspect que celui des popups KML du site Geoportail.gouv, que je trouve plutot sympa !

  6. #6
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Citation Envoyé par Duriv73 Voir le message
    ... oui, ce serait vraiment bien, et ce qui serait carrément le top, ce serait de donner aux popups KML (et GPX, tant qu'à faire) de l'API le même aspect que celui des popups KML du site Geoportail.gouv, que je trouve plutot sympa !
    Merci pour le compliment, c'est apprécié
    Pour le reste, c'est une réflexion qui nous a déjà effleuré l'esprit, mais cela n'a pas encore dépassé le stade de la réflexion car d'autres évolutions sont peut-être plus importantes (d'autant que les pop-ups du site geoportail.gouv.fr sont assez récentes, elles ont été mises en place au mois de juin).
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  7. #7
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut
    Bon, ben c'est pas moi qui vais me mêler de définir les priorités des développeurs de l'API, n'est-ce pas !

    Les seules choses que je peux dire, c'est "Ca serait bien ... "(déjà dit), et "Faites pour le mieux, les gars"

    Quoi qu'il en soit, même si dans nos chatières, nous pouvons rêver d'améliorations ici où là, tant le site du géoportail.gouv que l'API géoportail mis à disposition, sont de merveilleux outils rendant accessibles les SIG au plus grand nombre, professionnels et amateurs. Merci pour cela.
    Je suis maintenant retraité, passionné de photo et de nature, et mes modestes projets d'utilisation de l'API ne visent qu'à partager ces passions.
    Mais qu'est-ce que j'aurais aimé bénéficier de tels outils lorsque je travaillais en bureau d'études Génie Civil !

    Bon, à l'attention de Gilles Cébelieu :

    Citation Envoyé par gcebelieu Voir le message
    Il y a moyen de mettre tout dans une même couche en rendant les styles dynamiques. C'est un mécanisme OpenLayers 2 (bibiliothèque sous jacente à l'API Géoportail) dont on peut trouver un exemple d'application ici :

    http://dev.openlayers.org/releases/O...s-context.html
    ... j'ai regardé ça ... essayé de comprendre ... mais là, c'est trop fort pour moi !

    Peut-être qu'un petit exemple de code, plus circonscrit, pourrait m'aider ?
    Je n'ai que deux placemarks de type "polygone" pour lesquels je souhaiterais définir un style spécifique pour chacun d'eux, plus un troisième style pour les (quelques) placemarks de type "Points" de la couche KML ... Pour le moment, je ne sais que définir un style pour l'ensemble des éléments d'une couche KML.

  8. #8
    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
    Sur cette page http://mga.alwaysdata.net/geoportail/exemples/pge.html , j'utilise cette fonctionnalité de "context".

    La page http://randonnee.pedestre85.free.fr/...tion_2012.html (qui ne fonctionne plus) montre une utilisation plus avancé des règles sur un contexte.
    Je l'ai plus ou moins adapté pour l'api 2.x à cette adresse : http://mga.alwaysdata.net/geoportail..._adoption.html

  9. #9
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut Presque OK ...
    Merci à mga_geo


    Citation Envoyé par mga_geo Voir le message
    Sur cette page http://mga.alwaysdata.net/geoportail/exemples/pge.html , j'utilise cette fonctionnalité de "context".

    La page ... montre une utilisation plus avancé des règles sur un contexte.
    Je l'ai plus ou moins adapté pour l'api 2.x à cette adresse : http://mga.alwaysdata.net/geoportail..._adoption.html
    J'ai vraiment du mal avec le 1er exemple de mga_geo. Ça va nettement mieux avec le second (Adoptions), que je trouve par ailleurs très intéressant. A force de bosser dessus, j'ai enfin compris le principe de ces styles dynamiques.


    Par contre, si j'arrive à reproduire et à faire fonctionner cet exemple, je ne parviens pas à adapter le principe à mon propre code. L'exemple de mga_geo et le mien ont des structures différentes. Du coup, bien qu'ayant compris le principe, je n'arrive pas à adapter. Manque criant de fondamentaux, à l'évidence !

    Bon, voiçi mon code de départ (càd avant tentative de mise en oeuvre des styles dynamiques):

    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    <!DOCTYPE html>
    	
    <html>
    <head>
        <title>JS API Tutorials - Quickstart</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico"/>
    	<link rel="stylesheet" href="quickstart 11.css">
    </head>
      
    <body style="background-color:#585858">
    	<h1 style="color: white; font-family:verdana; font-size:150%; text-align:center">
    		Carte prototype
    	</h1>
        <form id="gpLangChange" name="gpLangChange" action="#">
          <select style="font-size:0.75em;" id="gpChooseLang" name="gpChooseLang" size="1">
            <option value="en">English</option>
            <option value="fr">Français</option>
          </select>
        </form>
        <div id="viewerDiv"></div>
    	<script type="text/javascript" src="http://api.ign.fr/geoportail/api/js/latest/GeoportalExtended.js"></script>
    	
    	
        <script type="text/javascript">
    /*
     * Copyright (c) 2008-2011 Institut Geographique National France, released under the
     * BSD license.
     */
    
    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: cancels the timer "__Geoportal$timer" before its end
            //clearTimeout: annule le minuteur "__Geoportal$timer" avant sa fin
            window.clearTimeout(__Geoportal$timer);
             __Geoportal$timer= null;
        }
    
        /**
        * It may happen that the init function is executed before the API is loaded
        * Addition of a timer code that waits 300 ms before running the init function
        *
        * 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 {
                eval('var f='+clss[i]);
            } catch (e) {
                f= undefined;
            }
            if (typeof(f)==='undefined') {
                 __Geoportal$timer= window.setTimeout(retryClbk, 300);
                return false;
            }        
        }
        return true;
    }
    
    var Geoportal$translations= {
        'new.instance.failed':
        {
       
            'en':"Map creation failed",
           
            'fr':"Création de la carte échouée"
        },
        'legal':
        {
    
            'en':"Terms of Use",
         
            'fr':"Mentions Légales"
        },
        'example_jscode':
        {
           
            'en':"See the example's JavaScript code",
           
            'fr':"Voir le code Javascript de l'exemple"
           
        }
    
    };
    
    /**
     * Function: translate
     * Allow changing current language in the web page.
     *
     * Parameters:
     * eids - {Array({String})} list of DOM elements id whose content is i18n's
     *      governed. ['example_title', 'example_explain', 'example_jscode',
     *      'legal' ] is prepended.
     * vwrs - {Array({String}) list of variable names of type
     *      {<Geoportal.Viewer>} that handle the i18n "changelang" events.
     */
    function translate(eids, vwrs) {
        Geoportal.Lang.add(Geoportal$translations);
    
        if (!eids) {
            eids= [];
        }
        eids.unshift('example_title');
        eids.unshift('example_explain');
        eids.unshift('example_jscode');
        eids.unshift('legal');
    
        var eids$i18n= function() {
            var e= null;
            for (var i= 0, l= eids.length; i<l; i++) {
                e= OpenLayers.Util.getElement(eids[i]);
                if (e) {
                    var t= e.getAttribute('type');
                    if (t && t.match(/^button$/i)) {
                        e.value= OpenLayers.i18n(eids[i]);
                    } else {
                        e.innerHTML= OpenLayers.i18n(eids[i]);
                    }
                }
            }
        };
        eids$i18n();
    
        var slct= OpenLayers.Util.getElement('gpChooseLang');
        if (slct) {
            slct.onchange= function() {
                //Changing the map's language
                if (vwrs) {
                    var v;
                    for (var i= 0, l= vwrs.length; i<l; i++) {
                        try {
                            eval('var v= '+vwrs[i]);
                        } catch (e) {
                            v= undefined;
                        }
                        if (v) {
                            v.getMap().setLocale(this.options[this.selectedIndex].value);
                        }
                    }
                } else {
                    if (window.viewer!=undefined &&
                        typeof(Geoportal)=='object' && typeof(Geoportal.Viewer)!='undefined' &&
                        (viewer instanceof Geoportal.Viewer)) {
                        viewer.getMap().setLocale(this.options[this.selectedIndex].value);
                    } else {
                        // minimum API:
                        OpenLayers.Lang.setCode(this.options[this.selectedIndex].value);
                    }
                }
    
                //Translation of expressions due to the languages's change which has been made
                //Traduction des expressions suite au changement de langue effectué (i18n= internationalisation)
                eids$i18n();
                this.blur();
            };
            //Retrieval of the default language (the one of the Web browser's installation)
            //Récupération de la langue par défaut(celle d'installation du butineur Web)
            var language= OpenLayers.Lang.getCode();
            var re= new RegExp("^"+language);
            //Search in the change language form of the langage that best matches
            //the web browser's language.  This language is selected
            //
            //Recherche dans le formulaire de la langue qui correspond au mieux à la
            //langue du butineur Web.  Cette dernière est selectionnée
            for (var i= 0; i<slct.options.length; i++) {
                if (slct.options[i].value.match(re)) {
                    slct.options[i].selected= true;
                }
            }
        }
    }
    	</script>     
        
    
    <script type="text/javascript">
    
    /*******************************************************************
     * Copyright (c) 2008-2011 Institut Geographique National France, 
     * released under the BSD license.
     ******************************************************************/
    
    /*****************************************************
     * Property: key
     *
     * The API key to use
     ****************************************************/
     
    var APIkey= "zazzr0hbvffko8hltl1pjkj0";
    
    /*****************************************************
     * Property: viewer
     * {<Geoportal.Viewer>} the viewer global instance.
     ****************************************************/
    viewer= null;
    
    // ----- Variables : Coordonnées (Lat., Long.) et Zoom du centre de la carte
     var LonMaCarte= 2.418611;			// )
     var LatMaCarte= 48.842222;			// ) Paris
     var ZoomMaCarte= 10;				// )
     
     
     /*****************************************************
     * Property: layersVisibility
     * The initial state of visibility of all layers of the map
     ****************************************************/
    var layersVisibility = {};
    
    /*****************************************************
     * Property: layersOpacity
     * The initial state of opacity of all layers of the map
     ****************************************************/
    var layersOpacity = {};
    
    
    /*****************************************************
     * Function: initMap
     * Load the application. Called when all information
     * have been loaded by <loadAPI>().
     ****************************************************/
    function initMap() {
       
        // ----- Traduction
        translate();
    
    	
    	// ----- Modification du style pour une couche KML de type Points(Début)	
    	var myStyleMapKml01 = new OpenLayers.StyleMap({
    		"default": new OpenLayers.Style({
    			'pointRadius': 10,
    			// ----- Couleur trace et bord des repères			
    			'fillColor': '#ff0000'
    		}),
    		"select": new OpenLayers.Style({
    			'pointRadius': 15,
    			// ----- Couleur trace et bord des repères sélectionnés			
    			'fillColor': '#ff00ff'
    		})
    	});
    	// ----- Modification du style pour une couche KML de type Points(Début)			
    	
    
    	// ----- Modification du style pour une couche KML de type Polygone(Début)	
    	var myStyleMapKml02 = new OpenLayers.StyleMap({
    		"default": new OpenLayers.Style({
    			// ----- Couleur remplissage polygone			
    			'fillColor': '#FF99CC',
    			'fillOpacity': 0.25,
    			// ----- Bordure polygone
    			'strokeColor': '#FF00FF',
    			'strokeOpacity': 0.8,
    			'strokeWidth': 4
    		}),
    		"select": new OpenLayers.Style({
    			// ----- Couleur remplissage polygone			
    			'fillColor': '#8000FF',
    			'fillOpacity': 0.4,
    			// ----- Bordure polygone
    			'strokeColor': '#8000FF',
    			'strokeOpacity': 0.8,
    			'strokeWidth': 4
    		})
    	});
    	// ----- Modification du style pour une couche KML de type Polygone(Fin)		
    	
    	// ----- Modification du style pour une couche KML de type Cercle transparent(Début)	
    	var myStyleMapKml03 = new OpenLayers.StyleMap({
    		"default": new OpenLayers.Style({
    			// ----- Couleur remplissage polygone			
    			'fillColor': '#FFFFFF',
    			'fillOpacity': 0,
    			// ----- Bordure polygone
    			'strokeColor': '#FF0000',
    			'strokeOpacity': 1,
    			'strokeWidth': 4
    		}),
    		"select": new OpenLayers.Style({
    			// ----- Couleur remplissage polygone			
    			'fillColor': '#8000FF',
    			'fillOpacity': 0.4,
    			// ----- Bordure polygone
    			'strokeColor': '#8000FF',
    			'strokeOpacity': 0.8,
    			'strokeWidth': 4
    		})
    	});
    	// ----- Modification du style pour une couche KML de type Cercle transparent(Fin)			
    	
    
    	// ----- Modification du style pour une couche GPX (Début)
    	var myStyleMapGpx01 = new OpenLayers.StyleMap({
    		"default": new OpenLayers.Style({
    			'pointRadius': 10,
    			// ----- Couleur trace et bord features
    			'strokeColor': '#FFFF00',	
    			// ----- Couleur de remplissage features
    			'fillColor': '#FF0000'
            }),
    		"select": new OpenLayers.Style({
    			'pointRadius': 15,
    			'strokeColor': '#ff00ff',
    			'fillColor': '#ff00ff'
            })
        });
    	// ----- Modification du style pour une couche GPX (Fin)
    	
        viewer= new Geoportal.Viewer.Default('viewerDiv', OpenLayers.Util.extend
    		(
    			{
    				mode:"normal",
    				territory:'FXX',
    				// ----- Systèmes de projection 
    				// displayProjection:['IGNF:RGF93G', 'IGNF:ETRS89LCC'], // --- Défaut : Réseau géodésique français 1993 (Lat., Long.), Alternatif : ETRS89 Lambert Conformal Conic
    				// displayProjection:['IGNF:RGF93G', 'IGNF:LAMBE'], // --- Défaut : Réseau géodésique français 1993 (Lat., Long.), Alternatif : Lambert II étendu
    				// displayProjection:['IGNF:RGF93G', 'LAMB93'], // --- Défaut : Réseau géodésique français 1993 (Lat., Long.), Alternatif : Lambert 93
    				// displayProjection:['IGNF:WGS84G', 'EPSG:3857'],	// --- Défaut : World Geodetic System 1984 (Lat., long.), Alternatif : Web Mercator Sphérique ou World Geodetic System 1984 (Pseudo Mercator)
    				controlsOptions:{
    					logoSize:30
    				}
    			},		
            // API keys configuration variable set by <Geoportal.GeoRMHandler.getConfig>
            // variable contenant la configuration des clefs API remplie par <Geoportal.GeoRMHandler.getConfig>
            window.gGEOPORTALRIGHTSMANAGEMENT===undefined? {'apiKey':APIkey} : gGEOPORTALRIGHTSMANAGEMENT
    		)
        );
    	
        if (!viewer) {
            // problem ...
            OpenLayers.Console.error(OpenLayers.i18n('new.instance.failed'));
            return;
        }
       
        // ----- Layers (WMTS)
        viewer.addGeoportalLayers(
    		[
    		'CADASTRALPARCELS.PARCELS:WMTS',		
    		'ORTHOIMAGERY.ORTHOPHOTOS:WMTS',
    		'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMTS',
    		],
    		{
    		'CADASTRALPARCELS.PARCELS:WMTS':{visibility:false, opacity: 1},
    		'ORTHOIMAGERY.ORTHOPHOTOS:WMTS':{visibility:true, opacity: 1},
    		'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMTS':{visibility:true, opacity: 0.3},
    		//global:{opacity:0.75}
    		}
    	);	
    	
    	// ----- External or user's layers (KML)
    	velib = viewer.getMap().addLayer(
    	    // Type couche
    		"KML",
    		// Nom couche
    		'Couche KML : Velib',
    		// URL du fichier KML		
    		"./assets/velib.kml",
    		// Options KML
    		{
    			visibility:true,
    			opacity:1,
    			styleMap:myStyleMapKml01,				
    		},
    		{
    			formatOptions:{extractStyles:false}
    		}  
    		// ----- Options popup		
    	);
    	// ----- External or user's layers (KML)
    	zaedpr = viewer.getMap().addLayer(
    	    // Type couche
    		"KML",
    		// Nom couche
    		'ZAEDPR',
    		// URL du fichier KML		
    		"./assets/ZAEDPR.kml",
    		// Options KML
    		{
    			visibility:true,
    			opacity:1,
    			styleMap:myStyleMapKml02,	
    		},
    		{
    			formatOptions:{extractStyles:false}
    		}  
    		// ----- Options popup		
    	);	
    
    	// ----- External or user's layers (KML)
    	zanpsdpr = viewer.getMap().addLayer(
    	    // Type couche
    		"KML",
    		// Nom couche
    		'ZANPSDPR',
    		// URL du fichier KML		
    		"./assets/ZANPSDPR.kml",
    		// Options KML
    		{
    			visibility:true,
    			opacity:1,
    			styleMap:myStyleMapKml03,
    		},
    		{
    			formatOptions:{extractStyles:false}
    		}  
    		// ----- Options popup		
    	);	
    	
    	// ----- External or user's layers (GPX)	
    	route = viewer.getMap().addLayer(
    		// Type couche
            'GPX',
    		// Nom couche		
            'Couche GPX : Route',
    		// URL du fichier GPX		
            "./assets/routes.gpx",
    		// Options GPX		
            {
                visibility:true,
    			opacity:1,
    			styleMap:myStyleMapGpx01,
            }
    		// ----- Options popup			
        );
    
    	// Options du selectControl
    	var selectCtrlOpts= OpenLayers.Util.extend( viewer.getMap().getPopupDefaults('KML'), {
    		hover:false,
    		renderIntent: "select",
    		autoActivate: true,
    	});
    	// Création du selectControl
    	var selectCtrl= new OpenLayers.Control.SelectFeature([velib, zaedpr, zanpsdpr, route], selectCtrlOpts);
    	// Ajout du selectControl
    	viewer.getMap().addControl(selectCtrl);	
    	
    	
    	
    	
    	// ----- Enregistrement des valeurs initiales de visibilité/opacité des couches
    	var layers = viewer.getMap().layers;
    	for (var i=0; i<layers.length; i++) {
    		layersVisibility[layers[i].name] = layers[i].getVisibility();
    		layersOpacity[layers[i].name] = layers[i].opacity;
    	}	
    	
    	
        // ----- Autres (Centrage de la carte et niveau de zoom)
    	viewer.getMap().setCenterAtLonLat(LonMaCarte, LatMaCarte, ZoomMaCarte);
    	
        // ----- Ajout de la barre de mesures (Mesure de distance, mesure de surface, mesure d'azimuth)	
    	// Récupération de la toolbox
    	var tbx= viewer.getMap().getControlsByClass("Geoportal.Control.ToolBox")[0];
    	var panel= new Geoportal.Control.Panel({
    		div:OpenLayers.Util.getElement(tbx.id+"_search")
    	});
    	// Ajout de la barre de mesure 
    	viewer.getMap().addControls([panel]);
    								   
        // ----- Création du contrôle d'impression
    	var nv= viewer.getMap().getControlsByClass("Geoportal.Control.NavToolbar")[0];
    	nv.addControls([new Geoportal.Control.PrintMap()]);
     							
    	var measurebar= new Geoportal.Control.MeasureToolbar({
    		div: OpenLayers.Util.getElement(tbx.id+"_measure"),
    		displaySystem:(viewer.getMap().getProjection().getProjName()=="longlat"?"geographic":"metric"),
    		targetElement: OpenLayers.Util.getElement(tbx.id+"_meares")
    	});
    	// Ajout du contrôle d'impression	
    	viewer.getMap().addControl(measurebar);
    	
    	
    	// ----- Création et ajout de la LayerToolbar
    	//         (Réservé)
    	// ------------------------------------------
    		   												
        // ----- Création du Bouton de réinitialisation de la carte :
    	//      [RECENTRAGE de la carte (Lon, Lat, Zoom) aux valeurs de départ]
    	var button = new OpenLayers.Control.Button({
    		displayClass: "olControlZoomOrig",		
    		title: "Réinitialisation Carte",
    		trigger: function() {
    			viewer.getMap().setCenterAtLonLat(LonMaCarte,LatMaCarte,ZoomMaCarte);
    			// Réaffectation des valeurs initiales de visibilité/opacité des couches
    			var layers = viewer.getMap().layers;
    			for (var i=0; i<layers.length; i++) {
    				layers[i].setVisibility(layersVisibility[layers[i].name]);
    				layers[i].setOpacity(layersOpacity[layers[i].name]);
    			}
    		}
    	});
    	// Ajout du bouton		
    	panel.addControls(button);	
    									
        // ----- Création du Bouton de centrage de la carte (Lon, Lat, Zoom) sur Sartène (Corse)								
    	var button = new OpenLayers.Control.Button({
    		displayClass: "olControlZoomSartene",		
    		title: "Centrage Carte sur Sartène",
    		trigger: function() {
    			viewer.getMap().setCenterAtLonLat(8.833,41.588,10);
    		}
    	});
    	// Ajout du bouton			
    	panel.addControls(button);	
    }
    
    
    /*****************************************************
     * Function: loadAPI
     * Load the configuration related with the API keys.
     * Called on "onload" event.
     * Call <initMap>() function to load the interface.
     *****************************************************/
    function loadAPI() {
        // wait for all classes to be loaded
        // on attend que les classes soient chargées
        if (checkApiLoading('loadAPI();',['OpenLayers','Geoportal','Geoportal.Viewer','Geoportal.Viewer.Default'])===false) {
            return;
        }
        
        Geoportal.GeoRMHandler.getConfig([APIkey], null,null, {
            onContractsComplete: initMap
        });
    	
    	// ----- Pour un affichage EN ENTIER des noms des couches dans le Gestionnaire de couches
    	Geoportal.Control.LayerSwitcher.LAYER_LABEL_MAXLENGTH = 50;
    	Geoportal.Control.LayerSwitcher.LAYER_LABEL_REPLACEMENT_INDEX = 47;	
    }
    
    // assign callback when "onload" event is fired
    // assignation de la fonction à appeler lors de la levée de l'évènement "onload"
    window.onload= loadAPI;
    </script>
    
    </body>
    </html>
    Ca, ca fonctionne, avec deux couches KML distinctes et deux fichiers KML distincts : ZAEDPR et ZANPSDPR, et un style différent pour chacun des 2.
    Ceci (je veux dire : les 2 couches !) affiche une zone polygonale (ZAEDPR ) entièrement contenue dans un "cercle" polygonal plus grand (ZANPSDPR). Avec ça, je peux sélectionner mes 2 placemarks (même si l'un est contenu géographiquement dans l'autre), j'ai mes popups qui vont bien, bref, ça baigne. Mais ... 2 couches !

    Nom : Proto.jpg
Affichages : 585
Taille : 191,8 Ko

    Le but serait donc de réunir dans une même couche KML le polygone, le "cercle" (+ quelques points isolés, pour faire bonne mesure !). Donc une seule couche, un seul fichier KML, mais des styles dynamiques différents :
    - 1 pour le polygone
    - 1 pour le cercle,
    - 1 pour les points isolés.

    J'ai donc prévu comme code ceci :

    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
        var style = new OpenLayers.Style({
    		fillOpacity: 1.0
        });	
    
        var context = function(feature) {
    		return {
    			"attribute1": feature.attributes['attribute1'].value
    		};
        }
    	
    	// Style polygone ZAEDPR
        var rule01 = new OpenLayers.Rule({
    		context: context,
    		filter: new OpenLayers.Filter.Comparison({
    			type: OpenLayers.Filter.Comparison.EQUAL_TO,
    			property: "attribute1",
    			value: 1,
    		}),
    		symbolizer: {
    			fillColor: '#FF99CC',
    			fillOpacity: 0.25,
    			strokeColor: '#FF00FF'
    			strokeOpacity: 0.8,
    			strokeWidth: 4			
    		}
        });
    	
    	// Style polygone ZANPSDPR	
        var rule02 = new OpenLayers.Rule({
    		context: context,
    		filter: new OpenLayers.Filter.Comparison({
    			type: OpenLayers.Filter.Comparison.EQUAL_TO,
    			property: "attribute1",
    			value: 2,
    		}),
    		symbolizer: {
    			fillColor: '#FFFFFF',
    			fillOpacity: 0,
    			strokeColor: '#FF0000'
    			strokeOpacity: 1,
    			strokeWidth: 4			
    		}
        });
    
    
    	// Style points	
        var rule03 = new OpenLayers.Rule({
    		context: context,
    		filter: new OpenLayers.Filter.Comparison({
    			type: OpenLayers.Filter.Comparison.EQUAL_TO,
    			property: "attribute1",
    			value: 3,
    		}),
    		symbolizer: {
    			pointRadius: 10,
    			fillColor: '#ff0000',
    		}
        });	
    
        style.addRules([rule01, rule02, rule03,]);
        var styleMap = new OpenLayers.StyleMap(style);
        styleMap.addUniqueValueRules("default", "attribute1", context);		
    		
    	rosuel = viewer.getMap().addLayer(
    	    // Type couche
    		"KML",
    		// Nom couche
    		"Points d'intérêt",
    		// URL du fichier KML		
    		"./assets/rosuel.kml",
    		// Options KML
    		{
    			visibility:true,
    			opacity:1,
    			//styleMap: styleMap,	
    			
    			//panMapIfOutOfView: false,
    			//minZoomLevel: 0,
    			//maxZoomLevel: 16			
    		},
    		{
    			formatOptions:{extractStyles:false}
    		}  
    		// ----- Options popup		
    	);
    Et c'est là que je perds pied :
    - Soit que j'intègre ça dans initmap en remplacement de ma partie de code définissant les 2 couches KML de mon code initial (et en supprimant les styles devenus caduques),
    - Soit que je tente, comme dans l'exemple de mga_geo, une fonction Affiche :

    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
    93
    94
    95
    
    function affiche() {
    	// ----- External or user's layers KML : Vallon de Rosuel)
    	
    	viewer = this.getViewer();
    	map  = viewer.getMap();	
        var style = new OpenLayers.Style({
    		fillOpacity: 1.0
        });	
        var context = function(feature) {
    		return {
    			"attribute1": feature.attributes['attribute1'].value
    		};
        }
    	
    	// Style polygone ZAEDPR
        var rule01 = new OpenLayers.Rule({
    		context: context,
    		filter: new OpenLayers.Filter.Comparison({
    			type: OpenLayers.Filter.Comparison.EQUAL_TO,
    			property: "attribute1",
    			value: 1,
    		}),
    		symbolizer: {
    			fillColor: '#FF99CC',
    			fillOpacity: 0.25,
    			strokeColor: '#FF00FF'
    			strokeOpacity: 0.8,
    			strokeWidth: 4			
    		}
        });
    	
    	// Style polygone ZANPSDPR	
        var rule02 = new OpenLayers.Rule({
    		context: context,
    		filter: new OpenLayers.Filter.Comparison({
    			type: OpenLayers.Filter.Comparison.EQUAL_TO,
    			property: "attribute1",
    			value: 2,
    		}),
    		symbolizer: {
    			fillColor: '#FFFFFF',
    			fillOpacity: 0,
    			strokeColor: '#FF0000'
    			strokeOpacity: 1,
    			strokeWidth: 4			
    		}
        });
    
    
    	// Style points	
        var rule03 = new OpenLayers.Rule({
    		context: context,
    		filter: new OpenLayers.Filter.Comparison({
    			type: OpenLayers.Filter.Comparison.EQUAL_TO,
    			property: "attribute1",
    			value: 3,
    		}),
    		symbolizer: {
    			pointRadius: 10,
    			fillColor: '#ff0000',
    		}
        });	
    
        style.addRules([rule01, rule02, rule03,]);
        var styleMap = new OpenLayers.StyleMap(style);
        styleMap.addUniqueValueRules("default", "attribute1", context);	
    	
    
    	
    	KML2 = viewer.getMap().addLayer(
    	    // Type couche
    		"KML",
    		// Nom couche
    		"Points d'intérêt",
    		// URL du fichier KML		
    		"./assets/rosuel.kml",
    		// Options KML
    		{
    			visibility:true,
    			opacity:1,
    			styleMap: styleMap,	
    			
    			//panMapIfOutOfView: false,
    			//minZoomLevel: 0,
    			//maxZoomLevel: 16			
    		},
    		{
    			formatOptions:{extractStyles:false}
    		}  
    		// ----- Options popup		
    	);	
    
    } //fin fonction Affiche
    ... avec [onView: affiche] en fin du contenu de ma fonction initmap , ça ne fonctionne pas. Ca c'est le problème principal !

    Pourtant, le fichier KML global est OK (je l'ai testé sans les styles) avec quand même le problème que là, je ne peux plus sélectionner le petit polygone inclut dans le grand (le "cercle"). Ca, c'est la 1ère question subsidiaire.

    Comme vous devez être perplexes, connaissant maintenant un peu le "boulet" , je vous joins le fichier KML :

    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    <?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://www.opengis.net/kml/2.2">
    <Document>
    	
    	<Style id="Surface_Style14120953719681412095371969">
    		<LineStyle>
    			<color>b2ff00ff</color>
    			<width>4</width>
    		</LineStyle>
    		<PolyStyle>
    			<color>66cc99ff</color>
    		</PolyStyle>
    	</Style>
    	
    	<Style id="Surface_Style14120970597131412097059713141209746982114120974698211412097477884141209747788414120977171601412097717160">
    		<LineStyle>
    			<color>b20000ff</color>
    			<width>4</width>
    		</LineStyle>
    		<PolyStyle>
    			<color>00ffffff</color>
    		</PolyStyle>
    	</Style>
    
    	<Placemark>
    		<name>Les Chabottes</name>
    		<ExtendedData>
    			<Data name="attribute1">
    				<displayName>Attribut 1</displayName>
    				<value>3</value>
    			</Data>
    			<Data name="attribute2">
    				<displayName>Attribut 2</displayName>
    				<value></value>
    			</Data>
    		</ExtendedData>			
    		<Point>
    			<coordinates>6.78320619548316,45.52890473826385,0</coordinates>
    		</Point>
    	</Placemark>
    
    	<Placemark>
    		<name>ZAEDPR</name>
    		<description>
    			<![CDATA[
    				<p style="margin: 0"><b>Zone ࡩviter durant la saison de reproduction.</b></p>
    				<p style="margin: 0.5em 0 0 0">Ces indications n'ont pas un caract鳥 officiel. Elles peuvent ne plus 뵲e ࡪour.</p>
    				<p style="margin: 0.5em 0 0 0">Pour des indications officielles, veuillez consulter 
    				<font color="blue">
    					<a href="http://www.vanoise-parcnational.fr/fr/connaitre-le-territoire/faune/79-gypaete-vanoise.html?start=3" target="_blank">
    						cette page du site du Parc National de la Vanoise.
    					</a>
    				</p>
    			]]>
    		</description>
    		<styleUrl>#Surface_Style14120953719681412095371969</styleUrl>
    		<ExtendedData>
    			<Data name="attribute1">
    				<displayName>Attribut 1</displayName>
    				<value>1</value>
    			</Data>
    			<Data name="attribute2">
    				<displayName>Attribut 2</displayName>
    				<value></value>
    			</Data>
    		</ExtendedData>
    		<Polygon>
    			<outerBoundaryIs>
    				<LinearRing>
    					<coordinates>
    						6.812957623818432,45.5199209297645,0 6.813290217736481,45.52005999926346,0 6.813719371179119,45.52024041323693,0 6.813998320917557,45.52036068889795,0 6.814255812983033,45.52052606751183,0 6.814663508753116,45.52062379100973,0 6.814921000818701,45.52081923749641,0 6.815264323572626,45.52096206334576,0 6.815596917490858,45.52104475182969,0 6.815843680720377,45.52114999154255,0 6.815983155587777,45.52127402380845,0 6.816197732309006,45.52140933142314,0 6.816626885751466,45.52145443388905,0 6.816841462472698,45.52154463871238,0 6.817077496866051,45.52178518420094,0 6.817184785226665,45.52202572866102,0 6.817463734964264,45.52216103446782,0 6.817613938669124,45.52238654342283,0 6.817597845414794,45.52254439915365,0 6.817646125177035,45.52275111432147,0 6.817646125177035,45.5229089690291,0 6.817651489595059,45.5230292389852,0 6.817667582849472,45.52307058172307,0 6.817742684701845,45.52309313229461,0 6.817941168169234,45.5230780985815,0 6.818048456528233,45.52306870250854,0 6.818158427097956,45.52306870250854,0 6.818271079876697,45.52308373622444,0 6.818381050447942,45.52310816600425,0 6.818504432061284,45.52315702553187,0 6.818563440660837,45.5231683008013,0 6.818606356003902,45.52314575026013,0 6.818745830874184,45.52298789621674,0 6.818906763414804,45.52291272746874,0 6.81916425548028,45.52277742346967,0 6.819679239611232,45.52276238967192,0 6.820001104693079,45.52265715297515,0 6.820644834856767,45.52264211914526,0 6.820934513431027,45.52246922981277,0 6.821374395708951,45.52247674675121,0 6.821546057085934,45.5223564756139,0 6.821910837512027,45.52222117027709,0 6.822339990954485,45.52222117027709,0 6.822554567675716,45.52211593256794,0 6.8227262290527,45.52207083063232,0 6.8230051787903,45.52199566065926,0 6.823048094134547,45.52184532041191,0 6.823133924828893,45.52180773528278,0 6.822812059747298,45.52154839723879,0 6.82220051609227,45.52125147250316,0 6.821658709871586,45.52080420317127,0 6.821293929445779,45.52058996366041,0 6.821047166216556,45.52033062000317,0 6.820736029971016,45.51988710199296,0 6.820666292536671,45.51960896179611,0 6.820650199282591,45.51940599375767,0 6.820585826266273,45.51915040333444,0 6.820618012774432,45.51889481175018,0 6.820709207880884,45.51863170155367,0 6.820843318331549,45.51844752368412,0 6.820784309733254,45.51837234887019,0 6.820660928118645,45.51831596769386,0 6.820564368594166,45.5183234851873,0 6.820451715815608,45.5182896564589,0 6.819754341466271,45.51838738384236,0 6.819405654294545,45.51855652698718,0 6.819014051778604,45.51864297773155,0 6.818735102039923,45.51881963753608,0 6.818525889738186,45.5190789881571,0 6.817930439334974,45.51934585494182,0 6.81741009078866,45.51955634052447,0 6.817061403616933,45.51957889250467,0 6.816680529937045,45.51954130586601,0 6.816390851363612,45.51948868452976,0 6.815790036544636,45.5195676165157,0 6.815044382438944,45.51964654839092,0 6.814454296456021,45.51965782436405,0 6.81409488044824,45.51968037630353,0 6.813714006768352,45.51975179071897,0 6.813231209145962,45.51984199827202,0 6.812957623818432,45.5199209297645,0 6.812957623818432,45.5199209297645,0 
    					</coordinates>
    				</LinearRing>
    			</outerBoundaryIs>
    		</Polygon>
    	</Placemark>
    	
    	<Placemark id="instance7575">
    		<name>ZANPSDPR</name>
    		<description>
    			<![CDATA[
    				<p style="margin: 0"><b>Zone ࡮e pas survoler durant la saison de reproduction.</b></p>
    				<p style="margin: 0.5em 0 0 0">Ces indications n'ont pas un caract鳥 officiel. Elles peuvent ne plus 뵲e ࡪour.</p>
    				<p style="margin: 0.5em 0 0 0">Pour des indications officielles, veuillez consulter 
    				<font color="blue">
    					<a href="http://www.vanoise-parcnational.fr/fr/connaitre-le-territoire/faune/79-gypaete-vanoise.html?start=3" target="_blank">
    						cette page du site du Parc National de la Vanoise.
    					</a>
    				</p>
    			]]>
    		</description>
    		<styleUrl>#Surface_Style14120970597131412097059713141209746982114120974698211412097477884141209747788414120977171601412097717160</styleUrl>
    		<ExtendedData>
    			<Data name="attribute1">
    				<displayName>Attribut 1</displayName>
    				<value>2</value>
    			</Data>
    			<Data name="attribute2">
    				<displayName>Attribut 2</displayName>
    				<value></value>
    			</Data>
    		</ExtendedData>
    		<Polygon>
    			<outerBoundaryIs>
    				<LinearRing>
    					<coordinates>
    						6.816299999999999,45.52651447052599,0 6.816439864316299,45.52651361532899,0 6.816579686015799,45.52651105000101,0 6.8167194224947,45.526506775322,0 6.816859031175301,45.52650079259399,0 6.8169984695187,45.526493103642,0 6.817137695038,45.52648371080799,0 6.817276665311401,45.52647261695302,0 6.8174153379946,45.52645982545798,0 6.817553670834401,45.526445340221,0 6.817691621680901,45.526429165655,0 6.817829148501,45.526411306688,0 6.817966209390801,45.52639176876298,0 6.8181027625883,45.52637055783299,0 6.818238766486801,45.526347680359,0 6.8183741796466,45.52632314331399,0 6.818508960808501,45.526296954173,0 6.8186430689059,45.52626912091699,0 6.8187764630774,45.526239652026,0 6.8189091026795,45.526208556478,0 6.819040947298699,45.526175843749,0 6.8191719567639,45.52614152380699,0 6.819302091158699,45.526105607108,0 6.819431310833499,45.52606810459499,0 6.819559576418,45.52602902769699,0 6.819686848832199,45.52598838831796,0 6.819813089299599,45.525946198843,0 6.819938259358001,45.525902472124,0 6.820062320871701,45.52585722148699,0 6.8201852360431,45.52581046071699,0 6.820306967424001,45.52576220406299,0 6.820427477927401,45.52571246622799,0 6.820546730838401,45.52566126236598,0 6.8206646898256,45.525608608079,0 6.8207813189522,45.52555451940998,0 6.820896582686801,45.52549901283799,0 6.8210104459144,45.52544210527601,0 6.8211228739471,45.52538381406298,0 6.8212338325343,45.52532415695798,0 6.8213432878738,45.52526315213899,0 6.8214512066216,45.52520081819199,0 6.821557555902101,45.52513717410901,0 6.8216623033183,45.525072239282,0 6.821765416961501,45.52500603349401,0 6.8218668654214,45.524938576917,0 6.8219666177949,45.524869890103,0 6.8220646436963,45.52479999397899,0 6.822160913266301,45.524728909841,0 6.8222553971808,45.524656659347,0 6.822348066660301,45.52458326450801,0 6.8224388934783,45.524508747687,0 6.822527849970001,45.52443313158599,0 6.8226149090409,45.524356439242,0 6.8227000441749,45.52427869402201,0 6.8227832294422,45.52419991961199,0 6.822864439507498,45.52412014001099,0 6.822943649637599,45.52403937952499,0 6.823020835709,45.52395766275901,0 6.8230959742149,45.52387501460897,0 6.823169042272901,45.52379146025498,0 6.823240017631499,45.52370702514997,0 6.8233088786772,45.52362173501998,0 6.823375604440599,45.52353561584899,0 6.823440174603601,45.523448693872,0 6.8235025695047,45.52336099557098,0 6.823562770145399,45.52327254766298,0 6.823620758196199,45.52318337709399,0 6.823676516001602,45.52309351102797,0 6.823730026586099,45.52300297684501,0 6.8237812736587,45.52291180212398,0 6.8238302416185,45.52282001463998,0 6.823876915558901,45.52272764235699,0 6.823921281272599,45.522634713415,0 6.8239633252555,45.52254125612299,0 6.8240030347111,45.52244729895198,0 6.824040397554101,45.52235287052499,0 6.824075402414499,45.52225799960699,0 6.8241080386404,45.5221627151,0 6.8241382963022,45.52206704603,0 6.8241661661943,45.521971021541,0 6.8241916398393,45.52187467088501,0 6.824214709489501,45.521778023411,0 6.8242353681296,45.52168110856299,0 6.824253609479101,45.52158395586099,0 6.8242694279939,45.52148659490101,0 6.8242828188677,45.52138905534199,0 6.824293778034301,45.521291366895,0 6.8243023021678,45.52119355931797,0 6.8243083886845,45.52109566240399,0 6.824312035742999,45.52099770597499,0 6.8243132422452,45.52089971986799,0 6.8243120078362,45.52080173393299,0 6.824308332904801,45.520703778015,0 6.8243022185833,45.52060588195399,0 6.8242936667466,45.52050807556801,0 6.824282680012601,45.52041038865099,0 6.824269261740499,45.520312850957,0 6.824253416030002,45.52021549219699,0 6.8242351477204,45.52011834202601,0 6.824214462388801,45.520021430036,0 6.824191366348201,45.51992478574601,0 6.824165866646,45.519828438594,0 6.824137971061499,45.51973241792501,0 6.824107688103701,45.519636752987,0 6.8240750270088,45.519541472919,0 6.8240399977368,45.51944660674201,0 6.824002610969301,45.51935218335098,0 6.823962878105601,45.51925823150599,0 6.823920811259201,45.519164779822,0 6.823876423254699,45.51907185676402,0 6.8238297276233,45.51897949063498,0 6.823780738598701,45.518887709566,0 6.823729471113199,45.51879654151401,0 6.8236759407926,45.51870601424398,0 6.8236201639519,45.51861615532999,0 6.8235621575898,45.51852699213999,0 6.823501939384,45.51843855183099,0 6.8234395276856,45.518350861339,0 6.8233749415135,45.51826394737196,0 6.823308200548599,45.518177836401,0 6.823239325127599,45.51809255465199,0 6.8231683362375,45.51800812809999,0 6.823095255508101,45.51792458245699,0 6.8230201052064,45.51784194316901,0 6.8229429082293,45.51776023540401,0 6.8228636880967,45.51767948404701,0 6.8227824689444,45.51759971369098,0 6.822699275516699,45.51752094863199,0 6.822614133158901,45.51744321285601,0 6.8225270678093,45.51736653004,0 6.8224381059919,45.51729092353698,0 6.8223472748077,45.51721641637298,0 6.822254601926698,45.51714303124,0 6.822160115579501,45.517070790486,0 6.822063844548798,45.51699971611295,0 6.821965818160201,45.51692982976596,0 6.821866066273801,45.516861152728,0 6.821764619274801,45.516793705916,0 6.8216615080641,45.516727509868,0 6.8215567640495,45.51666258474599,0 6.821450419135201,45.51659895032098,0 6.8213425057132,45.516536625972,0 6.821233056652299,45.51647563067999,0 6.8211221052889,45.51641598302,0 6.8210096854167,45.51635770115698,0 6.820895831276,45.51630080284097,0 6.820780577543899,45.51624530539699,0 6.820663959323099,45.51619122572897,0 6.820546012131601,45.516138580304,0 6.820426771892,45.51608738515401,0 6.8203062749201,45.51603765587102,0 6.820184557914501,45.51598940759799,0 6.8200616579446,45.515942655029,0 6.81993761244,45.51589741240099,0 6.8198124591789,45.51585369349198,0 6.819686236276599,45.51581151161497,0 6.819558982173601,45.51577087961599,0 6.819430735624501,45.51573180986899,0 6.819301535685802,45.51569431426997,0 6.8191714217039,45.51565840423999,0 6.8190404333035,45.51562409071201,0 6.818908610375301,45.51559138413697,0 6.818775993064,45.51556029447399,0 6.818642621755899,45.51553083119099,0 6.8185085370667,45.51550300326001,0 6.8183737798293,45.51547681915498,0 6.818238391081101,45.51545228685097,0 6.818102412051599,45.51542941381599,0 6.81796588415,45.51540820701799,0 6.8178288489526,45.51538867291397,0 6.8176913481897,45.515370817451,0 6.817553423733701,45.51535464606899,0 6.817415117585401,45.51534016368997,0 6.8172764718623,45.51532737472599,0 6.817137528784601,45.51531628307101,0 6.816998330663601,45.515306892102,0 6.816858919887601,45.515299204679,0 6.8167193389101,45.515293223144,0 6.816579630236101,45.515288949317,0 6.8164398364094,45.51528638449999,0 6.816299999999999,45.51528552947398,0 6.8161601635906,45.51528638449999,0 6.8160203697639,45.515288949317,0 6.815880661089901,45.515293223144,0 6.815741080112399,45.515299204679,0 6.815601669336401,45.515306892102,0 6.8154624712154,45.51531628307101,0 6.8153235281377,45.51532737472599,0 6.815184882414601,45.51534016368997,0 6.815046576266299,45.51535464606899,0 6.8149086518103,45.515370817451,0 6.814771151047401,45.51538867291397,0 6.81463411585,45.51540820701799,0 6.8144975879484,45.51542941381599,0 6.8143616089189,45.51545228685097,0 6.8142262201707,45.51547681915498,0 6.8140914629333,45.51550300326001,0 6.813957378244099,45.51553083119099,0 6.813824006936001,45.51556029447399,0 6.813691389624701,45.51559138413697,0 6.8135595666965,45.51562409071201,0 6.813428578296101,45.51565840423999,0 6.813298464314199,45.51569431426997,0 6.813169264375501,45.51573180986899,0 6.813041017826399,45.51577087961599,0 6.812913763723401,45.51581151161497,0 6.8127875408211,45.51585369349198,0 6.81266238756,45.51589741240099,0 6.8125383420554,45.515942655029,0 6.8124154420855,45.51598940759799,0 6.8122937250798,45.51603765587102,0 6.812173228108,45.51608738515401,0 6.812053987868399,45.516138580304,0 6.811936040677,45.51619122572897,0 6.811819422456099,45.51624530539699,0 6.811704168724,45.51630080284097,0 6.8115903145833,45.51635770115698,0 6.811477894711101,45.51641598302,0 6.8113669433478,45.51647563067999,0 6.8112574942868,45.516536625972,0 6.8111495808648,45.51659895032098,0 6.8110432359505,45.51666258474599,0 6.810938491935899,45.516727509868,0 6.810835380725199,45.516793705916,0 6.8107339337262,45.516861152728,0 6.8106341818398,45.51692982976596,0 6.8105361554512,45.51699971611295,0 6.810439884420499,45.517070790486,0 6.8103453980733,45.51714303124,0 6.8102527251923,45.51721641637298,0 6.8101618940081,45.51729092353698,0 6.8100729321907,45.51736653004,0 6.8099858668411,45.51744321285601,0 6.8099007244833,45.51752094863199,0 6.809817531055602,45.51759971369098,0 6.809736311903301,45.51767948404701,0 6.8096570917707,45.51776023540401,0 6.8095798947936,45.51784194316901,0 6.809504744491899,45.51792458245699,0 6.8094316637625,45.51800812809999,0 6.8093606748724,45.51809255465199,0 6.8092917994515,45.518177836401,0 6.809225058486499,45.51826394737196,0 6.8091604723144,45.518350861339,0 6.809098060616,45.51843855183099,0 6.809037842410201,45.51852699213999,0 6.8089798360481,45.51861615532999,0 6.8089240592074,45.51870601424398,0 6.8088705288868,45.51879654151401,0 6.8088192614013,45.518887709566,0 6.8087702723767,45.51897949063498,0 6.808723576745299,45.51907185676402,0 6.8086791887408,45.519164779822,0 6.8086371218944,45.51925823150599,0 6.8085973890307,45.51935218335098,0 6.808560002263199,45.51944660674201,0 6.808524972991201,45.519541472919,0 6.808492311896299,45.519636752987,0 6.8084620289386,45.51973241792501,0 6.808434133354099,45.519828438594,0 6.8084086336518,45.51992478574601,0 6.8083855376112,45.520021430036,0 6.8083648522796,45.52011834202601,0 6.80834658397,45.52021549219699,0 6.808330738259501,45.520312850957,0 6.808317319987399,45.52041038865099,0 6.8083063332534,45.52050807556801,0 6.8082977814167,45.52060588195399,0 6.808291667095199,45.520703778015,0 6.8082879921638,45.52080173393299,0 6.8082867577548,45.52089971986799,0 6.808287964257,45.52099770597499,0 6.8082916113155,45.52109566240399,0 6.8082976978322,45.52119355931797,0 6.8083062219657,45.521291366895,0 6.808317181132302,45.52138905534199,0 6.8083305720061,45.52148659490101,0 6.8083463905209,45.52158395586099,0 6.808364631870401,45.52168110856299,0 6.8083852905105,45.521778023411,0 6.8084083601607,45.52187467088501,0 6.8084338338057,45.521971021541,0 6.8084617036979,45.52206704603,0 6.8084919613595,45.5221627151,0 6.8085245975855,45.52225799960699,0 6.808559602445899,45.52235287052499,0 6.8085969652889,45.52244729895198,0 6.8086366747445,45.52254125612299,0 6.808678718727399,45.522634713415,0 6.8087230844411,45.52272764235699,0 6.808769758381499,45.52282001463998,0 6.808818726341299,45.52291180212398,0 6.808869973413899,45.52300297684501,0 6.8089234839984,45.52309351102797,0 6.8089792418038,45.52318337709399,0 6.809037229854601,45.52327254766298,0 6.809097430495301,45.52336099557098,0 6.8091598253964,45.523448693872,0 6.8092243955593,45.52353561584899,0 6.8092911213228,45.52362173501998,0 6.809359982368499,45.52370702514997,0 6.8094309577271,45.52379146025498,0 6.8095040257851,45.52387501460897,0 6.809579164290999,45.52395766275901,0 6.809656350362401,45.52403937952499,0 6.8097355604925,45.52412014001099,0 6.8098167705578,45.52419991961199,0 6.8098999558251,45.52427869402201,0 6.8099850909591,45.524356439242,0 6.810072150029999,45.52443313158599,0 6.8101611065217,45.524508747687,0 6.8102519333397,45.52458326450801,0 6.8103446028192,45.524656659347,0 6.810439086733701,45.524728909841,0 6.8105353563037,45.52479999397899,0 6.8106333822051,45.524869890103,0 6.8107331345786,45.524938576917,0 6.810834583038399,45.52500603349401,0 6.810937696681699,45.525072239282,0 6.811042444097899,45.52513717410901,0 6.8111487933784,45.52520081819199,0 6.8112567121262,45.52526315213899,0 6.8113661674657,45.52532415695798,0 6.811477126052901,45.52538381406298,0 6.811589554085601,45.52544210527601,0 6.811703417313201,45.52549901283799,0 6.8118186810478,45.52555451940998,0 6.8119353101744,45.525608608079,0 6.8120532691616,45.52566126236598,0 6.812172522072599,45.52571246622799,0 6.8122930325759,45.52576220406299,0 6.8124147639569,45.52581046071699,0 6.812537679128301,45.52585722148699,0 6.812661740641999,45.525902472124,0 6.812786910700401,45.525946198843,0 6.812913151167801,45.52598838831796,0 6.813040423582,45.52602902769699,0 6.8131686891664,45.52606810459499,0 6.813297908841401,45.526105607108,0 6.8134280432361,45.52614152380699,0 6.8135590527013,45.526175843749,0 6.8136908973205,45.526208556478,0 6.8138235369226,45.526239652026,0 6.813956931094101,45.52626912091699,0 6.8140910391915,45.526296954173,0 6.8142258203534,45.52632314331399,0 6.8143612335132,45.526347680359,0 6.8144972374117,45.52637055783299,0 6.8146337906093,45.52639176876298,0 6.814770851499,45.526411306688,0 6.8149083783191,45.526429165655,0 6.815046329165599,45.526445340221,0 6.8151846620054,45.52645982545798,0 6.815323334688599,45.52647261695302,0 6.815462304962,45.52648371080799,0 6.815601530481301,45.526493103642,0 6.8157409688247,45.52650079259399,0 6.815880577505302,45.526506775322,0 6.816020313984201,45.52651105000101,0 6.8161601356837,45.52651361532899,0 6.816299999999999,45.52651447052599,0 
    					</coordinates>
    				</LinearRing>
    			</outerBoundaryIs>
    		</Polygon>
    	</Placemark>	
    	
    </Document>
    </kml>
    Voilà, voilà. Si qq un peut me dépanner, encore une fois ????

    P-S : 2ème question subsidiaire : Avec les styles dynamiques, peut-on créer, pour une règle, un style "defaut" et un style "select" et si oui, comment ?

  10. #10
    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
    La 2ème page n'est pas de moi, j'ai juste adapté le code qui a été développé en version 1.3 de l'API.

    Je vais être dur mais réduire un fichier KML à quelques placemarks n'est pas très difficile.

  11. #11
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut
    Excuse-moi Mga_geo, j'ai profondément modifié mon message précédent pendant que tu y répondais. Du coup, ta réponse ne correspond plus à rien.

    Reste que pour réduire un KML (ça, ca va, je saurais faire !), encore faut-il y avoir accès ... En fait, ce qui m'interessais, c'était la structure des placemark utilisée.

    Mais bon, j'ai avancé entre temps. Voir mon message précédent intitule "Presque OK" SVP.

  12. #12
    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
    Est-il possible d'avoir un lien sur la page d'essai ?

  13. #13
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    Est-il possible d'avoir un lien sur la page d'essai ?
    Ben pas trop car mon site est sous WordPress, et mes essais sont actuellement "hors WordPress", en LocalHost.

    Mais voiçi un lien de téléchargement de mes essais, via HighTail (service d'envoi de fichiers):
    https://www.hightail.com/download/Ul...NkdEbUp4Tk1UQw

    Dans le Zip Quickstart_YD.zip, tu trouveras le dossier de mon projet en cours avec :

    - quickstart 12.html : Mon code de départ, avant tentative de mise en oeuvre des styles dynamiques Ca fonctionne, avec deux couches KML distinctes et deux fichiers KML distincts : ZAEDPR et ZANPSDPR, et un style différent pour chacun des 2.

    - quickstart 13.html : Evolution pour un seul fichier KML regroupant ZAEDPR et ZANPSDPR, + un placemark de type Point pour essai. Sans aucun style, ca fonctionne

    - quickstart 14-1.html : Essai d'adaptation en intègrant le code dans initmap en remplacement de ma partie de code définissant les 2 couches KML de mon code initial (et en supprimant les 2 styles y afférents devenus caduques),

    - quickstart 14-2.html : Essai d'adaptation avec une fonction "affiche" (adaptée de celle de ton 2ème exemple) et d'un appel par [onView: affiche] en fin du contenu de ma fonction initmap ,

    ... ni l'un ni l'autre ne fonctionne.

    Merci d'avance ! Et excellent WE.

  14. #14
    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 WE un peu beaucoup pluvieux ...
    J'ai remis en forme la page et c'est disponible à cette adresse : http://mga.alwaysdata.net/geoportail...start14-2.html

    Pour trouver les erreurs, j'utilise Firebug sous Firefox.
    Je rends plus lisible le code avec http://jsbeautifier.org/

    J'évite les espaces dans les noms de fichiers et je fais attention à la casse (sinon problème en Unix).

    Le chargement de la couche Velib est très très long.

  15. #15
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut ... chez moi (Chambéry), WE assez correct
    Ainsi donc, peut-être bien que je dois à la météo ton débogage de mon code ... En tous cas, merci beaucoup, mga_geo !

    Citation Envoyé par mga_geo Voir le message
    Pour trouver les erreurs, j'utilise Firebug sous Firefox.
    ... Moi aussi, mais je ne sais pas très bien m'en servir. Pour gérer les CSS, ça va mais pour déboguer ...

    Citation Envoyé par mga_geo Voir le message
    ... J'évite les espaces dans les noms de fichiers et je fais attention à la casse (sinon problème en Unix).
    ... effectivement, tu as raison. Je le fais aussi en principe mais parfois, je manque de rigueur. Message reçu 5/5 !

    Citation Envoyé par mga_geo Voir le message
    ... Le chargement de la couche Velib est très très long.
    Pas trop pour moi, en localhost. Mais de toutes façons, tu sais, cette couche "Vélib" (qui comporte beaucoup de points), c'est celle proposée par le tutoriel du site de l'API pour apprendre à incorporer des couches KML. Dans mes utilisations futures réelles, elle disparaitra !

    Bon, à part ça, mon affaire, ça ne fonctionne toujours pas comme je le souhaiterais. Et je ne comprends pas pourquoi, ça ne me parait pas logique ...

    Je m'explique : Mon souhait, avec ces styles dynamiques, est de me permettre de regrouper dans une même couche KML 3 "sortes" de placemarks :
    - le polygone (ZAEDPR)
    - le "cercle" (ZANPSDPR),
    - quelques points isolés.

    Avec pour chacune de ces 3 catégories un style spécifique. Grâce à toi, c'est presque OK. Mais le code qui est mis en œuvre :
    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
            var style = new OpenLayers.Style({
    			fillOpacity: 1,
                pointRadius: 10,
                fillColor: '#ff0000',		  
            });
            var context = function(feature) {
              return {
                "attribute1": feature.attributes['attribute1'].value
              };
            }
    
            // Style polygone ZAEDPR
            var rule01 = new OpenLayers.Rule({
              context: context,
              filter: new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "attribute1",
                value: 1,
              }),
              symbolizer: {
                fillColor: '#FF99CC',
                fillOpacity: 0.35,
                strokeColor: '#FF00FF',
                strokeOpacity: 0.8,
                strokeWidth: 4
              }
            });
    
            // Style polygone ZANPSDPR
            var rule02 = new OpenLayers.Rule({
              context: context,
              filter: new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "attribute1",
                value: 2,
              }),
              symbolizer: {
                fillColor: '#FFFFFF',
                fillOpacity: 0.35,
                strokeColor: '#FF0000',
                strokeOpacity: 1,
                strokeWidth: 4
              }
            });
    
            // Style points
            var rule03 = new OpenLayers.Rule({
              context: context,
              filter: new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "attribute1",
                value: 3,
              }),
              symbolizer: {
                pointRadius: 10,
                fillColor: '#ff0000',
              }
            });
    
            style.addRules([rule01, rule02, rule03]);
            var styleMap = new OpenLayers.StyleMap(style);
            styleMap.addUniqueValueRules("default", "attribute1", context);
    
    
            rosuel = viewer.getMap().addLayer(
              // Type couche
              "KML",
              // Nom couche
              "Points d'intérêt",
              // URL du fichier KML
              "./assets/Rosuel.kml",
              // Options KML
              {
                visibility: true,
                opacity: 1,
                styleMap: styleMap,
    
                //panMapIfOutOfView: false,
                //minZoomLevel: 0,
                //maxZoomLevel: 16
              }, {
                formatOptions: {
                  extractStyles: false
                }
              }
              // ----- Options popup
            );
    ... permet de définir 3 styles dynamiques, mais qui ne s'appliquent qu'aux objets sélectionnés.
    Leur style à l'état "non sélectionné" demeure envers et contre tout celui qui est défini dans les toutes premières lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            var style = new OpenLayers.Style({
    			fillOpacity: 1,
                pointRadius: 10,
                fillColor: '#ff0000',		  
            });
    ... donc non différencié. Et ce n'est pas ce que je voulais.

    Dans la version "Quickstart 12", avec des couches KML séparées, il était facile d'individualiser les styles avec quelque chose du genre :

    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
    	var myStyleMapKml03 = new OpenLayers.StyleMap({
    		"default": new OpenLayers.Style({
    			// ----- Couleur remplissage polygone			
    			'fillColor': '#FFFFFF',
    			'fillOpacity': 0,
    			// ----- Bordure polygone
    			'strokeColor': '#FF0000',
    			'strokeOpacity': 1,
    			'strokeWidth': 4
    		}),
    		"select": new OpenLayers.Style({
    			// ----- Couleur remplissage polygone			
    			'fillColor': '#8000FF',
    			'fillOpacity': 0.4,
    			// ----- Bordure polygone
    			'strokeColor': '#8000FF',
    			'strokeOpacity': 0.8,
    			'strokeWidth': 4
    		})
    	});
    ... où je pouvais définir les états "default" et "select", ... pour chaque couche, bien sûr.

    Là, je n'y parviens pas. Et surtout je ne comprends pas pourquoi la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            styleMap.addUniqueValueRules("default", "attribute1", context);
    ... conduit à définir les styles pour les objets sélectionnés alors qu'elle précise "default".
    d'ailleurs, si je désactive cette ligne (//...), ça fonctionne pareil.

    Bon, j'ai bossé là-dessus, mais sans résultats. J'ai essayé de comprendre à nouveau le 1er exemple donné par mga_géo (qui fonctionne bien comme ce que je voudrais obtenir), mais je ne parviens pas à transposer... J'ai essayé de concocter un truc comme ça, mais là aussi, seul l'état "select" fonctionne. (... et personne ne rigole, même si ce code est sans doute aberrant !) :

    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
            var styleKmlDefault = new OpenLayers.Style({
            });
    		
    		
            var context = function(feature) {
              return {
                "attribute1": feature.attributes['attribute1'].value
              };
            }
    
            // Style Default polygone ZAEDPR
            var rule01 = new OpenLayers.Rule({
              context: context,
              filter: new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "attribute1",
                value: 1,
              }),
              symbolizer: {
                fillColor: '#FF99CC',
                fillOpacity: 0.25,
                strokeColor: '#FF00FF',
                strokeOpacity: 0.8,
                strokeWidth: 4
              }
            });
    		
            // Style Default ZANPSDPR
            var rule02 = new OpenLayers.Rule({
              context: context,
              filter: new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "attribute1",
                value: 2,
              }),
              symbolizer: {
                fillColor: '#FFFFFF',
                fillOpacity: 0,
                strokeColor: '#FF0000',
                strokeOpacity: 1,
                strokeWidth: 4
              }
            });
    		
            // Style Default points
            var rule03 = new OpenLayers.Rule({
              context: context,
              filter: new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "attribute1",
                value: 3,
              }),
              symbolizer: {
    			fillOpacity: 1,
                pointRadius: 10,
                fillColor: '#FF0000',
              }
            });
    
            styleKmlDefault.addRules([rule01, rule02, rule03,]);
    // -------------------------------------------------		
            var styleKmlSelect = new OpenLayers.Style({
    
            });
    		
            //var context = function(feature) {
            //  return {
            //    "attribute1": feature.attributes['attribute1'].value
            //  };
            //}
    		
    		
            // Style Select polygone ZAEDPR
            var rule04 = new OpenLayers.Rule({
              context: context,
              filter: new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "attribute1",
                value: 1,
              }),
              symbolizer: {
                fillColor: '#8000FF',
                fillOpacity: 0.4,
                strokeColor: '#8000FF',
                strokeOpacity: 0.8,
                strokeWidth: 4
              }
            });
    		
            // Style Select ZANPSDPR
            var rule05 = new OpenLayers.Rule({
              context: context,
              filter: new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "attribute1",
                value: 2,
              }),
              symbolizer: {
                fillColor: '#8000FF',
                fillOpacity: 0.4,
                strokeColor: '#8000FF',
                strokeOpacity: 0.8,
                strokeWidth: 4
              }
            });
    
    		
            // Style Select points
            var rule06 = new OpenLayers.Rule({
              context: context,
              filter: new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "attribute1",
                value: 3,
              }),
              symbolizer: {
    			fillOpacity: 1,
                pointRadius: 15,
                fillColor: '#FF00FF',
              }
            });
    
            styleKmlSelect.addRules([rule04, rule05, rule06]);
    //-----------------------------
    		
            var KmlstyleMap = new OpenLayers.StyleMap(
    			{
    				"default": styleKmlSelect,
    				"select": styleKmlSelect,
    			}
    		);
           // KmlstyleMap.addUniqueValueRules("default", "attribute1", context);
    
    		
            rosuel = viewer.getMap().addLayer(
              // Type couche
              "KML",
              // Nom couche
              "Points d'intérêt",
              // URL du fichier KML
              "./assets/Rosuel.kml",
              // Options KML
              {
                visibility: true,
                opacity: 1,
                styleMap: KmlstyleMap,
    
                //panMapIfOutOfView: false,
                //minZoomLevel: 0,
                //maxZoomLevel: 16
              }, {
                formatOptions: {
                  extractStyles: false
                }
              }
              // ----- Options popup
            );
    Je précise que je me donne quand même du mal : J'ai essayé de comprendre la littérature disponible sur Internet concernant les styles dynamiques d'OpenLayers, mais en vain. J'ai bossé les exemples transmis aimablement par mga_geo. J'ai tenté des trucs ... d'une audace ! A l'évidence, je manque de bases. Ça m'agace parce que mon projet touche vraiment au but ... Mais le vieil autodidacte que je suis atteint ses limites. Ah le bon vieux temps de la programmation séquentielle !

    Un dernier appel à l'aide ! Après, je pars me faire oublier et me mettre au vert dans des iles de rêve avec des filles habillées de colliers de fleurs ... (houlà, faut qu'il arrête le chichon, le vieux )

  16. #16
    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
    En utilisant "ma" méthode pour les styles, j'obtiens cette page : http://mga.alwaysdata.net/geoportail...s/duriv73.html
    J'ai fait une modification de l'encodage du fichier kml (passage en utf-8).

  17. #17
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut Merci mille fois à tous !
    Merci mille fois, mga_geo !

    Çà fonctionne très exactement comme ce que je voulais. Vraiment super !
    Et en plus, j'arrive à comprendre ! Cette méthode est plus simple, ça me va bien ...

    ... Alors, peut-être à un de ces 4 sur cet excellent forum, parce que c'est pas vrai, je ne pars pas dans les iles paradisiaques !

    Longue vie à l'API du Géoportail et encore merci à tous ceux qui ont été si constructifs pour moi : Gilles Cebelieu, Jérémy Renard et mga_geo.

    Lorsque je vais publier (enfin ! ) des déclinaisons de mon projet sur mon (vrai) site http://garsyves.fr/, vous ne manquerez pas d'être cités dans les remerciements !

  18. #18
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Bonjour,

    Concernant l'absence de namespace dans les KML générés par le Géoportail :
    Citation Envoyé par Duriv73 Voir le message
    Par ailleurs, mon fichier KML d'essai a été généré à partir du site Géoportail. avec les outils de dessin

    - pour pouvoir l'utiliser, il faut lui corriger la ligne 2 en incluant [xmlns=...]
    Cette anomalie vient tout juste d'être corrigée. Désormais, les KML générés déclarent le namespace officiel de l'OGC, ce qui garantit leur interopérabilité (et en particulier ce qui permet de les ajouter tels quels dans des cartes basées sur l'API Géoportail) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" encoding="UTF-8"?> 
    <kml xmlns="http://www.opengis.net/kml/2.2">
    ...
    A noter qu'un vidage de cache peut être nécessaire pour avoir accès à cette évolution du portail.
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

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

Discussions similaires

  1. génération de fichiers KML a partie d'un fichier collada (c#)
    Par koeniks dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 17/07/2014, 10h46
  2. Réponses: 2
    Dernier message: 11/06/2014, 11h10
  3. [Castor] Echappement des caractères <> dans un fichier XML généré par Castor XML
    Par mbinte dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 22/10/2008, 14h33
  4. Réponses: 7
    Dernier message: 23/01/2008, 13h02

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