Első lépésként szükségünk van egy táblára, amely tartalmazza a magyarországi
településeket. (Ideális esetben a MOL kutak hivatalos listáját importálod ide. A
példában létrehozom a táblát és betöltök pár mintaadatot).
CREATE DATABASE IF NOT EXISTS mol_utvonal;
USE mol_utvonal;
CREATE TABLE settlements (
id INT AUTO_INCREMENT PRIMARY KEY,
zip_code VARCHAR(4) NOT NULL,
name VARCHAR(100) NOT NULL,
county VARCHAR(100) NOT NULL,
has_mol BOOLEAN DEFAULT 1
);
-- Néhány mintaadat (ide töltheted fel majd az összes települést)
INSERT INTO settlements (zip_code, name, county, has_mol) VALUES
('2310', 'Szigetszentmiklós', 'Pest', 1),
('1097', 'Budapest', 'Budapest', 1),
('6720', 'Szeged', 'Csongrád-Csanád', 1),
('9021', 'Győr', 'Győr-Moson-Sopron', 1),
('4024', 'Debrecen', 'Hajdú-Bihar', 1),
('8000', 'Székesfehérvár', 'Fejér', 1),
('3525', 'Miskolc', 'Borsod-Abaúj-Zemplén', 1);
Megjegyzés: Az útvonaltervezéshez szükséged lesz egy ingyenes Google Maps API
kulcsra. Ezt lentebb jelöltem az index.php kódjában (YOUR_GOOGLE_MAPS_API_KEY).
Írj be egy települést vagy irányítószámot!
Mit csinál ez a rendszer pontosan?
1. Intelligens kiegészítés (PHP + JS): Ahogy beírod a mezőbe, hogy "Sziget"
(vagy akár az irányítószámot, hogy "231"), a JS a háttérben meghívja az
api.php-t, ami azonnal visszaküldi a MOL kúttal rendelkező egyezéseket.
2. Kényelmes hozzáadás: Kattintásra a település felkerül egy listára. Ezt az
államot a JS végig egy tömbben (selectedCities) tárolja. Korlátlan számú
települést megadhatsz egymás után.
3. Útvonal optimalizálása:
- Amikor rányomsz a tervezés gombra, elküldi a listát a Google térkép
szerverének.
- Az optimizeWaypoints: true paraméter utasítja az algoritmust az Utazó
Ügynök probléma megoldására. Ha mondjuk megadod, hogy: Budapest (1),
Debrecen (2), Győr (3), Miskolc (4), Ő felismeri, hogy földrajzilag
logikátlan ide-oda ugrálni, és automatikusan átrendezi a listát pl:
Budapest -> Győr -> Miskolc -> Debrecen -> Budapest sorrendbe.
4. Távolságok kiírása: A kapott választ a rendszer szakaszokra (legs) bontva
visszaadja. Ezt kiíratjuk egymás alá szép formátumban (Például:
Szigetszentmiklós -> Budapest: 22 km (30 perc)), és a legvégén összesíti is
a megtett távot.
Fontos:
Ahhoz, hogy ez élesben működjön, a kód alján lévő
<script src="...">
tag-ben a YOUR_GOOGLE_MAPS_API_KEY szöveget le kell cserélned a saját
Google Cloud fiókodban igényelt Directions API kulcsra.