Komponent ElemrootAddressPicker on üks skriptifail ilma sõltuvusteta (kaardi korral laeb ta
MapLibre GL JS-i ise). Ta töötab Eesti, Läti ja Leedu aadressidega ning annab iga valiku peale
väljundi, mille saad otse oma süsteemi salvestada. Seaded saad kokku panna
konfiguraatoris, kust tuleb ka valmis kood.
Paigaldus
Lisa skript, tühi element ja create-kutse. Element saab klassi eap, mitu
komponenti ühel lehel on lubatud.
<script src="https://examples.elemroot.com/widget/aadressivalija/v1/aadressivalija.js"></script>
<div id="aadress"></div>
<script>
var valija = ElemrootAddressPicker.create('#aadress', {
key: 'SINU_API_VOTI',
countries: ['ee'],
map: 'raster',
onChange: function (a) {
// a = null (tühjendatud) või väljund (vt allpool)
}
});
</script>
Valikud
| Valik | Vaikimisi | Tähendus |
|---|---|---|
key | – | API-võti (kohustuslik). |
countries | ['ee'] | Lubatud riigid: ee, lv, lt. Mitme riigi korral tuleb riigivalik (või ühine otsing, vt combined). |
country | esimene loendist | Algriik. |
lang | et | Komponendi keel: et, en, lv või lt (nupud, vihjed, tasemesildid). |
search | true | Otsinguväli automaattäitega. |
short | true | Otsingupakkumised tulevad aadressiotsingu lühiversioonist, lühemate nimekujudega (Anne 1, Tartu linn, Tartu linn, Tartumaa). false võtab pakkumised täisteenusest (Anne tänav 1, Tartu linn, Tartu linn, Tartu maakond). Sama teenus teeb ka ID-päringu L-EST97 koordinaatide jaoks. Valitud aadressi väljund on mõlemal juhul sama, ametlikul kujul. |
combined | false | Ühine otsing kõigis countries riikides ilma riigivalikuta: pakkumised tulevad ühest päringust, riik näidatakse pakkumise lõpus ja loetakse valitud aadressist (aadressivaliku tasemed vahetuvad selle riigi omadeks). |
levels | true | Aadressivalik tasemetega (rippmenüüd). Väljund on sama ka ilma nendeta. |
map | false | 'raster' (Elemrooti rasterkaart, ainult Eesti; Läti ja Leedu aadressidel vektorkaart) või 'vector'. |
layout | 'stack' | Kaardi asend: 'stack' all, 'side' paremal, 'side-left' vasakul. Kitsal ekraanil alati all. |
drag | true | Klõps kaardil paneb markeri sinna ja markerit saab lohistada; aadress võetakse punktist. false lülitab välja. |
logo | true | Väike Elemrooti logo komponendi all paremal. false jätab ära. |
labels | – | Tasemesiltide ülekirjutus riigi ja taseme kaupa, nt { ee: { 1: 'Maakond' } }. |
placeholder | 'Sisesta aadress…' | Otsinguvälja vihjetekst (keelel en 'Enter an address…'). |
postcodeInAddress | false | Sihtnumber pannakse väljundi address stringi sisse. Eestis esimese osa järel, teise taseme ette (Anne tn 1-1, 50604 Tartu linn, Tartu linn, Tartu maakond, Vahtra, 61607 Illi küla, Nõo vald, Tartu maakond); Lätis lõppu (Elizabetes iela 2, Rīga, LV-1010); Leedus omavalitsuse keskuses asula ette (Gedimino pr. 9, LT-01103 Vilnius, Vilniaus miesto sav.), mujal omavalitsuse ette (Plento g. 17, Ariogala, Ariogalos miesto sen., LT-60249 Raseinių rajono sav.). Sobib näiteks veebipoe tarneaadressiks. |
requireHouse | false | Väärtus antakse alles maja täpsusega aadressil (tase maja/krunt või korter). Tänava või asula valikul on väärtus null ja komponent näitab vihjet „Vali ka maja". Sobib tarneaadressiks. |
fields | – | Vormiväljade täitmine ilma oma JavaScriptita, näiteks veebipoe tellimusvormis: { address: '#f-aadress', postcode: '#f-sihtnumber' }, mitme riigiga ka country: '#f-riik'. Võti on väljundi väli (punktiga ka alamväli, nt 'coordinates.lat'), väärtus CSS-valija või element; tühjendamisel lähevad väljad tühjaks. |
endpoints | Elemrooti avalikud | geocode, geocodeShort, gazetteer, revgeocode, xyz: kirjuta üle, kui teenused käivad sinu proxy tagant. |
style | Elemrooti vektorstiil | Vektorkaardi stiili URL (võti lisatakse ise). |
onChange | – | Kutsutakse iga valiku ja tühjendamise peale väljundiga või null-iga. |
onError | – | Kutsutakse teenuse vea korral. |
Sama seadet võib anda kõigile komponentidele korraga: ElemrootAddressPicker.defaults = { endpoints: { … } }.
Kaart
Kui map on seatud, on kaart nähtav kohe. Tühja väärtusega näitab ta konfigureeritud riikide
ala (ühe riigi puhul see riik, mitme puhul kõik korraga; riigi vahetamisel selle riigi ala), valitud
aadressi puhul markerit suumil 15. Kaarti saab nihutada, suumida nuppudega ja hiirerullikuga.
Rasterkaart katab Eesti; Läti ja Leedu aadressidel näitab komponent vektorkaarti ka siis, kui seatud
on 'raster'.
Kui drag on sees, paneb klõps kaardil markeri klõpsukohta ja markerit saab lohistada.
Punktist leitakse pöördgeokodeerimisega lähim aadress, see otsitakse aadressiotsingust ja valitakse
nagu tavaline vaste, seega on väljund sama kujuga kui otsingul. Teise lubatud riigi punkt vahetab
riigi. Kui 500 m raadiuses aadressi ei ole, jääb marker eelmise aadressi juurde ja komponent ütleb seda.
Kaardi mõõdud tulevad CSS-muutujatest: --eap-map-h (kõrgus, vaikimisi
180px, kehtib kaardi all olles) ja --eap-map-w (laius kõrval olles,
vaikimisi 300px).
Väljund
onChange annab ja getValue() tagastab objekti; sama objekt tuleb ka
sündmusega elemroot-address (event.detail) komponendi elemendilt.
| Väli | Sisu |
|---|---|
address | Aadress ametlikul täiskujul, täpsem osa ees, kõik tasemed sees (nt Anne tn 1-1, Tartu linn, Tartu linn, Tartu maakond: asustusüksus ja omavalitsus on eraldi tasemed ka siis, kui nimi kordub); valikuga postcodeInAddress on sihtnumber stringi sees. |
addressId, gazId | AADRESS_ID ja aadressivaliku sõlme ID (Eestis sama; Lätis ja Leedus registrikood eesliitega). |
country, level, levelLabel, final | Riik, sügavaim täidetud tase, selle silt ja kas aadress on lõplik (alamtasemeid pole). |
postcode | Sihtnumber; Lätis ja Leedus riigi eesliitega (LV-1010, LT-01103). |
coordinates | { lon, lat } WGS84 (EPSG:4326). |
nationalCoordinates | Ainult Eesti: { epsg: 'EPSG:3301', x, y, north, east }, kus x = põhi (N) ja y = ida (E) L-EST97 ametlikus järjekorras; north ja east on samad väärtused üheselt nimetatuna. Lätis ja Leedus null. |
components | Nimeline lahtivõte: country, county, municipality, settlement, smallPlace, street, name, house, apartment. |
ehak | Eesti EHAK-koodid { county, municipality, settlement }; mujal null. |
adsType | Sügavaim täidetud aadressikomponent (A1–A8). |
levels, skipped | Valitud ahel taseme kaupa { 1: { id, name }, … } ja vahelejäänud tasemed. |
raw | Teenuse toorvastus. |
{
"country": "ee",
"address": "Anne tn 1-1, Tartu linn, Tartu linn, Tartu maakond",
"addressId": 3124193,
"postcode": "50604",
"coordinates": { "lon": 26.742994, "lat": 58.381567 },
"nationalCoordinates": { "epsg": "EPSG:3301", "x": 6474513.33, "y": 660418.47, "north": 6474513.33, "east": 660418.47 },
"components": { "county": "Tartu maakond", "municipality": "Tartu linn", "settlement": "Tartu linn", "street": "Anne tänav", "house": "1", "apartment": "1" },
"adsType": "A8",
"final": true
}
Meetodid
| Meetod | Tähendus |
|---|---|
getValue() | Praegune väljund või null. |
clear() | Tühjendab valiku, annab onChange(null), kaart läheb vaikealale. |
setCountry(c), getCountry() | Riigi vahetus ja lugemine. |
openById(id) | Avab aadressi AADRESS_ID järgi kõigil tasemetel (tagastab lubaduse). |
suggest(q), pick(match) | Programmiline otsing ja vaste valik. |
pickPoint(lon, lat) | Aadress kaardipunktist (sama, mida teeb klõps kaardil); tagastab lubaduse väljundi või null-iga. |
destroy() | Eemaldab komponendi (kaart, ajastid, DOM). Vajalik, kui raamistik loob elemendi uuesti. |
el, version | Komponendi element ja versioon. |
Stiil
Komponent toob oma stiili kaasa. Värvid ja mõõdud kirjutad üle CSS-muutujatega komponendi elemendil:
--eap-accent, --eap-border, --eap-bg, --eap-ink,
--eap-muted, --eap-field (valikukastide taust), --eap-radius, --eap-map-h, --eap-map-w.
Kõik sisemised klassid algavad eesliitega eap-.
#aadress { --eap-accent: #0a7d4f; --eap-map-h: 260px; --eap-map-w: 360px; }
Ligipääsetavus
Otsinguväli on ekraanilugejale liitkast (role="combobox") ja pakkumised loend
(role="listbox", role="option"): avatud olek, aktiivne rida ja valik on atribuutides
aria-expanded, aria-activedescendant ja aria-selected. Vihjed loetakse ette
(aria-live="polite"). Nooleklahvid, Enter ja Escape töötavad nimekirjas; rippmenüüd ja nupud on
tavalised vormielemendid siltidega.