---
source_url: "https://moje.hoplo.sk/planovanie-cesty/"
title: "Plánovanie cesty"
generated_at: 2026-09-11T23:20:57Z
host: moje.hoplo.sk
type: page
generator: ael-42a/1.2.0
---

# Plánovanie cesty

###    Mapa trasy a itinerár   





 

 

 

 

Naplánujte si trasu, nie len let. Zadajte až päť letov v poradí, v akom skutočne letíte, a systém vám okamžite ukáže vzdušnú vzdialenosť, počet zastávok aj vizualizáciu celej trasy na interaktívnej mape. Pri každom úseku navyše nájdete aktuálne počasie v cieľovej destinácii, 3-dňovú predpoveď, miestny čas, časové pásmo aj aktuálny kurz meny – všetko na jednom mieste, bez toho, aby ste museli otvárať desať rôznych stránok. Ideálne pre viacdestinačné cesty, keď potrebujete rýchlo vidieť celý obraz naraz.

 



${day.icon}

${day.text}

${day.max} ${day.min}

${icons.humidity}${day.humidity}

 `).join(""); const renderCurrentWeather = (to, weatherData) =&gt; mojehoploRouteMapRenderCurrentWeather(to, weatherData); const mojehoploRouteMapRenderCurrentWeather = (to, weatherData) =&gt; ` ${icons.sun} Aktuálne počasie · ${to.city}

 ${icons.sun} Počasie teraz

${weatherData.currentTemperature !== null ? `${Math.round(weatherData.currentTemperature)}°C` : "—"}

${mojehoploRouteMapRepairText(weatherData.currentText || "Aktuálny stav počasia nie je dostupný.")}

 ${icons.calendar}3-dňový výhľad ${icons.globe}${to.city} 

 

${weatherData.currentIcon || icons.sun}

  ${icons.humidity} Vlhkosť vzduchu

${weatherData.currentHumidity !== null ? `${weatherData.currentHumidity}%` : "—"}

Aktuálne podmienky v destinácii ${to.city}.

 ${icons.humidity}Relatívna vlhkosť 

 

${icons.humidity}

  

  `; const renderSegment = (from, to, index) =&gt; mojehoploRouteMapRenderSegment(from, to, index); const mojehoploRouteMapRenderSegment = (from, to, index) =&gt; { const distance = haversine(from, to); const offsetDifference = timeDifference(to.timezone); const offsetDifferenceText = `${offsetDifference &gt;= 0 ? "+" : ""}${offsetDifference}h oproti SK`; const currencyCopy = mojehoploRouteMapFormatMoneyRate(to.currency); const weatherData = to.weather || { daily: [], utcOffset: "", timezoneAbbreviation: "", currentHumidity: null, currentTemperature: null, currentIcon: icons.sun, currentText: "" }; return ` ${icons.plane} Trasa ${index + 1}

${from.code}

${from.city}

 

${to.code}

${to.city}

 

 

 ${arc()} ${formatNumber(distance)} km

Vzdušná čiara

 

${formatFlightDuration(distance)}

Odhad letu

 

 

 

${icons.info} Cestovné informácie · ${to.city}

${icons.clock} Miestny čas

${localTime(to.timezone)}

${to.city}  
**${offsetDifferenceText}**  
Slovensko: ${nowInSlovakia()}

 

${icons.globe} Časové pásmo

${weatherData.utcOffset || "UTC±00:00"}

${to.timezone}${weatherData.timezoneAbbreviation ? `  
${weatherData.timezoneAbbreviation}` : ""}

 

${icons.money} Kurz meny

${to.currency?.code || "—"}

${currencyCopy.primary}${currencyCopy.secondary ? `  
${currencyCopy.secondary}` : ""}${currencyCopy.tertiary ? `  
${currencyCopy.tertiary}` : ""}

 

 

 

 

 ${mojehoploRouteMapRenderCurrentWeather(to, weatherData)} ${icons.calendar} 3-dňová predpoveď počasia · ${to.city}

${renderWeatherCards(weatherData.daily || [])}

  

  `; }; const bootWidget = async (widget) =&gt; { if (widget.dataset.ready === "1") { return; } widget.dataset.ready = "1"; const config = JSON.parse(widget.dataset.config || "{}"); const mapNode = widget.querySelector("[data-route-map]"); const status = widget.querySelector("[data-route-status]"); const pathNode = widget.querySelector("[data-route-path]"); const distanceNode = widget.querySelector("[data-route-distance]"); const countNode = widget.querySelector("[data-route-count]"); const segmentsNode = widget.querySelector("[data-route-segments]"); try { const resolved = []; for (const rawStop of config.route_stops || []) { const stop = await geocode(rawStop); if (stop) { const [weatherData, currencyData] = await Promise.all([ mojehoploRouteMapWeather(stop).catch(() =&gt; ({ daily: [], utcOffset: "", timezoneAbbreviation: "", currentHumidity: null, currentTemperature: null, currentIcon: icons.sun, currentText: "" })), money(stop.countryCode).catch(() =&gt; ({ code: "", rate: null })), ]); stop.weather = weatherData; stop.currency = currencyData; resolved.push(stop); } } if (resolved.length &lt; 2) { throw new Error("missing-stops"); } if (pathNode) { pathNode.textContent = resolved.map((stop) =&gt; stop.code).join(" → "); } if (countNode) { countNode.textContent = String(resolved.length - 1); } let totalDistance = 0; const segmentMarkup = []; for (let index = 0; index &lt; resolved.length - 1; index++) { totalDistance += haversine(resolved[index], resolved[index + 1]); segmentMarkup.push(mojehoploRouteMapRenderSegment(resolved[index], resolved[index + 1], index)); } if (distanceNode) { distanceNode.textContent = formatKilometers(totalDistance); } if (segmentsNode) { segmentsNode.innerHTML = segmentMarkup.join(""); } await loadLeaflet(); const map = window.L.map(mapNode, { scrollWheelZoom: false, zoomControl: true }); const points = resolved.map((stop) =&gt; [stop.lat, stop.lng]); window.L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { attribution: "© OpenStreetMap", maxZoom: 18, }).addTo(map); window.L.polyline(points, { color: "rgba(227,65,51,0.18)", weight: 10, lineCap: "round", }).addTo(map); window.L.polyline(points, { color: "#e34133", weight: 3, lineCap: "round", smoothFactor: 1, }).addTo(map); resolved.forEach((stop, index) =&gt; { const icon = window.L.divIcon({ className: "", html: ``, iconSize: [18, 18], iconAnchor: [9, 9], }); window.L.marker([stop.lat, stop.lng], { icon }).addTo(map).bindPopup(`**${stop.code}**  
${stop.city}, ${stop.country}`); }); map.fitBounds(points, { padding: [38, 38] }); if (status) { status.remove(); } } catch (error) { if (status) { status.textContent = "Mapu sa nepodarilo načítať. Skontroluj body trasy a autocomplete vstupy."; } } }; const boot = () =&gt; document.querySelectorAll(selector).forEach(bootWidget); window.mojehoploRouteMapInit = boot; if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", boot, { once: true }); return; } boot(); })(); 

`; }; const clearResults = root =&gt; { const results = root.querySelector("[data-helpful-results]"); if(results){ results.innerHTML = ""; } }; const renderEmpty = message =&gt; `${esc(repairText(message))}

`; const fetchJson = async (url, params) =&gt; { const target = new URL(url, window.location.origin); Object.entries(params || {}).forEach(([key, value]) =&gt; { target.searchParams.set(key, typeof value === "string" ? value : JSON.stringify(value)); }); const response = await fetch(target.toString(), { credentials: "same-origin" }); if(!response.ok){ throw new Error("request_failed"); } return response.json(); }; const fillSuggestions = async input =&gt; { const endpoint = input.getAttribute("data-suggest-endpoint") || input.getAttribute("data-airport-endpoint"); const listId = input.getAttribute("list"); if(!endpoint || !listId){ return; } const list = document.getElementById(listId); if(!list){ return; } const query = normalize(input.value); if(query.length &lt; 1){ list.innerHTML = ""; return; } try { const payload = await fetchJson(endpoint, { q: query }); list.innerHTML = (payload.items || []).map(item =&gt; ``).join(""); } catch(error) { list.innerHTML = ""; } }; const initAutocomplete = root =&gt; { root.querySelectorAll("[data-helpful-autocomplete],[data-airport-autocomplete]").forEach(input =&gt; { let timer = 0; input.addEventListener("input", () =&gt; { window.clearTimeout(timer); timer = window.setTimeout(() =&gt; fillSuggestions(input), 140); }); input.addEventListener("focus", () =&gt; fillSuggestions(input)); }); }; const itineraryTemplate = (root, index) =&gt; ` Let ${index}

  Nasledujúca destinácia   

 

 `; const collectItineraryStops = root =&gt; { const cards = [...root.querySelectorAll("[data-flight-card]")]; const stops = []; cards.forEach((card, index) =&gt; { if(index === 0){ const from = normalize(card.querySelector('input[name="from[]"]').value); const to = normalize(card.querySelector('input[name="to[]"]').value); if(from !== ""){ stops.push(from); } if(to !== ""){ stops.push(to); } return; } const next = normalize(card.querySelector('input[name="next[]"]').value); if(next !== ""){ stops.push(next); } }); return stops; }; const initItinerary = root =&gt; { const addBtn = root.querySelector("[data-add-flight]"); const form = root.querySelector("form"); const flights = root.querySelector("[data-flight-cards]"); const results = root.querySelector("[data-helpful-results]"); if(addBtn){ addBtn.addEventListener("click", () =&gt; { const count = flights.querySelectorAll("[data-flight-card]").length; if(count &gt;= 5){ addBtn.setAttribute("disabled", "disabled"); setStatus(root, "Môžete pridať najviac 5 letov.", "error"); return; } flights.insertAdjacentHTML("beforeend", itineraryTemplate(root, count + 1)); initAutocomplete(root); if(flights.querySelectorAll("[data-flight-card]").length &gt;= 5){ addBtn.setAttribute("disabled", "disabled"); } }); } form.addEventListener("submit", async event =&gt; { event.preventDefault(); const stops = collectItineraryStops(root); if(stops.length &lt; 2){ setStatus(root, "Vyplňte odlet a aspoň jednu destináciu.", "error"); results.innerHTML = renderEmpty("Na zobrazenie trasy potrebujeme aspoň odletové a príletové letisko."); return; } setStatus(root, "Načítavam dáta...", ""); setLoading(root, "Načítavam dáta..."); try { const payload = await fetchJson(root.getAttribute("data-endpoint"), { stops }); if(!payload.found || !payload.html){ results.innerHTML = renderEmpty("Skontrolujte názvy letísk alebo IATA kódy v airport CSV."); setStatus(root, "Trasu sa nepodarilo pripraviť.", "error"); return; } results.innerHTML = repairHtml(payload.html || ""); setStatus(root, "Trasa je pripravená.", "success"); if(typeof window.mojehoploRouteMapInit === "function"){ window.mojehoploRouteMapInit(); } } catch(error) { results.innerHTML = renderEmpty("Počas načítania trasy nastala chyba. Skúste to znova."); setStatus(root, "Počas načítania trasy nastala chyba.", "error"); } }); }; const initLookup = root =&gt; { const form = root.querySelector("form"); const results = root.querySelector("[data-helpful-results]"); const endpoint = root.getAttribute("data-endpoint"); const mode = root.getAttribute("data-mode"); form.addEventListener("submit", async event =&gt; { event.preventDefault(); const query = normalize(form.querySelector("[name='q']").value); if(!query){ setStatus(root, "Vyplňte vyhľadávacie pole.", "error"); results.innerHTML = renderEmpty("Najprv zadajte názov alebo kód."); return; } setStatus(root, "Načítavam dáta...", ""); setLoading(root, "Načítavam dáta..."); try { const payload = await fetchJson(endpoint, { q: query }); if(!payload.found || !payload.html){ results.innerHTML = renderEmpty( mode === "baggage" ? "Pre zadanú leteckú spoločnosť sme nenašli zhodu v aktuálnom zdroji." : "Pre zadanú krajinu sme nenašli zhodu v aktuálnom MZV zdroji." ); setStatus(root, "Zhodu sa nepodarilo nájsť.", "error"); return; } results.innerHTML = repairHtml(payload.html || ""); setStatus(root, "", ""); } catch(error) { clearResults(root); setStatus(root, "Počas načítania výsledku nastala chyba.", "error"); } }); }; window.mojehoploHelpfulToolsInit = function() { document.querySelectorAll("[data-mojehoplo-helpful-tool]").forEach(root =&gt; { if(root.dataset.helpfulReady === "1"){ return; } root.dataset.helpfulReady = "1"; initAutocomplete(root); if(root.getAttribute("data-mode") === "itinerary"){ initItinerary(root); } else { initLookup(root); } }); }; if(document.readyState === "loading"){ document.addEventListener("DOMContentLoaded", window.mojehoploHelpfulToolsInit, { once: true }); return; } window.mojehoploHelpfulToolsInit(); })(); ## Trasa itineráru

Po zadaní letov a potvrdení sa zobrazí trasa vrátane vizualizácie na mape.

 

  Let 1

  Odletové letisko    Príletové letisko   

 

 

 + Pridať ďalší let Zobraziť trasu 

Našepkávač letísk používa rovnakú databázu, akú už poznáte z ostatných častí hoplo.sk. Ďalšie lety sa pridávajú ako nadväzujúce destinácie v multi-city štýle.



 Po potvrdení zobrazíme pôvodný route map widget s mapou, počasím a informačnými kartami.

 

 

 

 





###    Informácie o batožine   





 

 

 

 

Batožinové pravidlá sa menia od spoločnosti k spoločnosti a hľadanie presných čísel v centimetroch a kilogramoch vie zabrať viac času ako samotné balenie kufra. Stačí zadať názov leteckej spoločnosti alebo jej kód a zobrazíme vám prehľadný súhrn: rozmery a váhu príručnej aj odbavenej batožiny, čo si môžete zobrať navyše, a poznámky, na ktoré sa oplatí dať pozor. Súčasťou je aj základný profil spoločnosti (sídlo, hlavné prestupné letiská, rok založenia) a hodnotenie spoľahlivosti údajov, keďže podmienky si aerolinky menia priebežne.

 

## Informácie o batožine

Vyhľadajte leteckú spoločnosť alebo kód - ukážeme vám aktuálny prehľad batožinových pravidiel.

 

    Letecká spoločnosť alebo kód   Hľadať 

Výsledok využíva rovnaké zobrazenie aj zdroj dát o batožine ako inde na hoplo.sk.



 

 

 

 





###    Informácie o vstupe do krajiny   





 

 

 

 

Pred každou cestou treba vedieť, či potrebujete vízum, aké doklady si zbaliť a či vás čakajú nejaké poplatky. Zadajte krajinu a dostanete štruktúrovaný prehľad podmienok vstupu spracovaný podľa údajov Ministerstva zahraničných vecí SR – víza, požiadavky na pas, očkovanie, poplatky aj povinné dokumenty na jednom mieste. Údaje sa snažíme pravidelne aktualizovať, no keďže sa podmienky môžu meniť aj v priebehu roka, vždy odporúčame overiť si ich ešte pred cestou priamo na stránkach MZV alebo veľvyslanectva danej krajiny.

 

## Informácie o vstupe do krajiny

Zadajte krajinu a zobrazíme podmienky priamo podľa údajov MZV SR.

 

    Krajina   Hľadať 

Zobrazené údaje sú spracované rovnakým spôsobom ako pri ostatných krajinách.



 

 

 

 

 

  

 

 





####    Svet cestovania sa mení rýchlejšie, ako to vieme sledovať – aerolinky si upravujú batožinové pravidlá, krajiny menia vízové podmienky, niekedy aj zo dňa na deň. Preto berte naše informácie ako dobrý štartovací bod, nie ako poslednú stanicu. Pred odchodom si vždy overte aktuálne podmienky priamo na webe leteckej spoločnosti a na stránkach MZV SR alebo veľvyslanectva danej krajiny. Pár minút navyše sa oplatí – radšej overené informácie ako nepríjemné prekvapenie na letisku alebo hranici.   





 

 

 

 





#####  [   Hoplo.sk   ](https://hoplo.sk)
