En ArcObjects para ArcGIS 10.1, estamos intentando renderizar tiles de mapa pre-generados como una capa de mapa base (grupo). Los propios tiles siguen el esquema de teselación auxiliar esférico típico de Web Mercator.
Bajo ArcMap 10.1, los tiles no se renderizan adecuadamente:
y la interfaz de usuario de ArcMap 10.1 muestra el siguiente error de dibujo: "Propiedades de longitud de onda de banda de ráster faltantes"
[Resultado esperado] en ArcMap 10.0:
Aunque esto está relacionado con ¿Se pueden consumir tiles de mapas personalizados a través de ArcObjects dentro de mi complemento de escritorio de ArcGIS 10?, que era una pregunta de enfoque holístico. Aquí estoy preguntando específicamente cómo renderizar correctamente los tiles en ArcMap 10.1.
Logramos agregar/renderizar la capa dentro de 10.0 mediante el siguiente código:
_tileLayer = new MyCustomTileLayer(); // implementa ILayer entre otros..
_coverageBasemapLayer = new BasemapLayerClass();
_coverageGroupLayer = _coverageBasemapLayer as IGroupLayer;
// agregar la capa al mapa
IMap map = ArcMap.Document.FocusMap;
map.AddLayer((ILayer)_coverageBasemapLayer);
...
// conectar el evento AfterDraw
IActiveViewEvents_Event avEvent = ArcMap.Document.FocusMap as IActiveViewEvents_Event;
avEvent.AfterDraw += new IActiveViewEvents_AfterDrawEventHandler(avEvent_AfterDraw);
private void avEvent_AfterDraw(IDisplay Display, esriViewDrawPhase phase) {
// forzar el re-dibujo
_tileLayer.Draw(esriDrawPhase.esriDPGeography, Display, null);
}
...
// efectivamente, dentro de _tileLayer.Draw() aquí...
IRasterLayer rl = new RasterLayerClass();
// 'file' es la ruta completa al PNG del tile de mapa en el sistema de archivos local, descargado
// y/o en caché
rl.CreateFromFilePath(file);
_coverageGroupLayer.Add(rl);
Presumiblemente muchas cosas han cambiado dentro del motor de renderizado para 10.1.
¿Podría alguien proporcionar información sobre los cambios en ArcObjects requeridos?
Específicamente, ¿cómo podemos lograr esto [correctamente] dentro de ArcObjects bajo 10.1?