/// <summary>
        /// Rafraichit les différentes variables affichés sur la map
        /// </summary>
        public void RefreshMarkers()
        {
            /*if (ZonePolygon == null || ZonePolygon.Points.Count == 0)
             * {
             *  CountOfPointsTextView.Text = "0";
             *  SurfaceTextView.Text = string.Format("0 {0}", Resources.GetString(Resource.String.unit_squarre));
             *  //BottomLayout.Visibility = ViewStates.Gone;
             *  ExplanationTextView.Visibility = ViewStates.Visible;
             *  return;
             * }
             * BottomLayout.Visibility = ViewStates.Visible;
             * ExplanationTextView.Visibility = ViewStates.Gone;
             *
             * if (ZonePolygon.Points.Count == 1) CountOfPointsTextView.Text = "1";
             * else CountOfPointsTextView.Text = (ZonePolygon.Points.Count - 1).ToString();
             */
            var surface = AreaHelper.CalculateAreaOfGPSPolygonOnEarthInSquareMeters(ZonePolygon.Points.ToList());

            SurfaceTextView.Text = AreaHelper.SerializeArea(surface);
        }
        /// <summary>
        ///
        /// </summary>
        private void InitializeSurfaceStatTextView()
        {
            if (ZonePolygon == null)
            {
                return;
            }
            if (SurfaceStatTextView == null)
            {
                return;
            }

            var surface         = AreaHelper.CalculateAreaOfGPSPolygonOnEarthInSquareMeters(ZonePolygon.Points.ToList());
            var surfaceStat     = AreaHelper.SerializeArea(surface);
            var textSurfaceStat = string.Format(Resources.GetString(Resource.String.modeZone_surfaceStr), surfaceStat);

            var resultTuple = SeekiosApp.Helper.StringHelper.GetStartAndEndIndexOfNumberInString(textSurfaceStat);
            var formattedTextSurfaceStat = new SpannableString(textSurfaceStat);

            formattedTextSurfaceStat.SetSpan(new ForegroundColorSpan(Color.ParseColor(App.MainColor)), resultTuple.Item1, resultTuple.Item2, 0);
            SurfaceStatTextView.SetText(formattedTextSurfaceStat, TextView.BufferType.Spannable);
        }
        public override Android.Views.View GetView(int position, Android.Views.View convertView, ViewGroup parent)
        {
            // item en cours de traitement
            var item = App.CurrentUserEnvironment.LsFavoriteArea[position];

            // pas de vue à utiliser ? création d'une vue
            FavoriteAreaViewHolder holder = null;

            if (!_alreadyCreatedViews.ContainsKey(item.IdfavoriteArea))
            {
                _alreadyCreatedViews.Add(item.IdfavoriteArea, null);
            }
            Android.Views.View view = _alreadyCreatedViews[item.IdfavoriteArea];
            // Si on a récupéré la vue on récupère le holder dans son tag
            if (view != null)
            {
                holder = view.Tag as FavoriteAreaViewHolder;
            }
            // Si le holder n'est pas défini, on le fait et on crée la vue
            if (holder == null)
            {
                holder   = new FavoriteAreaViewHolder();
                view     = _context.LayoutInflater.Inflate(Resource.Layout.ZoneFavoriteRow, null);
                view.Tag = holder;
                // récupération des objets de la vue
                holder.AreaName     = view.FindViewById <TextView>(Resource.Id.favoriteArea_areaName);
                holder.PointsCount  = view.FindViewById <TextView>(Resource.Id.favoriteArea_pointsCount);
                holder.AreaGeodesic = view.FindViewById <TextView>(Resource.Id.favoriteArea_area);
                holder.DeleteAlerte = view.FindViewById <XamSvg.SvgImageView>(Resource.Id.favoriteArea_delete);
                holder.RootGrid     = view.FindViewById <GridLayout>(Resource.Id.favoriteArea_rootGrid);

                // boutton supprimer
                holder.DeleteAlerte.Click += new EventHandler(async(o, e) =>
                {
                    await App.Locator.ModeZone.DeleteFavoriteArea(item);
                    if (_refresh != null)
                    {
                        _refresh.Invoke();
                    }
                });

                // clique sur l'item (root)
                holder.RootGrid.Click += new EventHandler((o, e) =>
                {
                    App.Locator.ModeZone.SelectedFavoriteArea = item;
                    if (_dismiss != null)
                    {
                        // quitte la popup (dismiss)
                        _dismiss.Invoke();
                    }
                });
                _alreadyCreatedViews[item.IdfavoriteArea] = view;
            }

            // initialisation des variables de la vue
            holder.AreaName.Text     = item.AreaName;
            holder.PointsCount.Text  = string.Format("{0} points", item.PointsCount);
            holder.AreaGeodesic.Text = AreaHelper.SerializeArea(item.AreaGeodesic);

            return(view);
        }