#1 Fri 16 December 2011 10:29
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
[OpenLayer] défintion du zoom d'affichage
Aloha
Je souhaite cadrer ma carte OpenLayer sur le territoire dont je m'occupe.
Voila le code que j'ai écrit :
Code:
<!DOCTYPE html> <html> <head> <title> La Galerie de Culture </title> <link rel="stylesheet" href="openlayers/theme/default/style.css" type="text/css"> <style> #map-id { width: 512px; height: 256px; } </style> <script src='http://openlayers.org/api/OpenLayers.js'></script> </head> <body> PLAN LA GALERIE DE CULTURE <h1>My Map</h1> <div id="map-id"> <script> bounds = new OpenLayers.Bounds(); //(459058.673026622,6309377.38245699) (443772.587595563,6330673.05209772) (443510.195658709,6309585.52634962) // bounds.extend(new OpenLayers.LonLat(443510,6309585)); bounds.extend(new OpenLayers.LonLat(459358,6330463)); bounds.toBBOX(); // returns 4,5,5,6 var map = new OpenLayers.Map("map-id"); var imagery = new OpenLayers.Layer.WMS( "Global Imagery", "http://maps.opengeo.org/geowebcache/service/wms", {layers: "bluemarble"} ); map.addLayer(imagery); map.zoomToExtent(bounds); </script> </div> <!--Sur le plan, si possible écrire le nom de la structure. (Les adresses renseignées ci-dessous sont pour votre information)--> Musée des Beaux-Arts 8 rue Chanzy ... </body> </html>
Seul résultat : une carte blanche. Quelqu'un a-t'il une idée du pourquoi ? J'ai reprojeté mon plus grand rectangle circonscrit du RGF93 vers l'EPSG 900913. Sont-ce les coordonnées qui sont fausses ?
D'avance, merci, merci,
PS. Quel est le layer que vous conseillez pour des plans urbains ?
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#2 Sat 17 December 2011 05:02
- Pierre Vernier
- Participant actif
- Lieu: UK
- Date d'inscription: 15 Jun 2006
- Messages: 116
- Site web
Re: [OpenLayer] défintion du zoom d'affichage
Hola,
Si tu veux un plan urbain, OpenStreetMap semble tout indiqué.
Voici le code pour afficher une couche OSM (centrée sur le musée des Beaux-Arts et un niveau de zoom de 17):
Code:
<html> <head> <title>OSM</title> <script type='text/javascript' src="http://www.openlayers.org/api/OpenLayers.js"></script> <script type='text/javascript'> var map; function init() { map = new OpenLayers.Map("map_id", {}); var osm_layer = new OpenLayers.Layer.OSM(); map.addLayer(osm_layer); map.setCenter(new OpenLayers.LonLat(448675.47,6317914.24) , 17); } </script> </head> <body onload="init();"> <div id="map_id" style='width: 512px; height: 512px;'></div> </body> </html>
La projection par défaut est 900913.
ou à la place de:
Code:
map.setCenter(new OpenLayers.LonLat(448675.47,6317914.24) , 17);
tu peux utiliser:
Code:
map.zoomToExtent(new OpenLayers.Bounds(443510,6309585,459358,6330463));
Par contre si tu veux utiliser la couche Blue Marble en 900913, il faut le préciser. Par défaut, c'est en WGS 84 (EPSG: 4326).
Tu peux consulter le GetCapabilities des demos d'OpenGeo pour voir les couches dispos et leur système de référence spatial:
http://maps.opengeo.org/geowebcache/ser … TILED=true
Voila comment afficher la couche Blue Marble en EPSG:900913:
Code:
<html> <head> <title>Bluemarble</title> <script type='text/javascript' src='http://openlayers.org/api/OpenLayers.js'></script> <script type='text/javascript'> var map; function init() { map = new OpenLayers.Map('map_id', {projection: 'EPSG:900913', displayProjection: new OpenLayers.Projection("EPSG:4326"), maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508), maxResolution: 156543.03390625, units: 'm' }); var wms_layer_map = new OpenLayers.Layer.WMS( 'Base Layer', 'http://maps.opengeo.org/geowebcache/service/wms', {layers: 'bluemarble', format: "image/png"}, {isBaseLayer: true} ); map.addLayer(wms_layer_map); if (!map.getCenter()){ map.zoomToMaxExtent(); } } </script> </head> <body onload='init();'> <div id='map_id' style='width: 512px; height: 512px;'> </div> </body> </html>
J'ai choisi le format png car avec le jpeg (par défaut) j'avais bizarrement des tiles en désordre.
Pierre
Dernière modification par Pierre Vernier (Sat 17 December 2011 05:58)
Hors ligne
#3 Sat 17 December 2011 10:30
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: [OpenLayer] défintion du zoom d'affichage
Merci, merci, merci Pierre.
Je teste tout ça.
Tes indications, c'est le Pérou XD
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne