Hi,My application has two maps: the main page map and the print page childwindow mapso far, i copy the map layers one to the other statically, like this:
ArcGISDynamicMapServiceLayer servicoDestino;
ArcGISDynamicMapServiceLayer servicoOrigem;
GraphicsLayer graficosOrigem = Mapa.Layers["MyGraphicsLayer"] as GraphicsLayer;
GraphicsLayer graficosDestino = new GraphicsLayer();
//Pega os Layers Visíveis
//Layers Mapa Base - 22/069/2010
servicoDestino = new ArcGISDynamicMapServiceLayer();
List<int> ListaLayersVisiveis = new List<int>();
servicoOrigem = Mapa.Layers["Mapa Base"] as ArcGISDynamicMapServiceLayer;
servicoDestino.Url = servicoOrigem.Url;
if (servicoOrigem.Visible == true)
{
if (servicoOrigem.VisibleLayers != null)
{
ListaLayersVisiveis = servicoOrigem.VisibleLayers.ToList();
servicoDestino.VisibleLayers = ListaLayersVisiveis.ToArray();
}
servicoDestino.Opacity = servicoOrigem.Opacity;
servicoDestino.ImageFormat = ArcGISDynamicMapServiceLayer.RestImageFormat.PNG32;
imprimir.MapaImpressao.Layers.Add(servicoDestino);
}
//Layers Ortofoto 2006
servicoDestino = new ArcGISDynamicMapServiceLayer();
ListaLayersVisiveis = new List<int>();
servicoOrigem = Mapa.Layers["Ortofoto"] as ArcGISDynamicMapServiceLayer;
servicoDestino.Url = servicoOrigem.Url;
if (servicoOrigem.Visible == true)
{
if (servicoOrigem.VisibleLayers != null)
{
ListaLayersVisiveis = servicoOrigem.VisibleLayers.ToList();
servicoDestino.VisibleLayers = ListaLayersVisiveis.ToArray();
}
servicoDestino.Opacity = servicoOrigem.Opacity;
servicoDestino.ImageFormat = ArcGISDynamicMapServiceLayer.RestImageFormat.PNG32;
imprimir.MapaImpressao.Layers.Add(servicoDestino);
}
//Logradouros
servicoDestino = new ArcGISDynamicMapServiceLayer();
ListaLayersVisiveis = new List<int>();
servicoOrigem = Mapa.Layers["Logradouros"] as ArcGISDynamicMapServiceLayer;
servicoDestino.Url = servicoOrigem.Url;
if (servicoOrigem.Visible == true)
{
if (servicoOrigem.VisibleLayers != null)
{
ListaLayersVisiveis = servicoOrigem.VisibleLayers.ToList();
servicoDestino.VisibleLayers = ListaLayersVisiveis.ToArray();
}
servicoDestino.Opacity = servicoOrigem.Opacity;
servicoDestino.ImageFormat = ArcGISDynamicMapServiceLayer.RestImageFormat.PNG32;
imprimir.MapaImpressao.Layers.Add(servicoDestino);
}
//Bairros
servicoDestino = new ArcGISDynamicMapServiceLayer();
ListaLayersVisiveis = new List<int>();
servicoOrigem = Mapa.Layers["Bairros"] as ArcGISDynamicMapServiceLayer;
servicoDestino.Url = servicoOrigem.Url;
if (servicoOrigem.Visible == true)
{
if (servicoOrigem.VisibleLayers != null)
{
ListaLayersVisiveis = servicoOrigem.VisibleLayers.ToList();
servicoDestino.VisibleLayers = ListaLayersVisiveis.ToArray();
}
servicoDestino.Opacity = servicoOrigem.Opacity;
servicoDestino.ImageFormat = ArcGISDynamicMapServiceLayer.RestImageFormat.PNG32;
imprimir.MapaImpressao.Layers.Add(servicoDestino);
}
imprimir.MapaImpressao.ZoomTo(this._extentHistory[this._currentExtentIndex]);
imprimir.MapaImpressao.ZoomToResolution(this.Mapa.Resolution);
imprimir.MapaImpressao.PanTo(this.Mapa.Extent.GetCenter());
//Pega os Graficos do layerDeDesenhos
foreach (Graphic i in graficosOrigem)
{
Graphic g = new Graphic();
g.Geometry = i.Geometry;
g.Symbol = i.Symbol;
graficosDestino.Graphics.Add(g);
}
imprimir.MapaImpressao.Layers.Add(graficosDestino);
//Layer de Resultados de ZoomPorCoordenadas
graficosOrigem = Mapa.Layers["layerGraficoBuscaCoordenadas"] as GraphicsLayer;
graficosDestino = new GraphicsLayer();
foreach (Graphic i in graficosOrigem)
{
Graphic g = new Graphic();
g.Geometry = i.Geometry;
g.Symbol = i.Symbol;
graficosDestino.Graphics.Add(g);
}
imprimir.MapaImpressao.Layers.Add(graficosDestino);
//Layer de Graficos de Resultados de Logradouros
graficosOrigem = Mapa.Layers["layerGraficosResultadosLogradouros"] as GraphicsLayer;
graficosDestino = new GraphicsLayer();
foreach (Graphic i in graficosOrigem)
{
Graphic g = new Graphic();
g.Geometry = i.Geometry;
g.Symbol = i.Symbol;
graficosDestino.Graphics.Add(g);
}
imprimir.MapaImpressao.Layers.Add(graficosDestino);
then I tried to make this generalization:
ESRI.ArcGIS.Client.GraphicsLayer servicoGrafico = new ESRI.ArcGIS.Client.GraphicsLayer();
ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer servicoDinamico = new ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer();
List<int> ListaLayersVisiveis = new List<int>();
for (int i = 0; i < Mapa.Layers.Count; i++)
{
ListaLayersVisiveis = new List<int>();
if (Mapa.Layers is ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer)
{
servicoDinamico = Mapa.Layers as ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer;
ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer servicoDestino = new ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer();
servicoDestino.Url = servicoDinamico.Url;
if (servicoDinamico.Visible == true)
{
ListaLayersVisiveis = servicoDinamico.VisibleLayers.ToList();
servicoDestino.VisibleLayers = ListaLayersVisiveis.ToArray();
servicoDestino.ImageFormat = servicoDinamico.ImageFormat;
}
imprimir.MapaImpressao.Layers.Add(servicoDestino);
}
if (Mapa.Layers is ESRI.ArcGIS.Client.GraphicsLayer)
{
servicoGrafico = Mapa.Layers as ESRI.ArcGIS.Client.GraphicsLayer;
ESRI.ArcGIS.Client.GraphicsLayer servicoDestino = new ESRI.ArcGIS.Client.GraphicsLayer();
foreach (Graphic desenho in servicoGrafico)
{
Graphic aux = new Graphic();
aux.Geometry = desenho.Geometry;
aux.Symbol = desenho.Symbol;
servicoDestino.Graphics.Add(aux);
}
imprimir.MapaImpressao.Layers.Add(servicoDestino);
}
}
What am i missing??