ThinkGeo.com    |     Documentation    |     Premium Support

TrackMode not starting until map extent change

Hi,

I use this basic code to draw shapes. The only difference between this and your HowDoI samples is that I use an override on the TrackInteractiveOverlay to define a start and end vertices for a measuring tool.

The problem I am seeing is that once this code is run, if I click the map, the drawing doesn’t begin. Only when I pan or zoom on the map does the TrackMode actual start. Any ideas what is missing from the track overlay to get it to initialize?

CustomTrackInteractiveOverlay track = new CustomTrackInteractiveOverlay();

        WinMap.TrackOverlay = track;
        track.TrackShapeLayer.ZoomLevelSet = GeoHelper.SetZoomLevels(WinMap.ZoomLevelSet,
            track.TrackShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle);
        track.TrackShapeLayer.FeatureSource.ProjectionConverter = new GdalProjectionConverter(FromCRS.Proj4, FromCRS.Proj4);

        if (WinMap.EditOverlay.GetType() == typeof(SnapOverlay))
        {
            track.TrackStarting += Track_TrackStarting;
            track.TrackEnding += Track_TrackEnding;
            track.VertexAdding += Track_VertexAdding;
        }

        // There is always track ended
        track.TrackEnded += Track_TrackEnded;

        switch (shapeType)
        {
            case WellKnownType.GeometryCollection:
                break;
            case WellKnownType.Invalid:
                break;
            case WellKnownType.Line:
                WinMap.TrackOverlay.TrackMode = TrackMode.StraightLine;
                track.TrackShapeLayer.ZoomLevelSet = GeoHelper.SetZoomLevels(WinMap.ZoomLevelSet,
                    GeoHelper.DefaultLineStyle);
                break;
            case WellKnownType.Multiline:
                WinMap.TrackOverlay.TrackMode = TrackMode.Line;
                track.TrackShapeLayer.ZoomLevelSet = GeoHelper.SetZoomLevels(WinMap.ZoomLevelSet,
                    GeoHelper.DefaultLineStyle);
                break;
            case WellKnownType.Multipoint:
                WinMap.TrackOverlay.TrackMode = TrackMode.Point;
                track.TrackShapeLayer.ZoomLevelSet = GeoHelper.SetZoomLevels(WinMap.ZoomLevelSet,
                    GeoHelper.DefaultPointStyle);
                break;
            case WellKnownType.Multipolygon:
                WinMap.TrackOverlay.TrackMode = TrackMode.Polygon;
                track.TrackShapeLayer.ZoomLevelSet = GeoHelper.SetZoomLevels(WinMap.ZoomLevelSet,
                    GeoHelper.DefaultAreaStyle);
                break;
            case WellKnownType.Point:
                WinMap.TrackOverlay.TrackMode = TrackMode.Point;
                // Points don't support track starting or vertex adding
                track.TrackStarting -= Track_TrackStarting;
                track.VertexAdding -= Track_VertexAdding;
                track.TrackShapeLayer.ZoomLevelSet = GeoHelper.SetZoomLevels(WinMap.ZoomLevelSet,
                    GeoHelper.DefaultPointStyle);
                break;
            case WellKnownType.Polygon:
                WinMap.TrackOverlay.TrackMode = TrackMode.Polygon;
                track.TrackShapeLayer.ZoomLevelSet = GeoHelper.SetZoomLevels(WinMap.ZoomLevelSet,
                    GeoHelper.DefaultAreaStyle);
                break;
            default:
                break;
        }

        WinMap.TrackOverlay.RefreshAsync();