Страница 1 из 1
GetFeatureInfo работа с несколькими слоями
Добавлено: 13 авг 2012, 13:31
SantoSB
При выполнении запроса GetFeatureInfo (OpenLayers)
добавляю один контрол
Код: Выделить всё
WMSGetFeatureInfo({
title: 'Identify features by clicking',
layers: [layer1, layer2],
infoFormat: 'application/vnd.ogc.gml',
});
function showInfo(evt) {
var ResponseText = evt.features[0].attributes.LayerInfo; //если два слоя здесь возвращется null
var ResponseText1 = evt.features[0].attributes.LayerInfo1;
}
info.events.register('getfeatureinfo', this, showInfo);
Когда отображен на карте один слой информация об объекте выводится правильно, когда показывается 2 слоя показывается информация только по последнему слою.
Подскажите как правильно обратиться к информации об объектах в разных слоях?
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 14 авг 2012, 04:00
Denis Rykov
А у обоих слоёв есть одинаковый атрибут LayerInfo?
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 14 авг 2012, 08:46
SantoSB
У слоев разные атрибуты LayerInfo у одного, LayerInfo1 у другого!
если вызывать evt.features.length; то возвращает 2.
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 14 авг 2012, 11:25
Denis Rykov
Если кликнуть в место пересечения 2-х слоев, то в ответ придет информация как минимум о 2-х фичах (как раз эти самые evt.features). Вот так, например, можно вывести в консоль информацию о всех фичах, которые вернул сервер:
Код: Выделить всё
function showInfo(evt) {
for (var i=0, len=evt.features.length; i < len; i+=1) {
var feature = evt.features;
if (feature.type == 'layer1') {
console.log(feature.attributes.layerInfo1);
} else if (feature.type == 'layer2') {
console.log(feature.attributes.layerInfo2);
}
}
}
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 14 авг 2012, 12:05
SantoSB
спасибо! то что нужно
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 20 авг 2012, 15:08
SantoSB
как обратиться к атрибуту растрового слоя?
в map файле атрибуты растрового слоя описываются через "pixel"
Код: Выделить всё
function showInfo(evt) {
for (var i=0, len=evt.features.length; i < len; i+=1) {
var feature = evt.features[i];
if (feature.type == 'raster_layer') {
console.log(feature.attributes.???????);
}
}
}
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 21 авг 2012, 11:27
Denis Rykov
Интересно посмотреть ответ сервера на запроc GetFeatureInfo для WMS-слоя, созданного на базе растра. Привидите сюда XML-ответ или дайте ссылку на пример, прежде не приходилось с подобным сталкиваться, но судя по всему необходимая информация должна содержаться в ответе.
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 21 авг 2012, 12:38
SantoSB
Ответ XML но в нем ничего нет, может я в мап файле что-то не так описываю?
Код: Выделить всё
<?xml version="1.0" encoding="ISO-8859-1"?>
<msGMLOutput
xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</msGMLOutput>
вот кусок мап файла
Код: Выделить всё
NAME sk_dem
DATA "/home/user/map/raster/sk_DEM_Resample_ProjectRaste.tif"
STATUS ON
TYPE RASTER
PROCESSING "SCALE=0,2000"
PROCESSING "SCALE_BUCKETS=2000"
DUMP true
HEADER '/home/user/templates/header_adm_reg.html'
TEMPLATE '/home/user/templates/template_adm_reg.html'
FOOTER '/home/user/templates/footer_adm_reg.html'
EXTENT 40.824 43.602 45.692 46.312
METADATA
"wms_title" "Рельеф"
"wms_abstract" "Рельеф"
"wms_srs" "ESPG:4326 EPSG:900913"
"gml_include_items" "all"
"wms_feature_info_mime_type" "text/plain"
END
PROJECTION
"init=epsg:4326"
END
Так лучше?
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 22 авг 2012, 06:45
Denis Rykov
Ваш WMS доступен извне? Нужный функционал был реализован уже довольно
давно.
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 22 авг 2012, 08:14
SantoSB
Временно недоступен
Re: GetFeatureInfo работа с несколькими слоями
Добавлено: 28 авг 2012, 10:31
SantoSB
проблема осталась! возвращается пустой ответ только служебная информация.