1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
// Récupération des paramètres GET et définitions des quelques variables globales
var map; //carte ol
var geop; //carte geoportail
var layer25k; //couche de base perso au 25k
var servers = {
wmsGeoserver: "http://serveur:8080/geoserver/wms" //pour le test, ça a peut d'importance que le serveur fonctionne ou contienne les couches souhaitées
}
var geopKey = "ma clé géoportail";
var ter = {
str: "<?php echo $_GET["ter"]; ?>",
defaultCenter: {lon:2.548828, lat:47.739323}, //centre par defaut sur carte geop
defaultZoom: 6, //zoom par defaut sur carte geop
layerGroup25k: "vFrance25k", //nom du layergroup geoserver pour carte map
projection: "EPSG:2154", //projection pour carte map
bounds: new OpenLayers.Bounds(
80000, 6040000,
1260000, 7120000
) //extent pour carte map
};
if (ter.str === "REU") {
ter.defaultCenter = {lon:55.45, lat:-20.88};
ter.defaultZoom = 15;
ter.layerGroup25k = "v25k-REU";
ter.projection = "EPSG:2975";
ter.bounds = new OpenLayers.Bounds(
310000, 7620000,
390000, 7700000
);
}
// (...) autres territoires
//callback de Geoportal.load, création de la carte "map"
function initialize() {
var options = {
controls: [],
maxExtent: ter.bounds, // dans la projection du territoire
projection: new OpenLayers.Projection(ter.projection),
units: 'm',
//maxResolution: 6650,
resolutions:[2048,1024,512,256,128,64,32,16,8,4,2,1,0.5,0.25,0.125],
minZoomLevel:0,
maxZoomLevel:12
};
map = new OpenLayers.Map('map', options); // essayé aussi avec Geoportal.Maps, ça ne change rien pour mon utilisation de l'objet
//Couche de base perso au 25k
layer25k = new OpenLayers.Layer.WMS(
"Geoserver layers - Tiled", servers.wmsGeoserver,
{//Params
LAYERS: ter.layerGroup25k,
format: "image/png"
},
{//Options
buffer: 0,
displayOutsideMaxExtent: false,
isBaseLayer: true,
singleTile:true,
ratio: 1.2
}
);
map.addLayers([layer25k]);
map.addControl(new OpenLayers.Control.Navigation());
// centrage, la partie problématique
geopCenter = new OpenLayers.LonLat(ter.defaultCenter.lon, ter.defaultCenter.lat);
console.log("Centre fourni : "+geopCenter);
mapCenter = geopCenter.transform(OpenLayers.Projection.CRS84, map.getProjection());
console.log(map.getProjection()); // dans firebug je n'ai pas qu'une chaine, j'ai un objet OpenLayers.Projection
console.log(map.getMaxExtent()); // j'ai une étendue, ok pour FXX, foireuse pour REU
console.log("Centre projeté : "+mapCenter); // centre correct
console.log("map.setCenter()");
map.setCenter(mapCenter, 1*ter.defaultZoom - 5); //les niveaux de zoom des 2 cartes sont décalés
console.log("map.getCenter() : "+map.getCenter()); // centre correct pour FXX, qui correspond à celui 2 lignes avant, centre foireux pour REU
}
function checkApiLoading(retryClbk,clss) {
var f, i, l;
if (__Geoportal$timer != null) {
//clearTimeout: annule le minuteur "__Geoportal$timer" avant sa fin.
window.clearTimeout(__Geoportal$timer);
__Geoportal$timer = null;
}
// Il se peut que l'init soit exécuté avant que l'API ne soit chargée.
//Ajout d'un code temporisateur qui attend 300 ms avant de relancer l'init.
for (i = 0, l = clss.length; i < l; i++) {
try {
f = eval(clss[i]);
} catch (e) {
f = undefined;
}
if (typeof(f) === 'undefined') {
__Geoportal$timer = window.setTimeout(retryClbk, 300);
return false;
}
}
return true;
}
if (window.__Geoportal$timer === undefined) {
var __Geoportal$timer = null;
}
// Initialisation de la carte geop
(function loadAPI() {
// on attend que les classes soient chargées
if (checkApiLoading('loadAPI();', ['OpenLayers', 'Geoportal', 'Geoportal.Viewer', 'Geoportal.Viewer.Default']) === false) {
return;
}
geop = Geoportal.load('geopDiv', [geopKey], ter.defaultCenter, ter.defaultZoom,
{
language: 'fr',
territory: ter.str,
layers: ['GEOGRAPHICALGRIDSYSTEMS.MAPS'],
layersOptions: {'GEOGRAPHICALGRIDSYSTEMS.MAPS':{opacity:1.0}},
overlays: {},
geormUrl: "../communs/geoportail/autoconf.json", //fichier d'autoconf perso
onView: initialize
}
);
})(); |
Partager