OpenLayers + MapServer: GML response

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
2k.sq!
Новоприбывший
Сообщения: 5
Зарегистрирован: 04 май 2009, 12:55
Репутация: 0

OpenLayers + MapServer: GML response

Сообщение 2k.sq! »

Это мой первый опыт общения с данными технологиями (OpenLayers + MapServer)
Создал map файлы на слои из MapInfo по примерам, за что отдельное спасибо, но проблема с позиционированием на объекте.
Обращаюсь через OpenLayers.Ajax.Request(); Проблема в том, что когда пытаюсь получить ответ с русскоязычным параметром, то ответ не приходит.
Вот пример:

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

var ms_url = "http://localhost/cgi-bin/mapserv.exe";
var ms_wfs = "C:/OSGeo4W/apps/example/wfs_hant.map";
var kn = '1211006гар5';          // не работает
//var kn = '12110060065';       // работает
var url = ms_url + '?map='+ms_wfs;
			new OpenLayers.Ajax.Request(url, {
				method: 'get',
				parameters: {
					version : 	"1.0.0",
					service : 	"WFS",
					request : 	"GetFeature",
					typename : 	"land",
					filter : 	"<Filter><PropertyIsEqualTo><PropertyName>KN_FIND</PropertyName><Literal>"+kn+"</Literal></PropertyIsEqualTo></Filter>"
				},
				onSuccess: function(transport){

					var response = transport.responseText || null;

					if (response != null) {
						var gml = new OpenLayers.Format.GML();
						var features = gml.read(response);
						if (features.length > 0) {
							var j = 0;
							for (j = 0; j < features.length; j++) {
								vectorLayer.addFeatures([new OpenLayers.Feature.Vector(features[j].geometry)]);
							}
							showSelectedLayer = true;
							map.addLayer(vectorLayer);
						}
					}
				},
				onFailure: function(){
					alert('failure');
				}
			});
Файл WFS:

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

MAP
	NAME 		"WFS_server"
	IMAGETYPE 	GIF
	EXTENT 		2579182 848255 2755700 1016909	
	SIZE 		800 600
	IMAGECOLOR 	255 255 255

	PROJECTION
		"init=epsg:4326" 
	END

#	FONTSET "fonts/fonts.list"
#	SYMBOLSET "symbols/novour.sym"

	CONFIG "MS_ERRORFILE" "novour_error.log"

	WEB
		IMAGEPATH "ms_tmp/"
		IMAGEURL "ms_tmp/"
		METADATA
			"wfs_title" "MR_WFS_HANT"
			"wfs_onlineresource" "http://localhost:8008/cgi-bin/mapserv.exe?map=C:/OSGeo4W/apps/example/lands_hant.map"
			"wfs_srs" "EPSG:4326"
			"wfs_encoding" "windows-1251"
			"ows_schemas_location" "http://ogc.dmsolutions.ca"
		END
	END

	################ OGR LAYERS #######################	
	
	#################
	# ПОИСК ОБЪЕКТОВ#
	#################
	LAYER
		NAME "land"
		TYPE POLYGON
		STATUS ON
		CONNECTIONTYPE OGR
		CONNECTION "C:\OSGeo4W\apps\example\Цифровая карта\Слои\LANDS.TAB"
		METADATA
			"wfs_title" "land"
    		"gml_featureid" "KN"
			"gml_exclude_items" "all"
  		END
		DUMP TRUE
	END
	###################################################
END # Map
Что я делаю не так? Пробовал Escape - не помогло.
Аватара пользователя
wmk
Активный участник
Сообщения: 102
Зарегистрирован: 11 янв 2009, 17:38
Репутация: 0
Откуда: Казань
Контактная информация:

Re: OpenLayers + MapServer: GML response

Сообщение wmk »

Если проблема только в "русских" символах ... то это Ajax который работает в UTF-8.
Можно попробовать использовать сторонние библиотеки такие как JQuery (UTF-8) и JsHttpRequest (любая кодировка)
OurGuns.ru - пневматическое оружие России и мира
Пневматическое оружие , Страйкбольное оружие , Пейнтбольное оружие
2k.sq!
Новоприбывший
Сообщения: 5
Зарегистрирован: 04 май 2009, 12:55
Репутация: 0

Re: OpenLayers + MapServer: GML response

Сообщение 2k.sq! »

Все не так легко, как хотелось бы.
Дело в том, что слои взяты из MapInfo. Есть слой с участками, есть два типа участков, одни так называются по типу "12070010010000", другие по типу "12070010027 ру". В MapServer реализую поиск по кадастр номеру, вот первые участки нормально находятся, а вторые нет.
Если просто изменить имя, без участия расского шрифта - эффекта не дало. Значит дело не в кодировке.
Пробовал использовать сторонние (prototype.js), тоже самое.
У меня больше мыслей нет.
strannik-ivan
Новоприбывший
Сообщения: 1
Зарегистрирован: 16 май 2009, 18:50
Репутация: 0

Re: OpenLayers + MapServer: GML response

Сообщение strannik-ivan »

В мапфайле убираешь указание кодировки, файлы(shp) сохраняешь в кодировке UTF8 сайт, страницы сайта и передачу параметров ставишь тоже UTF8 и нормально с русскими буквами. Можно наверно и в win1251 но тоже все эти параметры не забыть. У меня в utf сделано
2k.sq!
Новоприбывший
Сообщения: 5
Зарегистрирован: 04 май 2009, 12:55
Репутация: 0

Re: OpenLayers + MapServer: GML response

Сообщение 2k.sq! »

Попробовал воспользоваться вышеописанным способом, но все таки не получилось
1. В map файле убрал кодировку (стояла "wfs_encoding" "windows-1251")
2. На странице стоит такая же кодировка кодировка charset="windows-1251"
3. Передача параметра ... вот тут у меня вопрос, как?

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

&encoding=windows-1251
Так?

PS: В TAB файлах MapInfo стоит кодировка:
!charset WindowsCyrillic
Но её менять нельзя!
Ответить

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

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

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