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

 

Pied de page des forums

Powered by FluxBB