Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
-
REDMAX
- Интересующийся
- Сообщения: 31
- Зарегистрирован: 21 окт 2014, 16:21
- Репутация: 0
Сообщение
REDMAX » 11 май 2015, 19:25
Здравствуйте, назрел следующий вопрос: можно ли в следующем коде реализовать вывод либо группы слоев, либо несколько слоев одновременно?
Код: Выделить всё
var changaeble = new OpenLayers.Layer.Vector(
"Редактируемый слой",
{
strategies: [new OpenLayers.Strategy.Fixed(),
new OpenLayers.Strategy.Save()
],
protocol: new OpenLayers.Protocol.WFS({
version: "1.1.0",
url: "http://localhost:8080/geoserver/wfs",
featureType: "bash_aminity",
featureNS: "bash",
srsName: "EPSG:4326"
})
});
в конечно итоге хочется иметь возможность редактировать одновременно несколько слоев или хотя бы выводить их атрибуты, не создавая больше векторных слоев
-
geka83
- Участник
- Сообщения: 78
- Зарегистрирован: 03 май 2014, 21:02
- Репутация: 5
Сообщение
geka83 » 12 май 2015, 17:00
Обрисуйте задачу более конкретно!! Но в принципе если вы работаете по wfs-t то каждый слой будет загружаться отдельно, например point, line! Далее вы для каждого из них создаете свой контрол редактирования:
Kpoint = new OpenLayers.Control.ModifyFeature( point, { standalone: true});
Kline = new OpenLayers.Control.ModifyFeature(line, { standalone: true});
Создаете общий контрол для выбора обекта
Kselect = new OpenLayers.Control.SelectFeature( [point, line], { hover: true});
И напишите обработчики событий для активации необходимых контролов при выборе того или иного объекта!!
Последний раз редактировалось
geka83 12 май 2015, 19:12, всего редактировалось 1 раз.
-
geka83
- Участник
- Сообщения: 78
- Зарегистрирован: 03 май 2014, 21:02
- Репутация: 5
Сообщение
geka83 » 12 май 2015, 17:00
Обрисуйте задачу более конкретно!! Но в принципе если вы работаете по wfs-t то каждый слой будет загружаться отдельно, например point, line! Далее вы для каждого из них создаете свой контрол редактирования:
Kpoint = new OpenLayers.Control.ModifyFeature( point, { standalone: true});
Kline = new OpenLayers.Control.ModifyFeature(line, { standalone: true});
Создаете общий контрол для выбора обекта
Kselect = new OpenLayers.Control.SelectFeature( [point, line], { hover: true});
И напишите обработчики событий для активации необходимых контролов при выборе того или иного объекта!!
Последний раз редактировалось
geka83 12 май 2015, 19:12, всего редактировалось 1 раз.
-
geka83
- Участник
- Сообщения: 78
- Зарегистрирован: 03 май 2014, 21:02
- Репутация: 5
Сообщение
geka83 » 12 май 2015, 17:04
Обрисуйте задачу более конкретно!! Но в принципе если вы работаете по wfs-t то каждый слой будет загружаться отдельно, например point, line! Далее вы для каждого из них создаете свой контрол редактирования:
Kpoint = new OpenLayers.Control.ModifyFeature( point, { standalone: true});
Kline = new OpenLayers.Control.ModifyFeature(line, { standalone: true});
Создаете общий контрол для выбора обекта на слоях!!!
Kselect = new OpenLayers.Control.SelectFeature( [point, line], { hover: true});
И пишите обработчики событий для активации необходимых контролов при выборе того или иного объекта!!
point.events.on({
'featureselected': onFeatureSelect_point,
'featureunselected': onFeatureUnselect_tpoint,
});
function onFeatureSelect_point(evt) {
feature = evt.feature;
Kpoint.selectFeature(feature);
}
function onFeatureUnselect_point(evt) {
Kpoint.unselectFeature(Kpoint.feature);
}
Анологично делаете для line и любых других векторных слоев!! Я лично такую задачу решал именно так!!
Сейчас этот форум просматривают: Bing [Bot] и 1 гость