При создании проекта с использованием связки MapServer+OpenLayers возникла проблема с отображением карты в проекции отличной от epsg:4326. В частности, при использовании приведённого кода пропорции карты не изменяются по сравнению со случаем, когда настройки проекции слоя отсутствуют - только уменьшается изображение в целом (по всей видимости, отображаясь в прямоугольнике 180х360 метров). Собственно, первый вопрос такой: написанный код так и должен отрабатывать (и как тогда отобразить карту в проекции Меркатора), или должно быть по-другому?
html-файл:
Код: Выделить всё
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test page</title>
    <script src="js/OpenLayers/OpenLayers.js" type="text/javascript"></script>
    <script src="js/jQuery/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
		// начальное позиционирование карты
		var lon = 37.622975;
		var lat = 55.746071;
		var zoom = 5;
        // переменные для карт и слоев
        var map, layer;
        //Начальная проекция:
        var defaultProjection="EPSG:3395";
		
		function init(){
        	map = new OpenLayers.Map({
	        	div: 'map',
		        controls: [], 
		        //projection: new OpenLayers.Projection(defaultProjection),
		        //displayProjection: new OpenLayers.Projection(defaultProjection),
	        	tileSize: new OpenLayers.Size(256,256) //размер фрагмента карты
	        });
	
	        window.onunload = function (){ map.unloadDestroy();}; //функция принудительной отчистки памяти при выгрузке
	
	        layer = new OpenLayers.Layer.WMS( "Web MapServer", 
		    	"http://127.0.0.1:8080/cgi-bin/mapserv.exe", 
		    	{
			    	format: 'aggpng24',
				    //map: '/ms4w/apps/example/wms_4mln_shp_200k.map', 
				    map: '/ms4w/apps/example/wms_4mln_shp_200k_shp.map', 
				    //map: '/ms4w/apps/example/wms_4mln_shp_200k_projection.map', 
				    layers: 'sea,rga_color,dna,vga2,vga1,isl,ppa,coast,dnl,road,rrl,boundary,names,ppp,200k_ecw_all'
			    },
			    { 
			    	gutter: 0, 
		    		transitionEffect: 'resize',
			    	//resolutions: [0.256,0.128,0.064,0.032,0.016,0.008,0.004,0.002,0.001,0.0005],
				    projection: new OpenLayers.Projection(defaultProjection),
				    units: 'meters',
				    maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
				    maxResolution: 10000
				});
	        map.addLayer(layer);
        	map.addControl(new OpenLayers.Control.LayerSwitcher());
	        map.addControl(new OpenLayers.Control.PanZoomBar());
	        map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
		    
		}
    </script>
</head>
<body onload="init();">
    <div id="map" class="mymap">
    </div>
</body>
</html>
Код: Выделить всё
MAP
	SIZE           256 256
	
	SHAPEPATH      "/ms4w/apps/example/4mln/shp/"
	
	IMAGECOLOR     255 255 255
	SYMBOLSET      "./symbols/symbols35.sym"
	FONTSET        "./fonts/fonts.list"
	PROJECTION
		"init=epsg:3395"
	END
	
	WEB
		METADATA
			"wms_srs" "epsg:4326 epsg:3395"
		END
	END
	
	OUTPUTFORMAT
		NAME aggpng24
		DRIVER AGG/PNG
		MIMETYPE "image/png"
		IMAGEMODE RGB
		EXTENSION "png"
	END
#<...> код отображения слоёв, проекции слоёв не заданы
END
 
						