# Listázás földrajzi hely és távolság szerint

> Geokeresés a Lekérdezéskészítőben, a User Geolocation és a Location & Distance szűrő használata Listing Griddel és Map Listinggel.

A geokeresés a bejegyzéseket, felhasználókat, kifejezéseket vagy egyéni tartalomtípus-elemeket egy pont körüli sugáron belül kérdezi le. Jó helyi címtárakhoz, „a közelben” keresőhöz, utazási térképhez vagy olyan oldalhoz, ahol a látogató a hozzá legközelebbi képviselőt keresi. Elementorban, a blokkszerkesztőben és Bricksben is ugyanígy működik.

## Mire kell odafigyelni előre

- A **JetEngine → JetEngine → Modulok** fülön be kell kapcsolni a **Térképes listák** modult, és menteni. Nélküle a geokeresés beállításai nem jelennek meg.
- A bejegyzéstípusnak (vagy tartalomtípusnak) kell egy mező, amely a címet tárolja: **Térkép** típusú metamező, vagy külön szélességi és hosszúsági mező.
- Kell egy listázási sablon, és a lista megjelenítéséhez egy **Listing Grid** vagy **Map Listing** elem az oldalon.
- A látogató helyzetét, illetve a kereső mezőt a JetSmartFilters két szűrője adja, ezért ahol szűrő is kell, ennek a bővítménynek is aktívnak kell lennie.

![A Modulok fül a bekapcsolt Térképes listák modullal](./kepek/listazas-4-modulok.webp)

*A Modulok fül a bekapcsolt Térképes listák modullal* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-engine)

A képen a **Térképes listák** kapcsoló bekapcsolt állapotban látszik. Mentsd a módosítást a **Mentés** gombbal.

A **Térképek beállításai** fülön a térképszolgáltató és a koordináták előtöltése állítható. Ha a címmező **Szöveg** típusú, kapcsold be a **Preload coordinates by address** kapcsolót, és a **Meta fields to preload** mezőbe írd be a mező nevét, hogy a cím koordinátákká alakuljon.

## A geokeresés lekérdezés létrehozása

1. Nyisd meg a **JetEngine → Lekérdezéskészítő** oldalt, és kattints az új lekérdezés hozzáadására.
2. Add meg a lekérdezés nevét. A **Lekérdezés típusa** olyan legyen, amelyik támogatja a geokeresést: **Bejegyzések lekérdezése**, **Kifejezések lekérdezése**, **Felhasználók lekérdezése** vagy **Egyéni tartalomtípus lekérdezése**. A forrás szerint válassz, azaz azt, amit a listában mutatni szeretnél.
3. Bejegyzés-lekérdezésnél az **Általános** fülön add meg a **Bejegyzés típusa** és a **Bejegyzés állapota** mezőt (például közzétett). A típust üresen hagyva bármilyen típusú bejegyzés szóba jön.
4. Ha a lekérdezést később szűrők állítják, a **Lapozás** fülön töltsd ki a **Posts Per Page** mezőt is. Üresen hagyva a lekérdezés hibásan működhet.
5. Nyisd meg a **Geo Search** fület (a felületen ez a felirat angol maradt).

![A Lekérdezéskészítő Geo Search füle](./kepek/listazas-4-geokereses-lekerdezes.webp)

*A Lekérdezéskészítő Geo Search füle* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-engine-query&query_action=add)

A képen a fül mezői látszanak: a helyszín kiválasztása, a **Címmező**, a **Távolság** és az **Egységek**. (A fenti térképet itt nem mutatjuk.)

| Beállítás | Mit csinál |
|---|---|
| **Helyszín kiválasztása** | A térképen kijelölt pont a keresés középpontja. Kézzel vagy makróval is megadhatod a koordinátákat. Ha a látogató nem ad hozzáférést a helyzetéhez, ez a pont marad a középpont. |
| **Címmező** | A cím mező neve a bejegyzésnél, kifejezésnél, felhasználónál vagy tartalomtípusnál. Itt ugyanazokat a mezőket adhatod meg, mint a Térképek beállításainál az előtöltött mezőknél (előtag nélkül, mert a lekérdezés típusa már adott); vagy egy **Térkép** típusú mezőt; vagy vesszővel elválasztva két külön mezőt, ahol az első a szélességi, a második a hosszúsági érték. |
| **Távolság** | A keresési sugár. |
| **Egységek** | **Kilométer** vagy **Mérföld**. |

Mentsd a lekérdezést a **Lekérdezés hozzáadása** gombbal.

A geokeresés azt is lehetővé teszi, hogy az érvényes címmel nem rendelkező elemeket elrejtsd, és csak a geokódolt elemeket kapd vissza.

## A lekérdezés használata Listing Griddel

Ez a legegyszerűbb eset: a lista a térkép megadott pontjának sugarában lévő elemeket mutatja.

1. Szerkeszd az oldalt (Elementorban, blokkszerkesztőben vagy Bricksben), és tedd rá a **Listing Grid** elemet.
2. Az **General** fülön válaszd ki a **Listing** sablont, és állítsd be a többi általános beállítást.
3. A **Custom Query** fülön kapcsold be a **Use Custom Query** kapcsolót, és válaszd ki az előbb létrehozott lekérdezést.
4. Tedd közzé az oldalt.

A frontenden a rács a lekérdezésben megadott középpont körüli sugarú terület elemeit mutatja.

## A lekérdezés használata Map Listinggel

A **Map Listing** elem **Custom Query** fülén kapcsold be a **Use Custom Query** kapcsolót, és válaszd ki ugyanazt a lekérdezést. Lekérdezés nélkül a térkép az összes elemet mutatja. Lekérdezéssel csak a kijelölt pont körüli sugarú elemek kerülnek rá. A blokkszerkesztőben a **Map Listing** blokk ugyanezeket a beállításokat adja.

## Szűrés a látogató helyzete szerint (User Geolocation)

A lekérdezés beállítása adja meg, **hol** keressen; a **User Geolocation** szűrő pedig azt, hol van éppen a látogató. Ha a látogató engedi a helyzete használatát, a szűrő átadja a koordinátáit a geokeresésnek.

1. Nyisd meg a JetSmartFilters szűrőinek listáját (**Smart Filters → Add New**), és add meg a szűrő nevét.
2. A **Filter Type** legyen **User Geolocation**.
3. Töltsd ki a **Filter Label** mezőt (a szűrő mellett jelenhet meg) és az **Active Filter Label** mezőt (az **Active Tags** és **Active Filters** elemek használják).
4. Mentsd a szűrőt (**Publish** vagy **Update**).
5. A szerkesztett oldalra tedd rá a **User Geolocation** widgetet (blokkot, elemet). Nem kell a lista vagy a térkép belsejébe tenni, elég ugyanazon az oldalon lennie.
6. A **Select filter** mezőben válaszd ki a szűrőt.
7. A **This filter for** mezőben **Listing Grid** esetén a **JetEngine** szolgáltatót válaszd, **Map Listing** esetén a **JetEngine Maps** szolgáltatót.
8. Győződj meg róla, hogy az oldalon lévő Listing Grid vagy Map Listing a geokeresési lekérdezést használja.

Mi történik a frontenden:

- Az első látogatáskor a böngésző engedélyt kér a helyzet használatához.
- Ha a látogató az **Engedélyezés** gombra kattint, a lista vagy a térkép az ő helyzete körül szűrődik.
- Ha **Tiltás**-t választ, a lekérdezésben kijelölt pont marad a középpont.

### Gyakori kérdések

**Mi van, ha a látogató nem engedi a helyzetét?** A lekérdezés a **Helyszín kiválasztása** mezőben megadott pontot használja középpontnak.

**Használható helyzet nélkül, rögzített pont nélkül?** Nem. A rögzített pont tartalék helyszín a tiltó látogatóknak, és a keresés kezdeti középpontja is, mielőtt a látogató helyzete kiderülne.

**Mely lekérdezéstípusok támogatják?** A bejegyzések, kifejezések, felhasználók és egyéni tartalomtípusok lekérdezése.

**Listing Griddel is megy?** Igen. Ugyanazt a lekérdezést add a Listing Gridnek, és a szűrőt kösd a megfelelő szolgáltatóhoz.

**Miért nem változtatja az eredményt a szűrő?** Nézd meg, hogy a **This filter for** mezőben a megfelelő szolgáltató van-e kiválasztva (Map Listingnél **JetEngine Maps**), és hogy a térkép vagy a lista tényleg a geokeresési lekérdezést használja-e.

## Szűrés beírt cím és távolság szerint (Location & Distance)

Ezzel a szűrővel a látogató maga írja be a helyet, és választja ki a sugarat. Elementorban és Bricksben ugyanígy készül; az egyetlen különbség, hogy Bricksben a **Bricks → Sablonok** alatt szerkeszted az oldalt vagy sablont, és widget helyett elemet adsz hozzá.

### Előkészítés

1. Kapcsold be a **Térképes listák** modult a **JetEngine → JetEngine → Modulok** fülön, és mentsd.
2. A **Térképek beállításai** fülön állítsd be a térkép beállításait. Ezek automatikusan mentődnek.

### A szűrő

1. A **Smart Filters → Add New** oldalon add meg a **Filter Name** mezőt, a **Filter Settings** fülön a **Filter Type** legyen **Location & Distance**.
2. Töltsd ki a **Filter Label** és az **Active Filter Label** mezőt.
3. Mentsd az **Update** gombbal.

### A lekérdezés

1. A **JetEngine → Lekérdezéskészítő** oldalon hozz létre új lekérdezést geokeresést támogató típussal (a példában bejegyzés-lekérdezés, **Állások** bejegyzéstípussal, közzétett állapottal).
2. A **Lapozás** fülön add meg a **Posts Per Page** értékét. Ha üres, a lekérdezés hibásan működhet.
3. A **Geo Search** fülön jelöld ki a kezdeti keresés középpontját, add meg a **Címmező** mezőben a címet tároló metamező kulcsát, a **Távolság** mezőben a sugarat, és válaszd ki az **Egységek**-et (kilométer vagy mérföld).
4. Mentsd a lekérdezést.

### Az oldal

1. Tedd az oldalra a **Location and Distance Filter** widgetet (Bricksben elemet). A **Select filter** mezőben válaszd ki a szűrőt, a szolgáltató legyen **JetEngine**.
2. Tedd az oldalra a **Listing Grid** elemet, válaszd ki a bejegyzéstípushoz tartozó **Listing** sablont.
3. A **Custom Query** fülön kapcsold be a **Use Custom Query** kapcsolót, és válaszd ki az új lekérdezést.
4. Stílusozd az oldalt, és tedd közzé.

### Használat a frontenden

- A kereső mezőbe beírod a hely nevét, és a legördülő listából kiválasztod a megfelelő találatot.
- A hely melletti mezőben kiválasztod a távolságot.
- A **Your current location** gombbal a keresés a jelenlegi helyed körül fut. Ehhez a böngészőben engedélyezni kell a helymeghatározást az adott oldalnak: az első kattintáskor felugró ablakban, vagy később a böngésző beállításaiban.

## Térképpel együtt: a Map Sync

Ha a látogató a térkép mozgatásával szeretné szűkíteni a találatokat, használd a Map Sync elemet, lásd a [Térkép és lista szinkronban](https://hub.hellowp.io/hu/plugins/jet-engine/listazas-terkep-map-sync/) fejezetet. A Location & Distance és a User Geolocation szűrő nem használható a Map Synccel egyszerre.
