Добрый день!!!
Каким образом можно управлять видимостью слоя в процессе работы приложения?
Есть вот такой код
private void PrepareLayers()
{
_serverContext = (ESRI.ArcGIS.Server.IServerContext)Session["serverContext"];
_mapServer = (ESRI.ArcGIS.Carto.IMapServer)_serverContext.ServerObject;
_mapServerObj = (ESRI.ArcGIS.Carto.IMapServerObjects)_serverContext.ServerObject;
featLayer = (ESRI.ArcGIS.Carto.IFeatureLayer)_serverContext.CreateObject("esriCarto.FeatureLayer");
featLayer = (ESRI.ArcGIS.Carto.IFeatureLayer)_mapServerObj.get_Layer(_mapServer.DefaultMapName, Constants.EmptyLayerNumber);
geoFeatLayer = (ESRI.ArcGIS.Carto.IGeoFeatureLayer)_serverContext.CreateObject("esriCarto.FeatureLayer");
geoFeatLayer = (ESRI.ArcGIS.Carto.IGeoFeatureLayer)featLayer;
foFeatLayer = (ESRI.ArcGIS.Carto.IFeatureLayer)_serverContext.CreateObject("esriCarto.FeatureLayer");
foFeatLayer = (ESRI.ArcGIS.Carto.IFeatureLayer)_mapServerObj.get_Layer(_mapServer.DefaultMapName, Constants.FOLayerNumber);
foGeoFeatLayer = (ESRI.ArcGIS.Carto.IGeoFeatureLayer)_serverContext.CreateObject("esriCarto.FeatureLayer");
foGeoFeatLayer = (ESRI.ArcGIS.Carto.IGeoFeatureLayer)foFeatLayer;
if (!IsPostBack)
{
foFeatLayer.Visible = false;
foGeoFeatLayer.Visible = false;
featLayer.Visible = true;
geoFeatLayer.Visible = true;
_mapServerObj.RefreshServerObjects();
RussiaMap.Refresh();
}
}
И ещё обработчик клика:
protected void lbtnSetFO_Click(object sender, EventArgs e)
{
PrepareLayers();
featLayer.Visible = false;
geoFeatLayer.Visible = false;
foFeatLayer.Visible = true;
foGeoFeatLayer.Visible = true;
_mapServerObj.RefreshServerObjects();
RussiaMap.Refresh();
}
То есть я управляю отображением слоёв с помощью св-ва Visible. Проблема в том что слой после клика по кнопке отображается только после IISReseta. Без него - никакой реакции - какой слой был включеен при загрузке, включённым и остаётся, зхотя после клика должен включиться другой.
Как можно этого избежать?
Заранее спасибо!!!!