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


