Example #1
0
        public void MarkerAnimation(double latitude, double longitude, Action callback)
        {
            //gán lại vòng quay
            double mMoveIndex    = 0;
            double MAX_MOVE_STEP = 40;
            var    startPosition = this.Position;

            var    finalPosition = new Position(latitude, longitude);
            double elapsed       = 0;
            double t;
            double v;

            Device.StartTimer(TimeSpan.FromMilliseconds(100), () =>
            {
                // Calculate progress using interpolator
                elapsed = elapsed + 100;
                t       = elapsed / 4000;
                v       = GeoHelper.GetInterpolation(t);

                var postionnew = GeoHelper.Interpolate(v,
                                                       new Position(startPosition.Latitude, startPosition.Longitude),
                                                       new Position(latitude, longitude));

                mMoveIndex    = mMoveIndex + 1;
                this.Position = new Position(postionnew.Latitude, postionnew.Longitude);
                if (mMoveIndex > MAX_MOVE_STEP)
                {
                    callback();
                    return(false);
                }

                return(true);
            });
        }