From what I can see, the TimeDynamicImagery only calls requestImage inside
addToCache(). This is called when the WebMapTileServiceImageryProvider.requestImage tries to access an image that is not in cache, or when preloading the image for an upcoming time interval.
After looking at the stack trace, the actual source of the imageryProvider.requestImage call (for any provider), and the consumer of the returned image, seems to always be the scene render function. Basically it looks like:
Scene.render() -> ... -> TileImagery.processStateMachine() -> ImageryLayer._requestImagery() -> anyProvider.requestImage()
The only way we can go from TileImagery.processStateMachine() to ImageryLayer._requestImagery() is if the tile has ImageryState.UNLOADED. So I think my problem is that I need to set the tile states to UNLOADED. I'm not sure how to do that if all I have is a handle to the Imagery Provider and the Imagery Layer. How does that happen for WebMapTileServiceImageryProvider?
For the WMTS example, it seems to happen when the time is being advanced and also when a user manually adjusts the time interval. In the case of a WMS provided imagery layer, it only happens when a new zoom level of a given tile is needed.
Thanks.