Pages: 1
- Sujet précédent - Problemes de débutant avec openlayers (affichage de plusieu fond...) - Sujet suivant
#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
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&v=2&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
Pages: 1
- Sujet précédent - Problemes de débutant avec openlayers (affichage de plusieu fond...) - Sujet suivant