Beispiel #1
0
        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;
        }
Beispiel #2
0
 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;
 }