/// <summary>
        /// Initializes a new instance of the <see cref="T:Locator.Portable.ViewModels.MapPageViewModel"/> class.
        /// </summary>
        /// <param name="navigation">Navigation.</param>
        /// <param name="geolocator">Geolocator.</param>
        /// <param name="commandFactory">Command factory.</param>
        /// <param name="geocodingWebServiceController">Geocoding repository.</param>
        public MapPageViewModel(INavigationService navigation, IGeolocator geolocator, Func <Action, ICommand> commandFactory,
                                IGeocodingWebServiceController geocodingWebServiceController) : base(navigation)
        {
            _geolocator = geolocator;
            _geocodingWebServiceController = geocodingWebServiceController;

            _nearestAddressCommand = commandFactory(() => FindNearestSite());
            _geolocationCommand    = commandFactory(() =>
            {
                if (_geolocationUpdating)
                {
                    geolocator.Stop();
                }
                else
                {
                    geolocator.Start();
                }

                GeolocationButtonTitle = _geolocationUpdating ? "Start" : "Stop";
                _geolocationUpdating   = !_geolocationUpdating;
            });

            _positions = new List <IPosition> ();

            LocationUpdates = new Subject <IPosition> ();
            ClosestUpdates  = new Subject <IPosition> ();
        }