Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: Zoom de couche overlay

Bonjour,

Quelle traduction bien lourde wink 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

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1025
Site web

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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

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

 

Pied de page des forums

Powered by FluxBB