OpenLayers: одинаковые проекции с разными кодами

Решенные задачи, первая запись - описание решения.
Ответить
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3370
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 519
Ваше звание: Author
Контактная информация:

OpenLayers: одинаковые проекции с разными кодами

Сообщение Denis Rykov » 28 ноя 2011, 06:38

Потребовалось подключить в проект WMS-слой, поднятый на базе ArcGIS, но так-как базовый слой в проекте использует проекцию EPSG:900913, то и любой оверлей запрашивается в этой проекции, а поскольку ArcGIS не понимает, что такое 900913, а использует для этой проекции код EPSG:3857, то и отдать слой в 900913 не сможет. Как же поступить в такой ситуации? Очень просто: после создания слоя и перед добавлением его на карту нужно указать его проекцию, пример подключения публичной кадастровой карты:

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

lay_rosreestr = new OpenLayers.Layer.WMS('Публичная кадастровая карта',
        'http://maps.rosreestr.ru/ArcGIS/services/Cadastre/CadastreWMS/MapServer/WMSServer',
        {layers: "24,23,22,21,20,13,12,11,9,8,6,5,4,3,2,1,18,17,16,15", transparent: true},
        {isBaseLayer: false, singleTile: true}
    );
lay_rosreestr.projection = "EPSG:3857";
map.addLayers([lay_rosreestr]); 
Spatial is now, more than ever, just another column- The Geometry Column.

AntonAD
Участник
Сообщения: 80
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: OpenLayers: одинаковые проекции с разными кодами

Сообщение AntonAD » 13 май 2012, 06:17

Подскажите что делаю не так:

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

	var OSM_map = new OpenLayers.Layer.OSM();
    var rosreestr = new OpenLayers.Layer.WMS("Росреестр", "http://maps.rosreestr.ru/ArcGIS/services/Cadastre/CadastreWMS/MapServer/WMSServer?", 
											{transparent: 'true', layers: "22,21,20,19,18,16,15,14,13,11,10,9,7,6,4,3,2,1", format: 'png'}, 
											{isBaseLayer:false});
	rosreestr.projection = "EPSG:3857";

  	var mapoptions = {
        projection: "EPSG:900913",
        sphericalMercator: true,
	    units: "m", 
	    numZoomLevels:18,
        maxResolution: 156543.0339,
        maxExtent: new OpenLayers.Bounds(-128 * 156543.0339, -128 * 156543.0339, 128 * 156543.0339, 128 * 156543.0339)
	}; 
   
    map = new OpenLayers.Map("map", mapoptions);

    map.addLayers([OSM_map, rosreestr]);
Если слой Росреестра сделать базовым - все работает, иначе OpenLayers запрашивает информацию с EPSG:900913, а сервер отвечает invalid srs

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3370
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 519
Ваше звание: Author
Контактная информация:

Re: OpenLayers: одинаковые проекции с разными кодами

Сообщение Denis Rykov » 15 май 2012, 06:51

Не смог воспроизвести вашу проблему, вот пример, всё как вы написали, но в моём случае это работает.
Spatial is now, more than ever, just another column- The Geometry Column.

AntonAD
Участник
Сообщения: 80
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: OpenLayers: одинаковые проекции с разными кодами

Сообщение AntonAD » 16 май 2012, 20:51

Denis Rykov писал(а):Не смог воспроизвести вашу проблему, вот пример, всё как вы написали, но в моём случае это работает.
Огромное спасибо, действительно код одинаковый, просто у меня OpanLayers.js 2010 года, а у Вас 2011.
Обновил, все ок.

Ответить

Вернуться в «Рецепты»

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

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