Bonjour,
je reviens à l'attaque avec mes décalages de markers au passage du niveau de zoom 4 à 5. J'ai cru que la beta5 avait tout réglé mais en y regardant de plus près le problème persiste (enfin du même genre).
J'utilise deux types de scripts pour afficher mes markers sur une carte (trouvés dans ce forum).
1- Mon premier (page d'accueil) utilise les objets icon et les calques LonLat (ci dessous)
Nota : Ici Les lignes situées entre <BOUCLE... et </BOUCLES... sont répétées autant de fois que j'ai de points. #VALEUR est une chaine de type Lon, Lat. (syntaxe SPIP)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 var size= new OpenLayers.Size(8,8); var offset= new OpenLayers.Pixel(-(size.w/2), -(size.h/2));//centered var icon = new OpenLayers.Icon('#CHEMIN{img/rep_r.gif}',size,offset); var markers= new OpenLayers.Layer.Markers("centrale"); <BOUCLE_pos(POUR){tableau #GET{coord}}{valeur != 0}> map.getMap().addLayer(markers); var ll#CLE= new OpenLayers.LonLat(#VALEUR); ll#CLE.transform(OpenLayers.Projection.CRS84, map.getMap().getProjection()); markers.addMarker(new OpenLayers.Marker(ll#CLE,icon.clone())); </BOUCLE_pos>
Il fonctionne bien et permet de placer des points aux antilles (malgré que le système de référence n'est pas précisé) et à la réunion sans problème. En revanche si on zoom on s'aperçoit que la carte est très étirée sur l'axe des longitude (??), ce qui n'est pas très esthétique. y a-t-il une explication à cela ?
2- j'utilise (par soucis esthétique du coup) un autre script pour mes cartes plus proches ici par exemple ou encore ici
Nota: même remarque pour <BOUCLE... </Boucle, #GET{coord} renvoi les coordonnées lon, lat - #ID_ARTICLE est l'identifiant du point
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var couche = new OpenLayers.Layer.Vector('Centrales'); var style = {externalGraphic:'IMG/rubon2.png', graphicWidth:21, graphicHeight:25,graphicXOffset:-10.5,graphicYOffset:-25}; <BOUCLE_centrale_eolien(ARTICLES){branche}{cstatut>0}{cterritoire = #GET{zone}}> var position#ID_ARTICLE = new OpenLayers.Geometry.Point(#GET{coord}); position#ID_ARTICLE.transform(OpenLayers.Projection.CRS84, map.getMap().getProjection()); var pt#ID_ARTICLE = new OpenLayers.Feature.Vector(position#ID_ARTICLE, null, style); couche.addFeatures([pt#ID_ARTICLE]); map.getMap().addLayer(couche); </BOUCLE_centrale_eolien>
Du coup je précise pour chaque zone géographique le système de référence FXX, MTQ,... Si j'affiche ma carte avec un zoom à 4 (Monde) c'est bon, mais dès que je zoom, tous mes markers France se retrouvent en Algérie. Si je change mon script pour afficher à un zoom initial de 5 : pas e problème mes points sont bien placés, mais si je dézoome à 4, alors ils partent tous au pôle nord ! et si on joue de la molette, ils ont l'air de se promener partout... Vraiment le passage de 4 à 5 me pose bien des soucis!
Alors soit je (enfin nous) trouve une solution au problème, soit je bloque le zoom ! (au fait comment fait-on pour bloquer roulette et clavier ?)
Merci d'avance pour votre précieuse aide
Partager