John. I’m a customer and I want to thank you for carrying the weight of this problematic issue. Your documentation and description has been excellent. I also look forward to the resolution.
In our app, we have 10 to 20 overlays. Like yours, the “bottom” five to 10 overlays are “static”. The data never changes. We will often change the rendering style on something like the 15th overlay. When we do that, we do an explicit Refresh on just that overlay, thinking that we will not need to render the entire map again. But in most cases, we find that the lower layers are getting rendered again.
We are NOT using any tile caches. When we started building the app, they were not stable, and we haven’t had time to stick our toe back into that water. We use custom layers for almost all of our layers, though. So I have an implementation of DrawCore in those layers. I’ve instrumented that function to write diagnostics of the rendering time, layer name, etc and that displays in the output window. So, like you, I know that we are rendering overlays that are on the “bottom” of the map as a function of refreshing an overlay that is on the top of the map, w/o changing the map extent.
I have not seen what the level of detail is on your “static” layer. But in cases where we are rendering data from the WorldMapKit… road features, etc, it is not uncommon for the renderer to take the amount of time you are describing… without actually going back to the underlying data source for a data refresh.
My hope was that when refreshing a single overlay, MapSuite would be capable of using overlay-specific cached images to rebuild the “static” layers lying under the dynamic layer. Seems that this should be possible w/o using the tile caching solution. If it is the intent that this should happen, then I hope this thread helps track down the reason it is not behaving this way.
Thanks again for your efforts here.