Ben j'ai fait le changement que tu as demandé de faire pour que cela fonctionne avec les labels :
Changer
Geoportal.Popup.Anchored.setPointerCursorForFeature(f);
vers
Geoportal.Popup.setPointerCursorForFeature(f);
du coup (est-ce que c'est cela), cela change radicalement la sortie (cf pièces jointes)
...Ou est-ce que j'ai loupé autre chose ?...Je n'ai pas l'impression d'avoir changé autre chose...
Ce changement, c'est pas pour les labels, c'est pour le curseur au survol des pictos ...
Je résume :
- avant : précédente 1.0beta4 - pas de label, popup FramedCloud : correct ?
- après : actuelle 1.0beta5 - labels, popup par défaut : correct ?
Question: Quelle est la valeur de l'option onFeatureInsert lors de la création de la couche ou peux-tu copier le code qui ajoute le kml à la carte ?
La situation ne s'améliore pas, toujours la page http://atlasnw.free.fr/geoportail/ap...Map_basic.html
je n'ai aucune image avec proxy et qu'une partie en hors proxy
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 http://atlasnw.free.fr/geoportail/api/js/1.0beta5/examples/img/favicon.ico http://wxs.ign.fr/geoportail/wmsc?LAYERS=ORTHOIMAGERY.ORTHOPHOTOS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=524288,5242880,1048576,5767168&WIDTH=256&HEIGHT=256&TILED=true&gppkey=L1BGrj9zyCFp0cntYXCf6flcN8sAAAAAAE1sXRgHW45XSoK3AAABI6Qjd0QAAAAAAlgAAQELzIOB9Z8Uqx7pKM7hA6nhR4H-Lfx_odlih4eT0XbAuwTLs1tjpE3ZAVRXWpxlyY2BwzQAAEM0AADCtAAAQrQAAA http://wxs.ign.fr/geoportail/wmsc?LAYERS=ORTHOIMAGERY.ORTHOPHOTOS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=0,5242880,524288,5767168&WIDTH=256&HEIGHT=256&TILED=true&gppkey=L1BGrj9zyCFp0cntYXCf6flcN8sAAAAAAE1sXRgHW45XSoK3AAABI6Qjd0QAAAAAAlgAAQELzIOB9Z8Uqx7pKM7hA6nhR4H-Lfx_odlih4eT0XbAuwTLs1tjpE3ZAVRXWpxlyY2BwzQAAEM0AADCtAAAQrQAAA http://wxs.ign.fr/geoportail/wmsc?LAYERS=ORTHOIMAGERY.ORTHOPHOTOS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=-524288,5242880,0,5767168&WIDTH=256&HEIGHT=256&TILED=true&gppkey=L1BGrj9zyCFp0cntYXCf6flcN8sAAAAAAE1sXRgHW45XSoK3AAABI6Qjd0QAAAAAAlgAAQELzIOB9Z8Uqx7pKM7hA6nhR4H-Lfx_odlih4eT0XbAuwTLs1tjpE3ZAVRXWpxlyY2BwzQAAEM0AADCtAAAQrQAAA http://wxs.ign.fr/geoportail/wmsc?LAYERS=GEOGRAPHICALGRIDSYSTEMS.MAPS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=524288,5242880,1048576,5767168&WIDTH=256&HEIGHT=256&TILED=true&gppkey=L1BGrj9zyCFp0cntYXCf6flcN8sAAAAAAE1sXRgHW45XSoK3AAABI6Qjd0QAAAAAAlgAAQELzIOB9Z8Uqx7pKM7hA6nhR4H-Lfx_odlih4eT0XbAuwTLs1tjpE3ZAVRXWpxlyY2BwzQAAEM0AADCtAAAQrQAAA http://wxs.ign.fr/geoportail/wmsc?LAYERS=GEOGRAPHICALGRIDSYSTEMS.MAPS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=0,5242880,524288,5767168&WIDTH=256&HEIGHT=256&TILED=true&gppkey=L1BGrj9zyCFp0cntYXCf6flcN8sAAAAAAE1sXRgHW45XSoK3AAABI6Qjd0QAAAAAAlgAAQELzIOB9Z8Uqx7pKM7hA6nhR4H-Lfx_odlih4eT0XbAuwTLs1tjpE3ZAVRXWpxlyY2BwzQAAEM0AADCtAAAQrQAAA http://wxs.ign.fr/geoportail/wmsc?LAYERS=GEOGRAPHICALGRIDSYSTEMS.MAPS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=-524288,5242880,0,5767168&WIDTH=256&HEIGHT=256&TILED=true&gppkey=L1BGrj9zyCFp0cntYXCf6flcN8sAAAAAAE1sXRgHW45XSoK3AAABI6Qjd0QAAAAAAlgAAQELzIOB9Z8Uqx7pKM7hA6nhR4H-Lfx_odlih4eT0XbAuwTLs1tjpE3ZAVRXWpxlyY2BwzQAAEM0AADCtAAAQrQAAA http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/logo_gp.gif http://www.geoportail.fr/legendes/logo_planetobserver.gif http://www.geoportail.fr/legendes/logo_ign.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/picto_drag_on.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/picto_zoomSel_off.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/bg_zoomVertical.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/zoom_curseur.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/ico_win_plus.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/ico_win_moins.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/fl_couche_H_no.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/fl_couche_B.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/loading25x25.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/regl_Horiz_Haut.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/bg_handle.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/cursor.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/fl_couche_H.gif http://atlasnw.free.fr/geoportail/api/js/1.0beta5/theme/geoportal/img/fl_couche_B_no.gif
Sur ma page http://atlasnw.free.fr/geoportail/ex...beta5/kml.html, j'avais une hauteur en % et je n'avais le droit qu'à une petite ligne.
En passant en px, ce problème disparait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part <div id="viewerDiv" style="width:98%;height:400px;"></div>
Comme c'est à peu près la seule chose que j'avais changée, j'ai pensé tout de suite à cela...mais il y en avait une seconde (cf pb IE qui ne chargeait pas bien la couche KML (décalage affichage, changement taille des images,...)
d'où le chargement avec visibility à false pour la couche KML, puis le fait d'activer la visibilité en différé par :
setTimeout(OpenLayers.Function.bind(function(){this.setVisibility(true);},CoucheKMLDirecte),500);
C'est UNIQUEMENT cela qui provoque le changement d'affichage des popup
en remettant juste la visibilité au chargement de la couche, je récupère mes bulles d'aide d'avant...tel que mis en page selon le code de mon onFeatureSelect...
Voici le code de chargement du KML :
Si IsVisibiliteImmediate:
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 CoucheKMLDirecte = map.getMap().addLayer("KML", aNomCouche, aNomFichierKML, { buffer: 0, visibility:IsVisibiliteImmediate, opacity:true, view:{ drop:true, zoomToExtent:true }, extractAttributes:true, extractStyles: true, preFeatureInsert:function(f) { if (f) { if (VersionBeta == 4) { f.style= OpenLayers.Util.applyDefaults({cursor:'help'}, f.style); } else { // Voir pour : OpenLayers.Rule --> minScaleDenominator et maxScaleDenominator // default Geoportal API : cursor pointer on hover ... // Geoportal.Popup.Anchored.setPointerCursorForFeature(f); Geoportal.Popup.setPointerCursorForFeature(f); // Voir http://code.google.com/intl/fr/apis/kml/documentation/kmlreference.html#labelstyle OpenLayers.Util.extend(f.style, { label: f.attributes.name+"_", labelAlign: "rb", fontColor: "black", fontWeight: "bold", fontSize: "12px", backgroundGraphic:"./images/BarreBlanche.png", backgroundHeight : 10, backgroundWidth : (f.attributes.name.length*8), backgroundXOffset : -(f.attributes.name.length*8+4), backgroundYOffset : -9-DeltaYOffset, fontFamily: "Courier New, monospace" }); } }}, attribution:"fourni par xxx", minZoomLevel : MinZoomLevelCarto, maxZoomLevel : MaxZoomLevelCarto, originators:[ { pictureUrl:'./images/logo_xxx50x50.png', url: 'http://www.xxx.net' } ] } ); // Pour différer l'affichage de la couche if (IsVisibiliteImmediate==false) { setTimeout(OpenLayers.Function.bind(function(){this.setVisibility(true);},CoucheKMLDirecte),500); } selectControl = new OpenLayers.Control.SelectFeature(CoucheKMLDirecte, {onSelect: onFeatureSelect, onUnselect: onFeatureUnselect}); map.getMap().addControl(selectControl); selectControl.activate();
- à false alors j'ai les popup avec ton design
- à true alors j'ai les popups avec mon design
Pour être certain, c'est bien onFeatureSelect qui construit la popup ?
Peux-tu alors essayer cela :
Pourquoi (ce que je soupçonne) ?
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 CoucheKMLDirecte = map.getMap().addLayer( "KML", aNomCouche, aNomFichierKML, { buffer: 0, visibility:IsVisibiliteImmediate, opacity:true, view:{ drop:true, zoomToExtent:true }, extractAttributes:true, extractStyles: true, preFeatureInsert:function(f) {/*ton code*/}}, attribution:"fourni par xxx", minZoomLevel : MinZoomLevelCarto, maxZoomLevel : MaxZoomLevelCarto, originators:[{/* ton code*/}] }, { onSelect: onFeatureSelect, onUnselect: onFeatureUnselect } ); // Pour différer l'affichage de la couche if (IsVisibiliteImmediate==false) { setTimeout(OpenLayers.Function.bind(function(){this.setVisibility(true);},CoucheKMLDirecte),500); }
Geoportal.Map.addLayer() crée un OpenLayers.Control.Select pour les couches KML/GPX/OSM que l'on peut surcharger lors de l'appel avec le 5ième paramètre.
Lors de l'appel, l'absence du 5ième paramètre indique à l'API d'utiliser les paramètrages par défaut (mon superbe design).
Tu définis alors un contrôleur qui fait ce travail ...
Mais, le gestionnaire sur la sélection est déjà en place.
Par défaut, voici les paramètres qu'applique l'API (en 1.0beta5) et qu'il est donc possible de mettre dans ce 5ième paramètre (Cf. OpenLayers.Control.Select) :
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 multipleKey: null, toggleKey: null, multiple: false, clickout: true, toggle: !h, hover: h, highlightOnly: false, box: false, onBeforeSelect: function() {}, onSelect: (WFS? Geoportal.Control.hoverFeature : Geoportal.Control.selectFeature), onUnselect: Geoportal.Control.unselectFeature, scope: null, geometryTypes: null, callbacks: null, selectStyle: null
alors là, en faisant la modif...c'est la cata totale...
Non seulement IE ne fait pas mieux que si la visibilité est à vrai dès le départ (au chargement de la couche)...mais FF3.5 s'y met...plus que l'affichage d'une carré de 4*4 pixels (a priori, que les bordures restantes)
Au temps pour moi...j'avais des anciens standard.css et style.css liés au GeoportailExtended.js
pfiououu...je me fais des frayeurs tout seul...
...je recommence la modif...
mouaich...cela marche, mais c'est très lent sous IE8...j'ai dû augmenter le timeout à 1000 au lieu de 500...
mais j'ai un autre souci : avant j'avais ma variable selectcontrol que je n'ai plus pour la fermeture du popup (dont la croix est positionnée différemment sous IE8 ...mais bon pas grave) :
function onPopupClose(evt)
{
selectControl.unselect(selectedFeature);
}
Comment remplacer cet appel ?
Oui, mais dans ce cas, la croix de fermeture ne fait plus son office (a priori normal puisque je n'ai plus de code dans la function onPopupClose(evt)...)
Par quoi puis-je remplacer le :
pour provoquer la fermeture du popup (et peut-être si nécessaire la désélection) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 selectControl.unselect(selectedFeature);
Tout est dans ton module onFeatureSelect : s'il crée la popup, il faut lui passer la méthode onPopClose comme indiqué précédemment (lors du new ***.Popup.*).
La méthode onPopClose devrait aussi appeler onFeatureUnselect pour mutualiser les codes lié à la désélection par une autre action(comme un clic sur un autre picto sans passer par la fermeture de la fiche courante).
Le code présent dans les sources de l'API devrait t'aider (Pop/Anchored.js et Pop.js).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager