private void LocationCoordinateAndDescriptionDelete(LocationCoordinate locationCoordinateInDatabase)
        {
            lock (locationCoordinateAndDescriptionCacheLock)
            {
                HashSet <LocationCoordinate> locationCoordinates = new HashSet <LocationCoordinate>();

                #region Fina all search locations points to this database location
                foreach (KeyValuePair <LocationCoordinate, LocationCoordinate> keyValuePairs in locationCoordinateConvertFromSearchToDatabaseCache)
                {
                    if (keyValuePairs.Value == locationCoordinateInDatabase)
                    {
                        locationCoordinates.Add(keyValuePairs.Key);
                    }
                }
                #endregion

                #region Remove all found <Location Search> that points to <Location in Database>
                foreach (LocationCoordinate locationCoordinate in locationCoordinates)
                {
                    locationCoordinateConvertFromSearchToDatabaseCache.Remove(locationCoordinate);
                }
                #endregion

                if (locationCoordinateAndDescriptionInDatbaseCache.ContainsKey(locationCoordinateInDatabase))
                {
                    locationCoordinateAndDescriptionInDatbaseCache.Remove(locationCoordinateInDatabase);
                }
            }
        }
        public void WriteLocationName(LocationCoordinate locationCoordinateSearch, LocationCoordinateAndDescription locationInDatabaseCoordinateAndDescription)
        {
            Mono.Data.Sqlite.SqliteTransaction sqlTransaction;
            do
            {
                sqlTransaction = dbTools.TransactionBegin();

                #region INSERT INTO LocationName
                string sqlCommand =
                    "INSERT INTO LocationName (Latitude, Longitude, Name, City, Province, Country) " +
                    "Values (@Latitude, @Longitude, @Name, @City, @Province, @Country)";
                using (CommonSqliteCommand commandDatabase = new CommonSqliteCommand(sqlCommand, dbTools.ConnectionDatabase, sqlTransaction))
                {
                    locationInDatabaseCoordinateAndDescription.Description.Name    = string.IsNullOrEmpty(locationInDatabaseCoordinateAndDescription.Description.Name) ? null : locationInDatabaseCoordinateAndDescription.Description.Name;
                    locationInDatabaseCoordinateAndDescription.Description.Region  = string.IsNullOrEmpty(locationInDatabaseCoordinateAndDescription.Description.Region) ? null : locationInDatabaseCoordinateAndDescription.Description.Region;
                    locationInDatabaseCoordinateAndDescription.Description.City    = string.IsNullOrEmpty(locationInDatabaseCoordinateAndDescription.Description.City) ? null : locationInDatabaseCoordinateAndDescription.Description.City;
                    locationInDatabaseCoordinateAndDescription.Description.Country = string.IsNullOrEmpty(locationInDatabaseCoordinateAndDescription.Description.Country) ? null : locationInDatabaseCoordinateAndDescription.Description.Country;

                    //commandDatabase.Prepare();
                    commandDatabase.Parameters.AddWithValue("@Latitude", locationInDatabaseCoordinateAndDescription.Coordinate.Latitude);
                    commandDatabase.Parameters.AddWithValue("@Longitude", locationInDatabaseCoordinateAndDescription.Coordinate.Longitude);
                    commandDatabase.Parameters.AddWithValue("@Name", locationInDatabaseCoordinateAndDescription.Description.Name);
                    commandDatabase.Parameters.AddWithValue("@City", locationInDatabaseCoordinateAndDescription.Description.City);
                    commandDatabase.Parameters.AddWithValue("@Province", locationInDatabaseCoordinateAndDescription.Description.Region);
                    commandDatabase.Parameters.AddWithValue("@Country", locationInDatabaseCoordinateAndDescription.Description.Country);
                    int rowAffted = commandDatabase.ExecuteNonQuery();      // Execute the query
                    LocationCoordinateAndDescriptionUpdate(locationCoordinateSearch, locationInDatabaseCoordinateAndDescription.Coordinate, locationInDatabaseCoordinateAndDescription.Description);
                }
                #endregion
            } while (!dbTools.TransactionCommit(sqlTransaction));
        }
Beispiel #3
0
        public static bool TryParse(string locationCoordinateString, out LocationCoordinate result)
        {
            //System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.CurrentCulture,
            result = null;
            if (string.IsNullOrWhiteSpace(locationCoordinateString))
            {
                return(false);
            }
            string[] latitideAndlogitude = locationCoordinateString.Split((System.Globalization.CultureInfo.CurrentCulture).TextInfo.ListSeparator[0]);
            if (latitideAndlogitude.Length == 2)
            {
                //System.Globalization.CultureInfo.CurrentCulture
                if (
                    float.TryParse(latitideAndlogitude[0], System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.CurrentCulture, out float latitudeCurrentCulture) &&
                    float.TryParse(latitideAndlogitude[1], System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.CurrentCulture, out float longitudeCurrentCulture))
                {
                    result = new LocationCoordinate(latitudeCurrentCulture, longitudeCurrentCulture);
                    return(true);
                }

                //System.Globalization.CultureInfo.InvariantCulture
                if (
                    float.TryParse(latitideAndlogitude[0], System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.InvariantCulture, out float latitudeInvariantCulture) &&
                    float.TryParse(latitideAndlogitude[1], System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.InvariantCulture, out float longitudeInvariantCulture))
                {
                    result = new LocationCoordinate(latitudeInvariantCulture, longitudeInvariantCulture);
                    return(true);
                }
            }
            return(false);
        }
 public LocationCoordinateAndDescription ReadLocationNameFromDatabaseOrCache(LocationCoordinate locationCoordinate, float locationAccuracyLatitude, float locationAccuracyLongitude)
 {
     if (locationCoordinate == null)
     {
         //DEBUG
     }
     if (LocationCoordinateAndDescriptionExsistInCache(locationCoordinate))
     {
         return(LocationCoordinateAndDescriptionReadFromCache(locationCoordinate));
     }
     return(ReadLocationName(locationCoordinate, locationAccuracyLatitude, locationAccuracyLongitude));
 }
        private LocationCoordinateAndDescription ReadLocationName(LocationCoordinate locationCoordinateSearch, float locationAccuracyLatitude, float locationAccuracyLongitude)
        {
            LocationCoordinateAndDescription locationCoordinateAndDescriptionInDatabase = null;

            Mono.Data.Sqlite.SqliteTransaction sqlTransactionSelect;
            do
            {
                sqlTransactionSelect = dbTools.TransactionBeginSelect();

                #region SELECT FROM LocationName
                string sqlCommand = "SELECT Latitude, Longitude, Name, City, Province, Country, " +
                                    "Max(Abs(Latitude - @Latitude), Abs(Longitude - @Longitude)) AS Distance " +
                                    "FROM LocationName WHERE Latitude >= (@Latitude - @LocationAccuracyLatitude) AND Latitude <= (@Latitude + @LocationAccuracyLatitude) " +
                                    "AND Longitude >= (@Longitude - @LocationAccuracyLongitude) AND Longitude <= (@Longitude + @LocationAccuracyLongitude) " +
                                    "ORDER BY Distance LIMIT 1";

                using (CommonSqliteCommand commandDatabase = new CommonSqliteCommand(sqlCommand, dbTools.ConnectionDatabase, sqlTransactionSelect))
                {
                    //commandDatabase.Prepare();
                    commandDatabase.Parameters.AddWithValue("@Latitude", locationCoordinateSearch.Latitude);
                    commandDatabase.Parameters.AddWithValue("@Longitude", locationCoordinateSearch.Longitude);
                    commandDatabase.Parameters.AddWithValue("@LocationAccuracyLatitude", locationAccuracyLatitude);
                    commandDatabase.Parameters.AddWithValue("@LocationAccuracyLongitude", locationAccuracyLongitude);

                    using (CommonSqliteDataReader reader = commandDatabase.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            locationCoordinateAndDescriptionInDatabase = new LocationCoordinateAndDescription();
                            locationCoordinateAndDescriptionInDatabase.Coordinate.Latitude  = (float)dbTools.ConvertFromDBValFloat(reader["Latitude"]);
                            locationCoordinateAndDescriptionInDatabase.Coordinate.Longitude = (float)dbTools.ConvertFromDBValFloat(reader["Longitude"]);
                            locationCoordinateAndDescriptionInDatabase.Description.Name     = dbTools.ConvertFromDBValString(reader["Name"]);
                            locationCoordinateAndDescriptionInDatabase.Description.City     = dbTools.ConvertFromDBValString(reader["City"]);
                            locationCoordinateAndDescriptionInDatabase.Description.Region   = dbTools.ConvertFromDBValString(reader["Province"]);
                            locationCoordinateAndDescriptionInDatabase.Description.Country  = dbTools.ConvertFromDBValString(reader["Country"]);

                            locationCoordinateAndDescriptionInDatabase.Description.Name    = string.IsNullOrEmpty(locationCoordinateAndDescriptionInDatabase.Description.Name) ? null : locationCoordinateAndDescriptionInDatabase.Description.Name;
                            locationCoordinateAndDescriptionInDatabase.Description.Region  = string.IsNullOrEmpty(locationCoordinateAndDescriptionInDatabase.Description.Region) ? null : locationCoordinateAndDescriptionInDatabase.Description.Region;
                            locationCoordinateAndDescriptionInDatabase.Description.City    = string.IsNullOrEmpty(locationCoordinateAndDescriptionInDatabase.Description.City) ? null : locationCoordinateAndDescriptionInDatabase.Description.City;
                            locationCoordinateAndDescriptionInDatabase.Description.Country = string.IsNullOrEmpty(locationCoordinateAndDescriptionInDatabase.Description.Country) ? null : locationCoordinateAndDescriptionInDatabase.Description.Country;
                            LocationCoordinateAndDescriptionUpdate(locationCoordinateSearch, locationCoordinateAndDescriptionInDatabase.Coordinate, locationCoordinateAndDescriptionInDatabase.Description);
                        }
                    }
                }
                #endregion
            } while (!dbTools.TransactionCommitSelect(sqlTransactionSelect));

            return(locationCoordinateAndDescriptionInDatabase);
        }
        private void UpdateLocationName(LocationCoordinate locationCoordinateInDatabase, LocationCoordinateAndDescription locationCoordinateAndDescriptionInDatbase, float locationAccuracyLatitude, float locationAccuracyLongitude)
        {
            DeleteLocationName(locationCoordinateInDatabase, locationAccuracyLatitude, locationAccuracyLongitude);
            WriteLocationName(locationCoordinateInDatabase, locationCoordinateAndDescriptionInDatbase);
            //string sqlCommand =
            //    "UPDATE LocationName SET " +
            //    "Name = @Name, " +
            //    "City = @City, " +
            //    "Province = @Province, " +
            //    "Country = @Country " +
            //    //"WHERE Latitude = @Latitude AND Longitude = @Longitude";
            //    "WHERE Latitude = (SELECT Latitude FROM (" +
            //    "SELECT Latitude, Name, Max(Abs(Latitude-@Latitude), Abs(Longitude - @Longitude)) AS Distance " +
            //    "FROM LocationName WHERE Latitude >= (@Latitude - @LocationAccuracyLatitude) AND Latitude <= (@Latitude + @LocationAccuracyLatitude) " +
            //    "AND Longitude >= (@Longitude - @LocationAccuracyLongitude) AND Longitude <= (@Longitude + @LocationAccuracyLongitude) " +
            //    "ORDER BY Distance DESC LIMIT 1 " +
            //    ")) AND " +
            //    "Longitude = (SELECT Longitude FROM (" +
            //    "SELECT Longitude, Name, Max(Abs(Latitude-@Latitude), Abs(Longitude - @Longitude)) AS Distance " +
            //    "FROM LocationName WHERE Latitude >= (@Latitude - @LocationAccuracyLatitude) AND Latitude <= (@Latitude + @LocationAccuracyLatitude) " +
            //    "AND Longitude >= (@Longitude - @LocationAccuracyLongitude) AND Longitude <= (@Longitude + @LocationAccuracyLongitude) " +
            //    "ORDER BY Distance DESC LIMIT 1))";

            //using (CommonSqliteCommand commandDatabase = new CommonSqliteCommand(sqlCommand, dbTools.ConnectionDatabase, sqlTransaction))
            //{
            //    locationCoordinateAndDescriptionInDatbase.Description.Name = string.IsNullOrEmpty(locationCoordinateAndDescriptionInDatbase.Description.Name) ? null : locationCoordinateAndDescriptionInDatbase.Description.Name;
            //    locationCoordinateAndDescriptionInDatbase.Description.Region = string.IsNullOrEmpty(locationCoordinateAndDescriptionInDatbase.Description.Region) ? null : locationCoordinateAndDescriptionInDatbase.Description.Region;
            //    locationCoordinateAndDescriptionInDatbase.Description.City = string.IsNullOrEmpty(locationCoordinateAndDescriptionInDatbase.Description.City) ? null : locationCoordinateAndDescriptionInDatbase.Description.City;
            //    locationCoordinateAndDescriptionInDatbase.Description.Country = string.IsNullOrEmpty(locationCoordinateAndDescriptionInDatbase.Description.Country) ? null : locationCoordinateAndDescriptionInDatbase.Description.Country;

            //    //commandDatabase.Prepare();
            //    commandDatabase.Parameters.AddWithValue("@Latitude", locationCoordinateInDatabase.Latitude);
            //    commandDatabase.Parameters.AddWithValue("@Longitude", locationCoordinateInDatabase.Longitude);
            //    commandDatabase.Parameters.AddWithValue("@Name", locationCoordinateAndDescriptionInDatbase.Description.Name);
            //    commandDatabase.Parameters.AddWithValue("@City", locationCoordinateAndDescriptionInDatbase.Description.City);
            //    commandDatabase.Parameters.AddWithValue("@Province", locationCoordinateAndDescriptionInDatbase.Description.Region);
            //    commandDatabase.Parameters.AddWithValue("@Country", locationCoordinateAndDescriptionInDatbase.Description.Country);
            //    commandDatabase.Parameters.AddWithValue("@LocationAccuracyLatitude", locationAccuracyLatitude);
            //    commandDatabase.Parameters.AddWithValue("@LocationAccuracyLongitude", locationAccuracyLongitude);
            //    int affetedRows = commandDatabase.ExecuteNonQuery();      // Execute the query
            //    if (affetedRows <= 0)
            //    {
            //        //DEBUG
            //    }
            //    LocationCoordinateAndDescriptionUpdate(locationCoordinateInDatabase, locationCoordinateAndDescriptionInDatbase.Coordinate, locationCoordinateAndDescriptionInDatbase.Description);
            //}
        }
        public Dictionary <LocationCoordinate, LocationDescription> ReadAllLocationsData()
        {
            Dictionary <LocationCoordinate, LocationDescription> locations = new Dictionary <LocationCoordinate, LocationDescription>();

            Mono.Data.Sqlite.SqliteTransaction sqlTransactionSelect;
            do
            {
                sqlTransactionSelect = dbTools.TransactionBeginSelect();

                #region SELECT Latitude, Longitude, Name, City, Province, Country FROM LocationName
                string sqlCommand = "SELECT Latitude, Longitude, Name, City, Province, Country FROM LocationName";
                using (CommonSqliteCommand commandDatabase = new CommonSqliteCommand(sqlCommand, dbTools.ConnectionDatabase, sqlTransactionSelect))
                {
                    //commandDatabase.Prepare();

                    using (CommonSqliteDataReader reader = commandDatabase.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            LocationCoordinate locationCoordinate = new LocationCoordinate(
                                (float)dbTools.ConvertFromDBValFloat(reader["Latitude"]),
                                (float)dbTools.ConvertFromDBValFloat(reader["Longitude"]));

                            LocationDescription locationDescription = new LocationDescription(
                                dbTools.ConvertFromDBValString(reader["Name"]),
                                dbTools.ConvertFromDBValString(reader["City"]),
                                dbTools.ConvertFromDBValString(reader["Province"]),
                                dbTools.ConvertFromDBValString(reader["Country"]));

                            if (!locations.ContainsKey(locationCoordinate))
                            {
                                locations.Add(locationCoordinate, locationDescription);
                            }
                            LocationCoordinateAndDescriptionUpdate(locationCoordinate, locationCoordinate, locationDescription);
                        }
                    }
                }
                #endregion
            } while (!dbTools.TransactionCommitSelect(sqlTransactionSelect));

            return(locations);
        }
        public bool LocationCoordinateAndDescriptionExsistInCache(LocationCoordinate locationCoordinateSearch)
        {
            if (locationCoordinateSearch == null)
            {
                return(false);
                //DEBUG
            }
            lock (locationCoordinateAndDescriptionCacheLock)
            {
                if (locationCoordinateAndDescriptionInDatbaseCache.ContainsKey(locationCoordinateSearch))
                {
                    return(true);
                }

                if (locationCoordinateConvertFromSearchToDatabaseCache.ContainsKey(locationCoordinateSearch) &&
                    locationCoordinateAndDescriptionInDatbaseCache.ContainsKey(locationCoordinateConvertFromSearchToDatabaseCache[locationCoordinateSearch]))
                {
                    return(true);
                }
            }
            return(false);
        }
        private void LocationCoordinateAndDescriptionUpdate(LocationCoordinate locationCoordinateSearch, LocationCoordinate locationCoordinateInDatabase, LocationDescription locationDescription)
        {
            lock (locationCoordinateAndDescriptionCacheLock)
            {
                if (!locationCoordinateConvertFromSearchToDatabaseCache.ContainsKey(locationCoordinateSearch))
                {
                    locationCoordinateConvertFromSearchToDatabaseCache.Add(locationCoordinateSearch, locationCoordinateInDatabase);
                }
                else
                {
                    locationCoordinateConvertFromSearchToDatabaseCache[locationCoordinateSearch] = locationCoordinateInDatabase;
                }

                if (!locationCoordinateAndDescriptionInDatbaseCache.ContainsKey(locationCoordinateInDatabase))
                {
                    locationCoordinateAndDescriptionInDatbaseCache.Add(locationCoordinateInDatabase, locationDescription);
                }
                else
                {
                    locationCoordinateAndDescriptionInDatbaseCache[locationCoordinateInDatabase] = locationDescription;
                }
            }
        }
 private void DeleteLocationName(LocationCoordinate locationCoordinateInDatabase, float locationAccuracyLatitude, float locationAccuracyLongitude)
 {
     Mono.Data.Sqlite.SqliteTransaction sqlTransaction;
     do
     {
         sqlTransaction = dbTools.TransactionBegin();
         #region DELETE FROM LocationName
         string sqlCommand = "DELETE FROM LocationName " +
                             //"WHERE Latitude = @Latitude AND Longitude = @Longitude";
                             "WHERE Latitude = (SELECT Latitude FROM (" +
                             "SELECT Latitude, Name, Max(Abs(Latitude-@Latitude), Abs(Longitude - @Longitude)) AS Distance " +
                             "FROM LocationName WHERE Latitude >= (@Latitude - @LocationAccuracyLatitude) AND Latitude <= (@Latitude + @LocationAccuracyLatitude) " +
                             "AND Longitude >= (@Longitude - @LocationAccuracyLongitude) AND Longitude <= (@Longitude + @LocationAccuracyLongitude) " +
                             "ORDER BY Distance DESC LIMIT 1 " +
                             ")) AND " +
                             "Longitude = (SELECT Longitude FROM (" +
                             "SELECT Longitude, Name, Max(Abs(Latitude-@Latitude), Abs(Longitude - @Longitude)) AS Distance " +
                             "FROM LocationName WHERE Latitude >= (@Latitude - @LocationAccuracyLatitude) AND Latitude <= (@Latitude + @LocationAccuracyLatitude) " +
                             "AND Longitude >= (@Longitude - @LocationAccuracyLongitude) AND Longitude <= (@Longitude + @LocationAccuracyLongitude) " +
                             "ORDER BY Distance DESC LIMIT 1))";
         using (CommonSqliteCommand commandDatabase = new CommonSqliteCommand(sqlCommand, dbTools.ConnectionDatabase, sqlTransaction))
         {
             //commandDatabase.Prepare();
             commandDatabase.Parameters.AddWithValue("@Latitude", locationCoordinateInDatabase.Latitude);
             commandDatabase.Parameters.AddWithValue("@Longitude", locationCoordinateInDatabase.Longitude);
             commandDatabase.Parameters.AddWithValue("@LocationAccuracyLatitude", locationAccuracyLatitude);
             commandDatabase.Parameters.AddWithValue("@LocationAccuracyLongitude", locationAccuracyLongitude);
             int affectedRows = commandDatabase.ExecuteNonQuery();      // Execute the query
             if (affectedRows <= 0)
             {
                 //DEBUG, This means problem with accurcy in number
             }
             LocationCoordinateAndDescriptionDelete(locationCoordinateInDatabase: locationCoordinateInDatabase);
         }
         #endregion
     } while (!dbTools.TransactionCommit(sqlTransaction));
 }
        public LocationCoordinateAndDescription AddressLookupAndReverseGeocoder(
            LocationCoordinate locationCoordinateSearch, float locationAccuracyLatitude, float locationAccuracyLongitude,
            bool onlyFromCache, bool canReverseGeocoder, LocationDescription metadataLocationDescription, bool forceReloadUsingReverseGeocoder)
        {
            if (locationCoordinateSearch == null)
            {
                //DEBUG
                return(null);
            }

            #region Only From Cache - Nothing in cache - ** return null **
            if (onlyFromCache && !LocationCoordinateAndDescriptionExsistInCache(locationCoordinateSearch))
            {
                return(null);
            }
            #endregion

            if (!forceReloadUsingReverseGeocoder)
            {
                #region If exist - ** Return ** location from Cache or Database
                LocationCoordinateAndDescription locationInDatbaseCoordinateAndDescription =
                    ReadLocationNameFromDatabaseOrCache(locationCoordinateSearch, locationAccuracyLatitude, locationAccuracyLongitude);
                if (locationInDatbaseCoordinateAndDescription != null)
                {
                    return(locationInDatbaseCoordinateAndDescription);
                }
                #endregion

                #region If not exist in Database, but Metadata has Location info, save it and ** return it ***
                if (metadataLocationDescription != null)
                {
                    locationInDatbaseCoordinateAndDescription = new LocationCoordinateAndDescription(
                        locationCoordinateSearch, metadataLocationDescription);
                    WriteLocationName(locationCoordinateSearch, locationInDatbaseCoordinateAndDescription);
                    return(locationInDatbaseCoordinateAndDescription);
                }
                #endregion
            }
            else
            {
                #region When: Force to read from ReverseGeocode - Delete old data and continue to ReverseGeocode
                ReadLocationNameFromDatabaseOrCache(locationCoordinateSearch, locationAccuracyLatitude, locationAccuracyLongitude);
                DeleteLocation(locationCoordinateSearch, locationAccuracyLatitude, locationAccuracyLongitude);
                #endregion
            }

            if (canReverseGeocoder)
            {
                #region ReverseGeocoder
                LocationCoordinateAndDescription locationInDatbaseCoordinateAndDescription;
                try
                {
                    var y  = new ReverseGeocoder();
                    var r2 = y.ReverseGeocode(new ReverseGeocodeRequest
                    {
                        Longitude = locationCoordinateSearch.Longitude,
                        Latitude  = locationCoordinateSearch.Latitude,

                        BreakdownAddressElements = true,
                        ShowExtraTags            = true,
                        ShowAlternativeNames     = true,
                        ShowGeoJSON        = true,
                        PreferredLanguages = PreferredLanguagesString
                    });
                    r2.Wait();

                    if (r2.IsCompleted && !r2.IsFaulted && r2.Result != null && r2.Result.Address != null)
                    {
                        locationInDatbaseCoordinateAndDescription = new LocationCoordinateAndDescription();

                        locationInDatbaseCoordinateAndDescription.Coordinate.Latitude  = locationCoordinateSearch.Latitude;
                        locationInDatbaseCoordinateAndDescription.Coordinate.Longitude = locationCoordinateSearch.Longitude;
                        locationInDatbaseCoordinateAndDescription.Description.City     = (r2.Result.Address.City + " " + r2.Result.Address.Town + " " + r2.Result.Address.Village).Trim().Replace("  ", " ");
                        locationInDatbaseCoordinateAndDescription.Description.Country  = r2.Result.Address.Country;
                        locationInDatbaseCoordinateAndDescription.Description.Name     = (r2.Result.Address.Road + " " + r2.Result.Address.HouseNumber).Trim();
                        locationInDatbaseCoordinateAndDescription.Description.Region   = (r2.Result.Address.State + " " + r2.Result.Address.County + " " + r2.Result.Address.Suburb + " " + r2.Result.Address.District + " " + r2.Result.Address.Hamlet).Trim().Replace("  ", " ");

                        locationInDatbaseCoordinateAndDescription.Description.Name    = string.IsNullOrEmpty(locationInDatbaseCoordinateAndDescription.Description.Name) ? null : locationInDatbaseCoordinateAndDescription.Description.Name;
                        locationInDatbaseCoordinateAndDescription.Description.Region  = string.IsNullOrEmpty(locationInDatbaseCoordinateAndDescription.Description.Region) ? null : locationInDatbaseCoordinateAndDescription.Description.Region;
                        locationInDatbaseCoordinateAndDescription.Description.City    = string.IsNullOrEmpty(locationInDatbaseCoordinateAndDescription.Description.City) ? null : locationInDatbaseCoordinateAndDescription.Description.City;
                        locationInDatbaseCoordinateAndDescription.Description.Country = string.IsNullOrEmpty(locationInDatbaseCoordinateAndDescription.Description.Country) ? null : locationInDatbaseCoordinateAndDescription.Description.Country;

                        WriteLocationName(locationCoordinateSearch, locationInDatbaseCoordinateAndDescription);
                        return(locationInDatbaseCoordinateAndDescription);
                    }
                    else
                    {
                        return(null);
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error(ex, "AddressLookup");
                }
                #endregion
            }
            return(null);
        }
 public void AddressUpdate(LocationCoordinate locationCoordinateInDatabase, LocationCoordinateAndDescription locationCoordinateAndDescription, float locationAccuracyLatitude, float locationAccuracyLongitude)
 {
     UpdateLocationName(
         locationCoordinateInDatabase: locationCoordinateInDatabase,
         locationCoordinateAndDescriptionInDatbase: locationCoordinateAndDescription, locationAccuracyLatitude, locationAccuracyLongitude);
 }
 public void DeleteLocation(LocationCoordinate locationCoordinateInDatabase, float locationAccuracyLatitude, float locationAccuracyLongitude)
 {
     DeleteLocationName(locationCoordinateInDatabase: locationCoordinateInDatabase, locationAccuracyLatitude, locationAccuracyLongitude);
 }
        private LocationCoordinateAndDescription LocationCoordinateAndDescriptionReadFromCache(LocationCoordinate locationCoordinateSearch)
        {
            lock (locationCoordinateAndDescriptionCacheLock)
            {
                //Return if exist in Database cache
                if (locationCoordinateAndDescriptionInDatbaseCache.ContainsKey(locationCoordinateSearch))
                {
                    return(new LocationCoordinateAndDescription(locationCoordinateSearch, locationCoordinateAndDescriptionInDatbaseCache[locationCoordinateSearch]));
                }

                //Check can convert from search to In database Location
                if (locationCoordinateConvertFromSearchToDatabaseCache.ContainsKey(locationCoordinateSearch))
                {
                    if (locationCoordinateAndDescriptionInDatbaseCache.ContainsKey(locationCoordinateConvertFromSearchToDatabaseCache[locationCoordinateSearch]))
                    {
                        return(new LocationCoordinateAndDescription(
                                   locationCoordinateConvertFromSearchToDatabaseCache[locationCoordinateSearch],
                                   locationCoordinateAndDescriptionInDatbaseCache[locationCoordinateConvertFromSearchToDatabaseCache[locationCoordinateSearch]]));
                    }
                }
            }
            return(null);
        }
Beispiel #15
0
 public LocationCoordinate(LocationCoordinate locationCoordinate) : this(locationCoordinate.Latitude, locationCoordinate.Longitude)
 {
 }