Esempio n. 1
0
        /// <summary>
        /// Samples track point heights and adjusts the track when it goes below terrain height.
        /// </summary>
        /// <param name="track">track to adjust point heights</param>
        /// <returns>task to wait on</returns>
        private static async Task AdjustTrackHeightsAsync(Track track)
        {
            var cts = new CancellationTokenSource();

            waitingDialog = new WaitingPopupPage("Sampling track point heights...", cts);
            await App.RunOnUiThreadAsync(async() => await waitingDialog.ShowAsync());

            await App.InitializedTask;

            try
            {
                var trackPointHeights =
                    await Task.Run(
                        async() => await App.MapView.SampleTrackHeights(track),
                        cts.Token);

                if (cts.IsCancellationRequested)
                {
                    return;
                }

                if (trackPointHeights != null)
                {
                    track.GroundHeightProfile = trackPointHeights.ToList();
                    track.AdjustTrackPointsByGroundProfile(trackPointHeights);
                }
            }
            finally
            {
                await waitingDialog.HideAsync();

                waitingDialog = null;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Closes waiting popup page when on stack (actually removes any popup page).
        /// </summary>
        /// <returns>task to wait on</returns>
        private static async Task CloseWaitingPopupPageAsync()
        {
            try
            {
                if (waitingDialog != null)
                {
                    await waitingDialog.HideAsync();

                    waitingDialog = null;
                }
            }
            catch (Exception)
            {
                // ignore when there's no popup page on stack
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Samples track point heights and adjust track
        /// </summary>
        /// <param name="track">track to sample point heights</param>
        /// <returns>task to wait on</returns>
        private static async Task SampleTrackHeightsAsync(Track track)
        {
            waitingDialog = new WaitingPopupPage("Sampling track point heights...");
            App.RunOnUiThread(async() => await waitingDialog.ShowAsync());

            try
            {
                await App.SampleTrackHeightsAsync(track, 0.0);
            }
            finally
            {
                await waitingDialog.HideAsync();

                waitingDialog = null;
            }
        }