Aadressivalija juhend

Paigaldus, valikud, kaart, väljund, meetodid ja stiil.

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>
Võti. Võtmel peavad olema teenused aadressiotsing, aadressivalik ja pöördgeokodeerimine (markeri lohistamiseks); kaardi jaoks raster- või vektorpaanid. Konfiguraatori koodis on avalik näidisvõti, mis vahetub regulaarselt, oma lahenduse jaoks küsi oma võti.

Valikud

ValikVaikimisiTähendus
key–API-võti (kohustuslik).
countries['ee']Lubatud riigid: ee, lv, lt. Mitme riigi korral tuleb riigivalik (või ühine otsing, vt combined).
countryesimene loendistAlgriik.
langetKomponendi keel: et, en, lv või lt (nupud, vihjed, tasemesildid).
searchtrueOtsinguväli automaattäitega.
shorttrueOtsingupakkumised 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.
combinedfalseÜ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).
levelstrueAadressivalik tasemetega (rippmenüüd). Väljund on sama ka ilma nendeta.
mapfalse'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.
dragtrueKlõps kaardil paneb markeri sinna ja markerit saab lohistada; aadress võetakse punktist. false lülitab välja.
logotrueVä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…').
postcodeInAddressfalseSihtnumber 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.
requireHousefalseVää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.
endpointsElemrooti avalikudgeocode, geocodeShort, gazetteer, revgeocode, xyz: kirjuta üle, kui teenused käivad sinu proxy tagant.
styleElemrooti vektorstiilVektorkaardi 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äliSisu
addressAadress 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, gazIdAADRESS_ID ja aadressivaliku sõlme ID (Eestis sama; Lätis ja Leedus registrikood eesliitega).
country, level, levelLabel, finalRiik, sügavaim täidetud tase, selle silt ja kas aadress on lõplik (alamtasemeid pole).
postcodeSihtnumber; Lätis ja Leedus riigi eesliitega (LV-1010, LT-01103).
coordinates{ lon, lat } WGS84 (EPSG:4326).
nationalCoordinatesAinult 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.
componentsNimeline lahtivõte: country, county, municipality, settlement, smallPlace, street, name, house, apartment.
ehakEesti EHAK-koodid { county, municipality, settlement }; mujal null.
adsTypeSügavaim täidetud aadressikomponent (A1–A8).
levels, skippedValitud ahel taseme kaupa { 1: { id, name }, … } ja vahelejäänud tasemed.
rawTeenuse 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

MeetodTä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, versionKomponendi 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.


Konfiguraator ↗ Vali seaded, proovi komponenti ja võta kood oma lehele. Aadressivaliku juhend → Tasemed, ID-d ja nimekirjad, mida komponent kasutab.