Como adiciono camada base com duas projeções diferentes?
Adicionei overlayer com uma projeção diferente (EPSG: 4326), mas preciso adicionar uma camada base com várias projeções
- Google Maps
- Minha camada vetorial com projeção EPSG: 4326
Percebo que tudo está bem com o Google Maps, mas quando mudo a camada base para o EPSG: 4326, tudo fica branco.
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);
}
fonte
Configure sua camada WMS sem qualquer referência a 900913 (supondo que seus dados estejam em 4326). Depois, quando você adicionar a camada ao OpenLayers, defina a projeção do mapa como 900913 (ou apenas adicione o Google Maps primeiro). Então, quando você adiciona a camada WMS, o OpenLayers solicita os dados na projeção do mapa (900913) e o GeoServer reprojeta de 4326 a 900913 em tempo real.
fonte
Em geral, isso não é possível, pois o OpenLayers define a projeção do mapa a partir da camada base.
Uma solução possível é usar um WMS em cascata como o GeoServer para reprojetar uma das camadas base de uma para a outra projeção.
fonte
Acabei de aplicar o patch na versão 2.13.1 (da tag)
O último arquivo de patch do trac não funcionou quando não foi fornecido nenhum strictExtent, então eu o corrigi também.
Você pode obtê-lo aqui, juntamente com um exemplo de texto:
https://github.com/glferri/ol2-reproj-2.13.1/blob/master/OL.Reproject_2.13.1_fixRestrictedExtent.patch
fonte