I would like to catch the point in time when the map is completely drawn after a change (e.g. after a Zoom In operation). Im MapSuite 9 the OverlaysDrawn event was the right way to do this.
In Version 12 is this event fired when the map is clearly NOT yet done drawing.(see below where the map is still blurred after zooming out)
Thanks Peter,
As talked with the development team. In the mapsuite 12 we using the multiple threading to draw the overlay(s). So it difficult to tell when all overlays drawn. Right now once the first overly drawn we will trigger the event. The workaround for this one you could hook up the Drawn event to the most time consume overlay(s). Some thing like this
LayerOverlay lo = Get The most time consume overly;
lo.Drawn += Lo_Drawn;
private void Lo_Drawn(object sender, DrawnOverlayEventArgs e)
{
// Do what you want to after the most time consume Overlay(s) drawn;
}
your suggested workaround is unfortunately not really reliable.
Did you possibly change anything the last month regarding this behaviour?
I mean it should not be that difficult to let the separate threads join again after they are drawn in the core of the mapping engine.
Frank is working on other projects now, and I take over this task. I agree with you that it can be supported by adding some flags for all overlays inherited from the base class “Overlay”, because the base class Overlay is only for an abstract class for APIs and common implementation, for different sub-classes, they have different drawing methods. Just as you mentioned, not difficult, but needs changing all sub-classes and do the tests, I will update this thread to “In progress” and look into the changes next few days.
Sorry for the inconvenience. Any progress will be updated here.
Can you remove the workaround from Frank and update to the latest version (V12.3.13) when having a chance? We made some improvements on the events and hopefully if fixes your issue.