public override void UpdateMapRegion(MapRegion region)
        {
            base.UpdateMapRegion(region);
            Region = region;

            if (region == null)
            {
                return;
            }

            if (!IsVisible)
            {
                return;
            }


            Center = region.GetCenter();

            if (lastCullCenter.HasValue && CullUpdateThreshold.Meters > 0 &&
                MapLocationSystem.CalculateDistance(Center, lastCullCenter.Value) < CullUpdateThreshold)
            {
                return;
            }

            if (MaxRunningTasks.HasValue && activeTasksCount >= MaxRunningTasks)
            {
                Push();
                return;
            }

            if (lastQueryCenter.HasValue && QueryThreshold.Meters > 0 &&
                MapLocationSystem.CalculateDistance(Center, lastQueryCenter.Value) < QueryThreshold)
            {
                Push();
                return;
            }

            lastQueryCenter = Center;
            Task.Run(DoAsync);
        }