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 Tue 03 January 2012 17:23

xavier.lalande
Participant occasionnel
Date d'inscription: 8 Feb 2007
Messages: 28

Problemes de débutant avec openlayers (affichage de plusieu fond...)

Bonjour à tous,

J'ai plusieurs petits problèmes que je n'arrive pas à résoudre avec openlayers (serveur Apache via EasyPHP, navigateur Mozilla 6.0.2).

Voici mon code :

Code:

html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <title>Criminpoint</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <meta name="description" content="">
        <meta name="keywords" content="">
        <link rel="stylesheet" media="screen" type="text/css" href="site.css" />
        <!--Script HTML-->
        <script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <!--Script OpenLayers-->
        <script type="text/javascript" src="/javascript/OpenLayers.2.11/OpenLayers.js"></script>
        <!--Script de ma carte-->
        <script type="text/javascript" src="/javascript/monscript.js"></script>
    </head>

    <body onload="init()">
            <div id="mapping"></div>
    </body>
</html>

---------------------------------------------------------------------------------------------------------------

Code:

Script

function init ()
{
    var map = new OpenLayers.Map('mapping',{});
    var baselayer =  new OpenLayers.Layer.OSM('OpenStreetMap');
    map.addLayer([baselayer]);
    if(!map.getCenter()){
            map.zoomToMaxExtent();
        }
        var point=new OpenLayers.LonLat(43.2951,-0.370797) // Je définis un point sur lequel centrer que j'appel point
        point=point.transform    (    new OpenLayers.Projection("EPSG:4326"), // Le fond de carte est apr défaut en WGS 1984, je le précise donc
                                new OpenLayers.Projection("EPSG:27563") // et je le modifie en Lambert 3 sud
                            );
        var zoom='15';
    map.setCenter(point,zoom);
    map.addControl (new OpenLayers.Control.LayerSwitcher);
}

Voici mes problèmes :

1- J'ai un problème pour l'affichage de plusieurs layers qui ne fonctionne pas dès que je fait map.addlayers(baselayer) c'est bon, si je fais map.addlayers([baselayer]), firebug me retourne : layer.div is undefined, et si je met plusieurs layers, ça ne marche dans aucun cas même en faisant map.addlayers(baselayer, layer2) ou map.addlayers([baselayer, layer2])

2- J'ai un truc magique, dans ma carte le Panzoom s'affiche comme si je l’appelais alors que je ne l'appel pas...

3- Enfin, avec mon code, ma carte ne centre pas du tout au bon endroit (même si j'enlève transform...), le zoom ne focnitonne pas correctement et savez-vous comment fait on pour modifier les coordonnées? je ne suis pas sûr d'avoir la bonne technique.

Je vous remercie d'avance pour l'aide apporté.

Xavier

Hors ligne

 

#2 Wed 04 January 2012 19:40

xavier.lalande
Participant occasionnel
Date d'inscription: 8 Feb 2007
Messages: 28

Re: Problemes de débutant avec openlayers (affichage de plusieu fond...)

Bon j'ai bidouillé pas mal j'ai réussi à trouver quelques réponses à mes questions :

1- En fait j'avais orthographié 'layer' alors qu'il fallait écrire 'layers'

2- Par défaut OSM charge des contrôles qu'il faut désactiver pour charger ses propres contrôles

3- Forcément, le Lambert3 (EPSG : 27563) n'est pas définit dans le javascript, il faut utiliser proj4js (même si là je suis bloquésur la façon de l'utiliser, d'ailleurs si vous avez des billes je suis preneur)

A bientôt!

Xavier

Hors ligne

 

#3 Thu 05 January 2012 08:46

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

Re: Problemes de débutant avec openlayers (affichage de plusieu fond...)

Bonjour,

Voici un code que j'utilise avec OSM et quelques couches google

Code:

<script src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=TA_CLE_GOOGLE_API'></script>
<script src="/js/OpenLayers-2.8/OpenLayers.js"></script>
<script src="/js/openlayers-2.8/OpenStreetMap.js"></script>

<script type="text/javascript">
    var map; 
        function init() 
        {
            //echelle
            var scale= new OpenLayers.Control.ScaleLine({ topInUnits: 'km', bottomInUnits: 'm'});
            
            map = new OpenLayers.Map ("map", {
                controls:[
                    new OpenLayers.Control.Navigation(),
                    //echelle
                    scale,
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.LayerSwitcher(),
                    new OpenLayers.Control.Attribution()],
                maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
                maxResolution: 156543.0399,
                numZoomLevels: 19,
                units: 'm',
                projection: new OpenLayers.Projection("EPSG:900913"),
                displayProjection: new OpenLayers.Projection("EPSG:4326")
            } );
 
            // overview (mini-carte)
            var overview1 = new OpenLayers.Control.OverviewMap();
            map.addControl(overview1);
            
            //couches
            layerMapnik = new OpenLayers.Layer.OSM.Mapnik("OpenstreetMap");
            map.addLayer(layerMapnik);
            layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("OpenCyclemap");
            map.addLayer(layerCycleMap);
            // declarations couche rue google map
            googlemap = new OpenLayers.Layer.Google("Google Map", {sphericalMercator:true});//projection 900913
            map.addLayer(googlemap);
            //carte du relief google
            var gphy = new OpenLayers.Layer.Google("Google relief",{sphericalMercator:true, type: G_PHYSICAL_MAP} );
            map.addLayer(gphy);
            var vueaerienne = new OpenLayers.Layer.Google("Gogle Hybride",{sphericalMercator:true, type: G_HYBRID_MAP} );
            map.addLayer(vueaerienne);
            });

    <!-- appel de la fonction init -->
    <body onload="init();">
    <!-- la <div> dans laquelle la carte apparaîtra -->
    <div style="width:730px; height:700px" id="map"></div>
    </body>

Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

Pied de page des forums

Powered by FluxBB