#1 Mon 18 June 2012 14:28
- Christian Bleau
- Participant occasionnel
- Date d'inscription: 10 Jun 2012
- Messages: 22
Zoom de couche overlay
bonjour,
mes recherches et mes compétences ne m'ont pas permis d'identifier comment résoudre deux pbs que je rencontre:
1- comment faire en sorte qu'une couche OpenLayers.Layer.Markers s'ajuste suivant le panzoom demandé?
2- la carto terrain google a t elle un zoom limité? dans mes essais même si je précise
Code:
numZoomLevels: 20
l'affichage s'adapte suivant un traitement que je ne maitrise pas..
ici la page de test http://pofableau.com/openlayer/multicouche.html
merci bien
Dernière modification par Christian Bleau (Mon 18 June 2012 15:13)
Hors ligne
#2 Mon 18 June 2012 23:08
- Christian Bleau
- Participant occasionnel
- Date d'inscription: 10 Jun 2012
- Messages: 22
Re: Zoom de couche overlay
j'ai lu sur http://softlibre.free.fr
Couches de superposition
Les couches qui ne sont pas de base – parfois appelées ‘overlays’ ou couches de superposition – sont des couches alternatives aux couches de base. Plusieurs couches de superposition peuvent être activée à la fois. Ces couches ne contrôlent pas les niveaux de zoom de la carte, mais peuvent être activée ou désactivée à certaines échelles par les paramètres de résolution/d’échelle min/max.
Certains types de couches overlays gèrent la reprojection vers la projection de la couche de base au moment du chargement de la couche. La plupart des couches de superposition ne sont pas définies par défaut comme couches de base, comme le fait la classe Layer. Les couches qui ne sont pas de
base s’affichent au dessus des couches de base.
faut il alors considérer qu'il n'est pas possible d'obtenir un zoom sur une image marker?
[Edit Modérateur] n'hésitez pas à utiliser les balises pour une meilleure lisibilité. Merci
Hors ligne
#3 Tue 19 June 2012 10:34
Re: Zoom de couche overlay
Bonjour,
Quelle traduction bien lourde Bon le site est un peu vieux et en générale on évite d'utiliser une couche Marker qui va probablement disparaître lors de la version 3.0 d'OpenLayers (en cours de réflexion avancé).
Sinon je ne pense pas qu'on ne puisse pas zoomer sur une couche Markers.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#4 Tue 19 June 2012 10:51
- Christian Bleau
- Participant occasionnel
- Date d'inscription: 10 Jun 2012
- Messages: 22
Re: Zoom de couche overlay
bonjour yves,
exact , à force de lire et relire la doc d'OL indique clairement qu'il est préférable d'utiliser OpenLayers.Layer.Vector.
ceci fonctionne parfaitement.
aussi j'essaie de faire varier l'image en lui attribuant une valeur z qui serait le zoom en cours.
Code:
var z = this.map.getZoom(); {externalGraphic: 'a_img/travauxorange.png', graphicHeight: 60*z , graphicWidth: 65*z}
rien n'y change et lorsque je cherche à connaître la valeur de z par document.write le resultat afficher est 0 ......... :-((((
Hors ligne
#5 Tue 19 June 2012 10:58
Re: Zoom de couche overlay
Pour zoomer sur un objet j'utilise ceci
Code:
trace_geojson.events.register('loadend', map, function(){this.zoomToExtent(trace_geojson.getDataExtent())}); map.setCenter(null, null);
Je ne sais pas si cela peut aider.
Ainsi, je zoom sur ma trace GPS
http://partir-en-vtt.com/php/articles/i … rticle=375
Dernière modification par heretik25 (Tue 19 June 2012 11:04)
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#6 Tue 19 June 2012 11:10
Re: Zoom de couche overlay
Bonjour,
Pourquoi this ?
Code:
var z = map.getZoom();
Si l'objet map est public tu peux tenter de lancer map.getZoom() dans la console js de Firebug.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#7 Tue 19 June 2012 11:14
- Christian Bleau
- Participant occasionnel
- Date d'inscription: 10 Jun 2012
- Messages: 22
Re: Zoom de couche overlay
je vais zoomer ta proposition
merci ;-)
Hors ligne
#8 Tue 19 June 2012 11:27
- Christian Bleau
- Participant occasionnel
- Date d'inscription: 10 Jun 2012
- Messages: 22
Re: Zoom de couche overlay
dans Firebug la valeur z restituée est correcte et varie selon le niveau de zoom.
si j'integre la variable z
Code:
var vectorLayer = new OpenLayers.Layer.Vector("Overlay"); var feature = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Point(2.534904,48.387558).transform( new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection ), {some:'data'}, {externalGraphic: 'a_img/travauxorange.png', graphicHeight: 60*z , graphicWidth: 65*z}); vectorLayer.addFeatures(feature); map.addLayer(vectorLayer);
z prend comme valeur 0 .........
ici il s'agit certainement de lacune de ma part en js ..... :s
Dernière modification par Christian Bleau (Tue 19 June 2012 11:27)
Hors ligne
#9 Tue 19 June 2012 11:34
Re: Zoom de couche overlay
Bonjour,
Je pense que le zoom n'est pas instancié quand tu appelles la variable z. Elle est définie plus tard.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#10 Tue 19 June 2012 11:53
- Christian Bleau
- Participant occasionnel
- Date d'inscription: 10 Jun 2012
- Messages: 22
Re: Zoom de couche overlay
merci Yves, merci heretik25,
je vais finir par trouver le remède.
Hors ligne
#11 Wed 20 June 2012 15:21
- Christian Bleau
- Participant occasionnel
- Date d'inscription: 10 Jun 2012
- Messages: 22
Re: Zoom de couche overlay
Bonjour,
J'ai bien compris que la variable getZoom n'était pas instancée mais comme faire?
peut on inclure une tempo le temp que les tuiles soient chargées ??? ceci me depasse.
j'ai essayé une voie avec getScale et l'autre en passant pas une couche Vector.
http://pofableau.com/openlayer/multicouche.html
les overlays "depart" et "calque" apparaissent bien mais ne sont pas ajustées selon le zoom. cf. le pb exposé dans ce post.
la couche "depart2" n'apparait pas
si vous aviez des idées en prolongement de ces essais .
quoiqu'il en soit merci pour les suggestions qui m'ont été faites.
christian
Code:
var style = new OpenLayers.Style( OpenLayers.Util.applyDefaults( {fillColor: "green", fillOpacity: 1, strokeColor: "black"}, { rules: [ new OpenLayers.Rule({ maxScaleDenominator: 200000000, minScaleDenominator: 100000000, symbolizer: { externalGraphic: 'a_img/travauxorange.png', graphicHeight: 60*18/10 , graphicWidth: 65*18/10 } }), new OpenLayers.Rule({ maxScaleDenominator: 100000000, symbolizer: { externalGraphic: 'a_img/travauxorange.png', graphicHeight: 60*18/5, graphicWidth: 65*18/5 } }) ] })); var depart = new OpenLayers.Layer.Vector("Depart", { styleMap: new OpenLayers.StyleMap(style) }); map.addLayer(depart); // essai avec getScale ----------------------------- var z= map.getScale(); var graphicWidth = 55; var graphicHeight = 50; var scaleFactorWidth = graphicWidth * z; var scaleFactorHeight = graphicHeight * z; var depart2 = new OpenLayers.Layer.Vector("Départ2"); var feature = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Point(2.534000,48.387000).transform( new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection ), {some:'data'}, {externalGraphic: 'a_img/travauxorange.png', graphicHeight: graphicHeight, graphicWidth: scaleFactorWidth});
depart2.addFeatures(feature);
Hors ligne
#12 Thu 21 June 2012 17:08
- Christian Bleau
- Participant occasionnel
- Date d'inscription: 10 Jun 2012
- Messages: 22
Re: Zoom de couche overlay
hello,
juste un mot pour proposer le code qui solutionne le pb:
j'appelle getZoom ou getScale dans une fonction. en l'occurence dans OpenLayers.Style
le calque suit la progression du zoom.
Code:
variables map.getScale ( ); or getZoom send a good information if it's inside a function ..... style = new OpenLayers.Style({ externalGraphic: 'http://pofableau.com/openlayer/calque.png', graphicHeight: "${H1}", graphicWidth: "${W1}" }, { context: { H1: function() { return 272/map.getScale()*2000;}, W1: function() { return 200/map.getScale()*2000;} } } ); var couche_calque = new OpenLayers.Layer.Vector("Calque", { styleMap: new OpenLayers.StyleMap(style) } ); var feature = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Point(2.534904,48.387375).transform( new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection ), {some:'data'} ); couche_calque.addFeatures(feature);
a bientôt.
christian
comment indique t on sur ce forum que le sujet est traité ?
Dernière modification par Christian Bleau (Thu 21 June 2012 17:11)
Hors ligne