public bool RetrieveFormatedAddress(MapPoint pos, bool overule) { if (isBusy) return false; ThreadPool.QueueUserWorkItem(delegate { try { isBusy = true; var cmdString = string.Format(Lookup, pos.X, pos.Y, 100); // 100m withing point of interest using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); using (var command = new NpgsqlCommand(cmdString, conn)) { using (var dr = command.ExecuteReader()) { while (dr.Read()) { var postcode = dr.GetValue(dr.GetOrdinal("postcode")) as string ?? string.Empty; var woonplaats = dr.GetValue(dr.GetOrdinal("woonplaatsnaam")) as string ?? string.Empty; //var gemeente = dr.GetValue(dr.GetOrdinal("gemeentenaam")) as string ?? string.Empty; //var provincie = dr.GetValue(dr.GetOrdinal("provincienaam")) as string ?? string.Empty; var huisnummer = dr.GetValue(dr.GetOrdinal("huisnummer")); var adres = string.Format("{0} {1}{2}{3}", dr.GetValue(dr.GetOrdinal("openbareruimtenaam")) as string ?? string.Empty, huisnummer is Decimal ? ((Decimal) huisnummer).ToString(CultureInfo.InvariantCulture) : string.Empty, dr.GetValue(dr.GetOrdinal("huisletter")) as string ?? string.Empty, dr.GetValue(dr.GetOrdinal("huisnummertoevoeging")) as string ?? string.Empty); var a = new Address { Country = "Nederland", Locality = woonplaats, PostalCode = postcode, FormattedAddress = adres, StreetNumber = huisnummer.ToString(), Position = pos }; OnResult(a); } } } } isBusy = false; } catch (NpgsqlException e) { Logger.Log("Geocoding", "Error retrieving geocoding data from BAG", e.Message, Logger.Level.Error, true); } }); return true; }
private void OnResult(Address address) { var handler = Result; if (handler != null) handler(this, new ReverseGeocodingCompletedEventArgs(address.FormattedAddress, string.Empty, address)); }
public ReverseGeocodingCompletedEventArgs(string first, string result, Address address) { Address = address; First = first; Result = result; }