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 28 July 2008 12:53

marjal_
Participant occasionnel
Date d'inscription: 26 Jul 2008
Messages: 14

OpenLayers.layer.image()

Bonjour!

Voilà un certain moment que je me prends la tête dans les paramètres à préciser pour caler correctement mon image dans la carte openlayers.

Voilà mon code:
OpenLayers.Layer.image('Photo', 'photo_globale.gif', new OpenLayersBounds(-1,-1,1,1), new OpenLayersSize(2995,300), options)

En fait, j'ai l'impression que OpenLayersBound définie une marge autour de mon image (l'image est donc tronquée d'un pixel sur chaque bord)
mais aussi les coordonnées image des bords (le bord en haut à droite à donc des coordonnées 1,1). Ceci m'empêche donc de mettre l'image dans un système de coordonnées réel...
Ainsi, mes données ayant des coordonnées aux alentours de 7000 sont invisible sur la carte qui ne va pas plus loin que 1,1... Comment faire?

De plus, j'aimerais indiquer la taille d'un pixel mais malgré mes recherches et mes essais, rien ne se produit... Pourriez-vous me donner la syntaxe?

Merci d'avance de votre aide...
Je suis quelque peu désemparée.. smile

Hors ligne

 

#2 Mon 28 July 2008 15:10

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: OpenLayers.layer.image()

Bonjour, voici le code présent dans l'exemple d'OpenLayers :
http://openlayers.org/dev/examples/image-layer.html

var graphic = new OpenLayers.Layer.Image(
                                'City Lights',
                                'http://earthtrends.wri.org/images/maps/ … hts_lg.gif',
                                new OpenLayers.Bounds(-180, -88.759, 180, 88.759),
                                new OpenLayers.Size(580, 288),
                                options);

Donc OpenLayers.Bounds permet de définir l'extent de l'image et ceux dans les coordonnées de ta carte OpenLayers
OpenLayers.Size permet de définir la taille en pixel de ton image.

Je suppose donc que dans ton cas, l'extent de ton image n'est pas -1,-1,1,1 ?

Hors ligne

 

#3 Mon 28 July 2008 16:01

marjal_
Participant occasionnel
Date d'inscription: 26 Jul 2008
Messages: 14

Re: OpenLayers.layer.image()

Bonjour, merci pour ta réponse!
Je viens de résoudre mon problème.. En fait, je ne pouvais pas voir mon image non pas à cause de OpenLayersBound mais parce que par défaut, le centre de l'image est à 0;0 ce qui posait problème lorsque je mettais les coordonnées réelles.
J'ai donc maintenant
OpenLayers.Bounds(59.173 , 71.734, 73.593, 86.456)
OpenLayers.Size(700,710)
et
map.setCenter(new OpenLayers.LonLat(66.383,79.095),1)

Voilà! Et ca marche!
Encore merci

Hors ligne

 

#4 Tue 29 May 2012 20:19

Deleurme
Participant actif
Date d'inscription: 13 Apr 2006
Messages: 101
Site web

Re: OpenLayers.layer.image()

Bonjour,

Je reprend ce vieux post pour tenter d'éclaircir un point important en rapport avec l'insertion d'un Raster dans une application Openlayers.

Je dispose d'un Raster qui ne s'affiche que lorsque BaseLayer: true

Dans mon application j'ai le code suivant:

Code:

var map = new OpenLayers.Map('mymap',{
    projection: "EPSG:4326",
    maxExtent: new OpenLayers.Bounds(6353980,-2334004,6450291,-2285002),
    controls: [
    new OpenLayers.Control.PanZoomBar(),
    new OpenLayers.Control.ScaleLine(),
    new OpenLayers.Control.MousePosition(),
    new OpenLayers.Control.Navigation(),
    new OpenLayers.Control.KeyboardDefaults()
    ]
    });

        // create Google Mercator layers
    
    var gmap = new OpenLayers.Layer.Google(
            "Google Streets",
        {numZoomLevels: 20,'sphericalMercator': true},{isBaseLayer: true}
        );
    map.addLayer(gmap);

    var gsat = new OpenLayers.Layer.Google(
        "Google Satellite",
        {type: G_SATELLITE_MAP,'sphericalMercator': true,numZoomLevels: 20},{isBaseLayer: true}
        );
    map.addLayer(gsat);

Ainsi 2 cartes Google sont définies comme BaseLayer. Je souhaite que mon Raster "Reduit" soit affiché comme un simple Layer Raster.
Je déclare donc BaseLayer:false comme suit:


Code:

    var Reduit = new OpenLayers.Layer.Image("Reduit11", "./data/Reduit11-small.jpg",
             new OpenLayers.Bounds(6400014,-2301441,6401511,-2299738),
                         new OpenLayers.Size(1100,1218),
          {isBaseLayer:false});

    map.addLayer(Reduit);

Mon raster ne s'affiche pas dans mon application.
Mon Bounds correspond aux coordonnées X, Y en bas à gauche de mon image et X,Y en haut à droite de mon image, respectant la taille de mon pixel et de sa représentation sur la carte.
Le fichier .jgw ne sert donc à rien?

Comment faire pour ce raster s'affiche sans qu'il soit déclaré BaseLayer:true  ?
Merci par avance

Arno

Hors ligne

 

Pied de page des forums

Powered by FluxBB