Как добавить базовый слой с двумя разными проекциями?
Я добавил оверлей с другой проекцией (EPSG: 4326), но мне нужно добавить базовый слой с другой проекцией
- Карты Гугл
- Мой векторный слой с EPSG: проекция 4326
Я вижу, что все в порядке с Google Maps, но когда я переключаю базовый слой на слой EPSG: 4326, все становится белым.
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);
}
источник
Настройте свой слой WMS без каких-либо ссылок на 900913 (при условии, что ваши данные находятся в 4326). Затем, когда вы добавляете слой в OpenLayers, убедитесь, что вы установили проекцию карты на 900913 (или просто сначала добавьте Google Карты). Затем, когда вы добавляете слой WMS, OpenLayers будет запрашивать данные в проекции карты (900913), а GeoServer будет перепроектировать с 4326 до 900913 на лету.
источник
В общем случае это невозможно, поскольку OpenLayers устанавливает проекцию карты из базового слоя.
Один из возможных обходных путей - использовать каскадную WMS, такую как GeoServer, для перепроецирования одного из базовых слоев с одного на другой проект.
источник
Я только что применил патч к ol 2.13.1 (из тега)
Последний файл патча из trac не работал, когда не было указано limitExtent, поэтому я также исправил его.
Вы можете получить его здесь вместе с примером текста:
https://github.com/glferri/ol2-reproj-2.13.1/blob/master/OL.Reproject_2.13.1_fixRestrictedExtent.patch
источник