Openlayers, слои разной проекции, из Mercator в WGS84

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Rumato
Активный участник
Сообщения: 104
Зарегистрирован: 06 окт 2012, 15:35
Репутация: 0
Контактная информация:

Openlayers, слои разной проекции, из Mercator в WGS84

Сообщение Rumato »

Добрый день, помогите, разобраться, пожалуйста, с такой задачей.

Есть два слоя один WGS84, другой Mercator. Нужно чтобы они выводились на одной карте при помощи Openlayers.

Как это сделано мной сейчас:

Код: Выделить всё

function init(){
         	graticuleCtl = new OpenLayers.Control.Graticule({
 	 							labelled: true,
     							targetSize: 700
 		    });

 		 	var bounds =  new OpenLayers.Bounds(62.2289530630876442, 49.9969740071353286, 120.0024212413648002, 59.9999999949999889);
 			
 			var map = new OpenLayers.Map('mapdiv',{
           	 	controls: [
           	 	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(),
			 	new OpenLayers.Control.Graticule (),
			 	],
          scales: [4000000, 1000000, 100000, 10000, 1000],
          numZoomLevels: 6
 		  },
          
          {
           	units: 'degrees',
           	projection: new OpenLayers.Projection('WGS84'),
 		 	});
            altai = new OpenLayers.Layer.MapServer( "Altai krai", 
                    "http://localhost/cgi-bin/mapserv?map=/home/diver/geoserver/maps/map.map&layer=altay&layer=altay-city&mode=map", {layers: 'basic'},
                    { layers: 'image',
			   		  format: 'png24',      
			   		  isBaseLayer: true,
			   		 visibility: false});
			  // create OAM layer
    		var oam = new OpenLayers.Layer.OSM(
         	 	"Express Base",
         		"http://maps.kosmosnimki.ru/TileService.ashx?Request=gettile&layerName=04C9E7CE82C34172910ACDBF8F1DF49A&apikey=L5VW1QBBHJ&z=${z}&x=${x}&y=${y}",
         		{
             		sphericalMercator: true,
             		projection: new OpenLayers.Projection('WGS84')
         		}
     		);
	 		
     		
            map.addLayers([altai, oam]);
            map.addControl( new OpenLayers.Control.LayerSwitcher() );
            map.zoomToExtent(new OpenLayers.Bounds(59.2289530630876442, 48.9969740071353286, 107.0024212413648002, 53.9999999949999889));
 			if (!map.getCenter()) map.zoomToMaxExtent();
        }
        
Проблема заключается в том, что один слов altai отображается нормально, а другой слой oam выводит соверщенно другую часть планеты. Подскажите, можно ли как-то на лету задавать проекцию отдельному слою в Openlayers? Чтобы корректно строить карту.


Заранее большое спасибо!
Последний раз редактировалось Rumato 28 май 2014, 07:30, всего редактировалось 1 раз.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Openlayers, слои разной проекции, из Mercator в WGS84

Сообщение Denis Rykov »

1. Зачем вы используете класс OpenLayers.Layer.OSM для подключения тайлов с maps.kosmosnimki.ru, есть ведь специально сделанный для этого OpenLayers.Layer.XYZ?
2. В какой проекции отдаются тайлы с maps.kosmosnimki.ru? Предположу, что в EPSG:3857, поэтому если вы хотите совместить с этим слоем другой, то и другой слой должен быть в проекции EPSG:3857;
3. Зачем вам OpenLayers.Layer.MapServer? Настройте нормально WMS, укажите поддерживаемые проекции и подключите через OpenLayers.Layer.WMS.

Соседнюю тему читали, если нет, то вперёд, там есть ответы на все ваши вопросы.
Spatial is now, more than ever, just another column- The Geometry Column.
Аватара пользователя
paleogis
Модератор
Сообщения: 1112
Зарегистрирован: 22 мар 2009, 08:54
Репутация: 200
Ваше звание: Модератоо

Re: Openlayers, слои разной проекции, из Mercator в WGS84

Сообщение paleogis »

Denis Rykov писал(а): В какой проекции отдаются тайлы с maps.kosmosnimki.ru? Предположу, что в EPSG:3857, поэтому если вы хотите совместить с этим слоем другой, то и другой слой должен быть в проекции EPSG:3857;
По умолчанию космоснимки работают в 3395.

WMS и тайловый сервис, поддерживают три проекции: EPSG:3395, EPSG:4326, EPSG:3857 / EPSG:900913.
Rumato писал(а):Есть два слоя один WGS84, другой Mercator. Нужно чтобы они выводились на одной карте при помощи Openlayers.
WGS 84 это Вы имеете ввиду 4326?
Чисто теоретически можно запросить тайлы c космоснимков в 4326.
Кстати есть готовый пример на Openlayers.
Rumato
Активный участник
Сообщения: 104
Зарегистрирован: 06 окт 2012, 15:35
Репутация: 0
Контактная информация:

Re: Openlayers, слои разной проекции, из Mercator в WGS84

Сообщение Rumato »

Большое спасибо за ответы, очень помогли разобаться в задаче.
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость