Comment ajouter une couche de base avec deux projections différentes?
J'ai ajouté une superposition avec une projection différente (EPSG: 4326), mais je dois ajouter une couche de base avec différentes projections
- Google Maps
- Mon calque vectoriel avec projection EPSG: 4326
Je peux voir que tout va bien avec Google Maps, mais lorsque je passe de la couche de base à EPSG: la couche 4326, tout est blanc.
window.onload = function init(){
var lon = 84;
var lat = 28;
var zoom = 8;
var url = "http://10.6.7.6/geoserver/wms";
var mapControls = [
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher({'ascending':false}),
new OpenLayers.Control.ScaleLine(),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.OverviewMap(),
new OpenLayers.Control.KeyboardDefaults()
];
var map = new OpenLayers.Map(
'map',
{
numZoomLevels: 21,
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
controls: mapControls
});
var dsb = new OpenLayers.Layer.WMS(
"Nepal Border",
url,
{layers: 'GisData:IR'}
);
var gmap_gs = new OpenLayers.Layer.Google(
"Google Streets",// the default
{'sphericalMercator': true}
);
var dG = new OpenLayers.Layer.WMS(
"2G Down Sites",
url,
{layers: 'GisData:dG', transparent: "true",format: "image/png"},
{
isBaseLayer: false,
buffer: 0
});
map.addLayers([dsb, dG,gmap_gs]);
var proj = new OpenLayers.Projection("EPSG:4326");
var point = new OpenLayers.LonLat(lon,lat);
point.transform(proj, map.getProjectionObject());
map.setCenter(point, zoom);
}
la source
Configurez votre couche WMS sans référence à 900913 (en supposant que vos données sont en 4326). Ensuite, lorsque vous ajoutez la couche à OpenLayers, assurez-vous que vous avez défini la projection de la carte sur 900913 (ou assurez-vous simplement d'ajouter Google Maps en premier). Ensuite, lorsque vous ajoutez la couche WMS, OpenLayers demandera les données dans la projection de carte (900913) et GeoServer reprojetera de 4326 à 900913 à la volée.
la source
En général, cela n'est pas possible car OpenLayers définit la projection de la carte à partir de la couche de base.
Une solution possible consiste à utiliser un WMS en cascade comme GeoServer pour reprojeter l'une des couches de base de l'une à l'autre projection.
la source
Je viens d'appliquer le patch à l'ol 2.13.1 (à partir du tag)
Le dernier fichier de correctif de trac ne fonctionnait pas lorsqu'aucune restrictionExtent n'était donnée, donc je l'ai également corrigé.
Vous pouvez l'obtenir ici, avec un exemple de texte:
https://github.com/glferri/ol2-reproj-2.13.1/blob/master/OL.Reproject_2.13.1_fixRestrictedExtent.patch
la source