#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..
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
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