Opis Dostawca wyszukiwania dla wszystkich map. Obsługuje /search (wolny tekst i strukturalny), /reverse, /lookup, /details i /status. Przed zapytaniem sprawdza token i adres, sondą /status wykrywa niedziałający serwer, a limit zapytań pilnuje zasad użycia (1 zapytanie/s, obsługa HTTP 429).
Moduł: MapCommon.Search, MapCommon.Nominatim · Klasa bazowa: TMapSearchProvider (TComponent) · Platformy: VCL + FMX
Wyszukiwarka mapy z wynikami z TNominatimSearchProvider (odległość od markera głównego). Podgląd poglądowy (nie zrzut z Delphi) – prawdziwa strona mapy komponentu w ramce imitującej formę.
Demo na żywo Wyszukiwanie wolne, strukturalne i odwrotne, /status, URL zapytania i czas odpowiedzi (limit 1/s).
▶ Otwórz demo HTML
Funkcje Pełne parametry Nominatim 5.1: OutputFormat, Outputs (addressdetails, extratags, namedetails), Layers, FeatureType, ViewBox, Bounded, Dedupe, Polygon, ExcludePlaceIds, Email. Walidacja przed wysłaniem: brak tokenu (pekNoToken), błędny adres (pekBadURL). Sonda /status z pamięcią wyniku (CheckServerStatus, StatusCacheSeconds). Klasyfikacja błędów TMapProviderErrorKind: 401 → pekNoToken, 403 → pekInvalidToken, 404 → pekBadURL, 429 → pekRateLimited, 502/503 → pekServerDown, 504 → pekTimeout. Limit po stronie klienta: MinRequestIntervalMs = 1000 (kolejka, nic nie ginie) i przerwa RateLimitBackoffMs po 429. Adresy per kontynent (ContinentBaseURLs) i automatyczne wykrywanie kontynentu. Token nigdy nie trafia do DFM ani komunikatów błędów (maskowanie ***).
Licencja danych: wyniki pochodzą z OpenStreetMap (ODbL) – w aplikacji musi być widoczne „© OpenStreetMap contributors”. Publiczny serwer nominatim.openstreetmap.org ma własne zasady (1 zapytanie/s, bez autouzupełniania); domyślnie używana jest własna bramka geoloc.imetroll.com, a adres można zmienić bez aktualizacji programu.
Właściwości Właściwość Opis BaseURL Adres serwera; puste = SearchProviderURL mapy, potem bramka domyślna. Token (public) Sekret ustawiany w kodzie – nie zapisuje się w pliku formy. TokenRequired, TokenFormat Czy token jest wymagany, sposób przekazania. Language, Limit, CountryCodes Język wyników, liczba wyników, kraje. OutputFormat, Outputs, Layers, FeatureType Format i zakres danych. ViewBox, Bounded, Dedupe, Polygon, PolygonThreshold Obszar preferowany, deduplikacja, geometria. DetailsOptions Opcje zapytania /details. Continent, ContinentFilter, SendContinentHint, ContinentBaseURLs Wybór serwera według kontynentu. CheckServerStatus, StatusCacheSeconds Sonda /status i jej pamięć. MinRequestIntervalMs, RateLimitBackoffMs Limit zapytań (domyślnie 1000 ms) i przerwa po HTTP 429. ConnectTimeout, Timeout, UserAgent Limity czasu, identyfikacja aplikacji.
Zdarzenia Zdarzenie Opis OnResults Wyniki (rodzaj zapytania, tekst, TMapGeoResults, surowy JSON). OnError Błąd z rodzajem pek*, kodem HTTP i komunikatem PL/EN. OnConnectionChecked Wynik testu połączenia (/status).
Metody Metoda Opis Search, SearchStructured, SearchInArea Wyszukiwanie. Reverse Adres z punktu. Lookup, Details, DetailsByPlaceId Obiekty OSM. CheckConnection, Status, InvalidateConnectionCache Test połączenia. Validate Synchroniczna walidacja tokenu i adresu. CancelPending, RedactedURL Anulowanie, adres z ukrytym tokenem.
Przykłady Konfiguracja i test połączenia NominatimSearchProvider1.BaseURL := 'https://geoloc.imetroll.com' ;
NominatimSearchProvider1.Token := GetEnvironmentVariable('MAP_SEARCH_TOKEN' );
NominatimSearchProvider1.Language := 'pl' ;
NominatimSearchProvider1.CountryCodes := 'pl' ;
NominatimSearchProvider1.MinRequestIntervalMs := 1000 ; // maks. 1 zapytanie/s
// test połączenia: token, adres, /status
NominatimSearchProvider1.CheckConnection(
procedure (Ok: Boolean; ErrorKind: TMapProviderErrorKind;
const ErrorMessage, StatusJSON: string)
begin
if not Ok then
ShowMessage(ErrorMessage); // np. pekInvalidToken: "Token odrzucony (403)"
end );
// wyszukiwanie strukturalne i obiekty OSM
NominatimSearchProvider1.SearchStructured('Marszałkowska 10' , 'Warszawa' , '00-001' , 'pl' );
NominatimSearchProvider1.Lookup('N240109189,W50637691' );
NominatimSearchProvider1.Reverse(52.2297 , 21.0122 );Obsługa błędów procedure TForm1.NominatimSearchProvider1Error(Sender: TObject; Kind: TMapSearchKind;
ErrorKind: TMapProviderErrorKind; const Query: string; StatusCode: Integer;
const ErrorMessage, Sublicence: string);
begin
case ErrorKind of
pekNoToken, pekInvalidToken: ShowMessage('Sprawdź token: ' + ErrorMessage);
pekRateLimited: StatusBar1.SimpleText := 'Za dużo zapytań – kolejne za chwilę' ;
pekServerDown, pekTimeout: StatusBar1.SimpleText := 'Serwer chwilowo niedostępny' ;
else
StatusBar1.SimpleText := ErrorMessage;
end ;
end ;Pełna lista API Generowana z deklaracji w kodzie (Source/*.pas): wszystkie opublikowane właściwości i zdarzenia TNominatimSearchProvider (także dziedziczone), właściwości publiczne i metody publiczne.
Właściwości opublikowane (29) Właściwość Typ Domyślnie Opis LanguagestringJęzyk wyników i komunikatów (pl, en, de …) LimitInteger10Maksymalna liczba wyników ConnectTimeoutInteger5000Limit czasu połączenia (ms) TimeoutInteger15000Limit czasu odpowiedzi (ms) UserAgentstringNagłówek User-Agent – identyfikuj aplikację MinRequestIntervalMsInteger1000Minimalny odstęp między zapytaniami (kolejka); Nominatim: 1000 RateLimitBackoffMsInteger10000Przerwa po HTTP 429 BaseURLstringAdres serwera Nominatim TokenRequiredBooleanTrueWymagaj tokenu TokenFormatTMapTokenFormatmtfAutoSposób przekazania tokenu (mtfAuto, nagłówek, parametr) OutputFormatTNominatimFormatnfJSONv2Format odpowiedzi (jsonv2, geojson…) OutputsTNominatimOutputs[noAddressDetails]Dodatkowe dane (adres, extratags, namedetails…) CountryCodesstringFiltr krajów ISO (np. pl,de) LayersTNominatimLayers[]Warstwy Nominatim (address, poi, railway…) FeatureTypeTNominatimFeatureTypenftNoneTyp obiektu (country, state, city, settlement) ExcludePlaceIdsstringWykluczone place_id ViewBoxstringPreferowany obszar lon1,lat1,lon2,lat2 BoundedBooleanFalseTylko wyniki w ViewBox DedupeBooleanTrueUsuwanie duplikatów PolygonTNominatimPolygonnpNoneZwracany kształt (geojson, kml, svg, text) PolygonThresholdDoubleUproszczenie kształtu EmailstringE-mail kontaktowy (polityka Nominatim) DetailsOptionsTNominatimDetailsOptionsOpcje zapytania /details ContinentTMapContinentmcAutoKontynent (mcAuto = według widoku) ContinentFilterBooleanFalseFiltruj wyniki do kontynentu SendContinentHintBooleanTrueWysyłaj podpowiedź kontynentu ContinentBaseURLsTStringsSerwery per kontynent (eu=…, as=…) CheckServerStatusBooleanTrueSprawdzaj /status przed pierwszym zapytaniem StatusCacheSecondsInteger300Ważność wyniku /status (s)
Zdarzenia (3) Zdarzenie Typ Opis OnResultsTMapSearchResultsEventWyniki wyszukiwania OnErrorTMapSearchErrorEventKażdy błąd (ErrorKind, HTTP, komunikat PL/EN) OnConnectionCheckedTMapConnectionCheckedEventWynik sprawdzenia połączenia
Właściwości publiczne – tylko w kodzie (9) Właściwość Typ Opis BusyBooleanTrwa zapytanie HostBaseURLstringAdres ustawiony przez mapę (gdy BaseURL pusty) HostTokenstringToken ustawiony przez mapę LastCheckOKBooleanWynik ostatniego sprawdzenia LastCheckTimeTDateTimeCzas ostatniego sprawdzenia LastCheckErrorKindTMapProviderErrorKindRodzaj błędu sprawdzenia LastCheckMessagestringKomunikat sprawdzenia LastStatusJSONstringOdpowiedź /status TokenstringToken – tylko w kodzie (nie w DFM/FMX)
Metody publiczne (17) Metoda Opis procedure Search(const Query: string)Wyszukiwanie (OnResults / callback) procedure SearchInArea(const Query: string; const Area: TMapArea)Wyszukiwanie w zaznaczonym obszarze procedure Reverse(const Lat, Lon: Double; Zoom: Integer = 18)Odwrotne geokodowanie procedure CancelPendingAnuluje oczekujące zapytania function SupportsKind(Kind: TMapSearchKind): BooleanCzy obsługuje rodzaj zapytania function RedactedURL(const Request: TMapSearchRequest): stringURL z ukrytymi sekretami function Scrub(const Text: string): stringZastępuje sekrety *** function EffectiveBaseURL(C: TMapContinent = mcNone): stringFaktycznie używany adres function Params(const Request: TMapSearchRequest): TNominatimParamsWszystkie parametry zapytania function Validate(out ErrorKind: TMapProviderErrorKind; out ErrorMessage: string): BooleanWalidacja (token + URL) bez sieci procedure SearchStructured(const Query: TNominatimStructuredQuery)Wyszukiwanie strukturalne (ulica, miasto, kod…) procedure Lookup(const OsmIds: string)/lookup po osm_ids (maks. 50) procedure Details(OsmType: Char; OsmId: Int64; const ClassName: string = '')/details obiektu procedure DetailsByPlaceId(PlaceId: Int64)/details po place_id procedure CheckConnection(const Callback: TMapConnectionCheckProc = nil)/status teraz procedure StatusAlias CheckConnection procedure InvalidateConnectionCacheZapomina wynik /status
Pełny opis wszystkich właściwości: dokumentacja komponentów map .
Zobacz też