document.addEventListener("DOMContentLoaded", () => { // Check WebP support const canvas = document.createElement('canvas'); const supportsWebP = !!(canvas.getContext && canvas.getContext('2d')) && canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0; const frameFormat = supportsWebP ? 'webp' : 'jpg'; const frameDir = frameFormat === 'webp' ? '/frames-webp' : '/frames'; // Frame Loading with Lazy Loading const frames = []; const totalFrames = 85; const priorityFrames = 10; const preloadAhead = 5; let loadedFrames = 0; function loadFramesProgressively() { for (let i = 0; i < Math.min(priorityFrames, totalFrames); i++) { const img = new Image(); const frameNumber = String(i + 1).padStart(4, '0'); img.src = `${frameDir}/frame_${frameNumber}.${frameFormat}`; img.onload = () => { loadedFrames++; if (i === lastFrameIndex) forceDrawFrame(i); }; img.onerror = () => { if (frameFormat === 'webp') { const jpgImg = new Image(); jpgImg.src = `/frames/frame_${frameNumber}.jpg`; jpgImg.onload = () => { frames[i] = jpgImg; loadedFrames++; }; frames[i] = jpgImg; } }; frames[i] = img; } const loadNext = (currentIndex) => { const startIndex = Math.max(0, currentIndex - 2); const endIndex = Math.min(startIndex + preloadAhead + 4, totalFrames); for (let i = startIndex; i < endIndex; i++) { if (!frames[i]) { // mark as loading immediately frames[i] = { complete: false, src: '' }; const img = new Image(); const frameNumber = String(i + 1).padStart(4, '0'); img.src = `${frameDir}/frame_${frameNumber}.${frameFormat}`; img.onload = () => { loadedFrames++; frames[i] = img; if (i === lastFrameIndex) forceDrawFrame(i); }; img.onerror = () => { if (frameFormat === 'webp') { const jpgImg = new Image(); jpgImg.src = `/frames/frame_${frameNumber}.jpg`; jpgImg.onload = () => { frames[i] = jpgImg; if (i === lastFrameIndex) forceDrawFrame(i); }; } }; } } }; return loadNext; } const loadFramesAround = loadFramesProgressively(); const scrollAnimationBlock = document.getElementById('scroll-animation'); // Video Canvas const videoCanvas = document.getElementById('video-canvas'); if (!videoCanvas) return; const vCtx = videoCanvas.getContext('2d'); let lastFrameIndex = -1; function resizeVideoCanvas() { const dpr = window.devicePixelRatio || 1; const maxWidth = Math.min(window.innerWidth, 1920); const maxHeight = window.innerHeight * 0.85; const scale = Math.min(maxWidth / 1920, maxHeight / 1080); videoCanvas.width = 1920 * dpr * scale; videoCanvas.height = 1080 * dpr * scale; videoCanvas.style.width = (1920 * scale) + 'px'; videoCanvas.style.height = (1080 * scale) + 'px'; vCtx.scale(dpr, dpr); lastFrameIndex = -1; } function forceDrawFrame(frameIndex) { const img = frames[frameIndex]; if (img && img.complete) { vCtx.clearRect(0, 0, videoCanvas.width, videoCanvas.height); vCtx.drawImage(img, 0, 0, videoCanvas.width / window.devicePixelRatio, videoCanvas.height / window.devicePixelRatio); } } function drawFrame(frameIndex) { if (frameIndex === lastFrameIndex) return; lastFrameIndex = frameIndex; forceDrawFrame(frameIndex); } resizeVideoCanvas(); window.addEventListener('resize', resizeVideoCanvas); // Scroll Animation Logic const annotationCards = document.querySelectorAll('.annotation-card'); function updateAnnotationCards(scrollFraction) { annotationCards.forEach(card => { const show = parseFloat(card.dataset.show); const hide = parseFloat(card.dataset.hide); if (scrollFraction >= show && scrollFraction < hide) { card.classList.add('visible'); } else { card.classList.remove('visible'); } }); } function updateScroll() { if (!scrollAnimationBlock) return; const rect = scrollAnimationBlock.getBoundingClientRect(); const containerTop = rect.top; const containerHeight = scrollAnimationBlock.offsetHeight; const windowHeight = window.innerHeight; let scrollFraction = 0; if (containerHeight > windowHeight) { const scrollableHeight = containerHeight - windowHeight; const scrolled = Math.max(0, -containerTop); scrollFraction = Math.max(0, Math.min(1, scrolled / scrollableHeight)); } const frameIndex = Math.min(totalFrames - 1, Math.floor(scrollFraction * totalFrames)); drawFrame(frameIndex); updateAnnotationCards(scrollFraction); // Fade out canvas and hide annotations when animation ends const canvasWrapper = document.querySelector('.canvas-sticky-wrapper'); if (canvasWrapper) { if (scrollFraction >= 0.92) { // Hide completely when animation ends canvasWrapper.style.display = 'none'; } else { canvasWrapper.style.display = 'flex'; } } // Trigger lazy loads around current index const currentIndex = Math.floor(scrollFraction * totalFrames); loadFramesAround(currentIndex); } let isScrolling = false; window.addEventListener('scroll', () => { if (!isScrolling) { isScrolling = true; requestAnimationFrame(() => { updateScroll(); isScrolling = false; }); } }, { passive: true }); // Initial draw setTimeout(() => { updateScroll(); forceDrawFrame(0); }, 100); });
Angebot & Buchung
Schöner Hanioti Hafen mit bunten Booten und Promenade mit Cafés und Restaurants

Hanioti: Familienfreundlicher Urlaubsort mit lebendiger Hafenpromenade

Hanioti bietet die perfekte Balance zwischen lebhaftem Urlaubstrubel und traditionellem griechischem Charme. An der Ostküste der Kassandra-Halbinsel gelegen, bietet dieser Urlaubsort einen der schönsten Sandstrände Chalkidakis, kristallklares Wasser und eine lebendige Atmosphäre, die Besucher Jahr für Jahr zurückkehren lässt. Die 85-Kilometer-Strecke vom Flughafen Thessaloniki dauert etwa 55 Minuten.

Hanioti Transferpreise

ServicePassagierePreisFahrzeit
Standard Limousine1-3 Passagiere€7055 Minuten
Executive Van4-8 Passagiere€9055 Minuten
Minibus9-14 Passagiere€13055 Minuten

Warum Reisende unseren Hanioti Transfer wählen

Die Flugüberwachung eliminiert Ankunftsstress. Wenn Ihr Flug aus London, München oder Warschau zwei Stunden Verspätung hat, sind wir bereits informiert — Ihr Fahrer passt automatisch an, ohne dass Sie anrufen oder Nachrichten senden müssen. Treffen Sie Ihren Chauffeur in der Ankunftshalle, erkennbar am persönlichen Schild mit Ihrem Namen, und wir übernehmen das Gepäck.

Hanioti bietet einige besondere navigationsherausforderungen. Die fußgängerzone im Zentrum bedeutet, dass Fahrzeuge nur begrenzt Zutritt haben — aber basierend auf tausenden Zustellungen wissen wir genau, wie nahe wir an Ihr spezifisches Hotel oder Apartment herankommen. Vom luxuriösen Hanioti Grand Resort bis zu privaten Villen am Stadtrand — wir bringen Sie so bequem wie möglich zum Ziel.

Über Hanioti Urlaubsort

Hanioti (auch Haniotis geschrieben) gehört zu den kosmopolitischsten Urlaubsorten Chalkidakis bei bewährter griechischer Gastfreundschaft. Das Zentrum besticht durch einen landschaftlich gestalteten Platz mit Cafés, traditionellen Tavernen mit frischem Meeresfrüchte und Bars, die nach Sonnenuntergang lebendig werden. Alles ist fußläufig erreichbar — vom Strand bis zum Supermarkt bis zur Bäckerei — ideal für Familien, die im Urlaub nicht Auto fahren möchten.

Der Strand verdient besonderes Lob — ein breiter Streifen goldenen Sandes, der sanft in das ruhige, flache Wasser abfällt, perfekt für Kinder. Wassersport, Strandvolleyball und zahlreichen Sonnenliegen sorgen für aktive Tagesatmosphäre. Abends füllt sich die Promenade mit spazierenden Familien, spielenden Kindern und Paaren, die den Meerblick genießen. Es ist lebhaft, aber niemals überwältigend.

Unser Buchungs- und Transferprozess

Schritt 1 — Online-Buchung: Geben Sie Flugdetails, Hanioti Zieladresse, Passagieranzahl und Gepäckinformationen ein. Erhalten Sie sofortige Bestätigung per E-Mail und SMS mit allen Transferdetails.

Schritt 2 — Meet & Greet: Ihr professioneller Fahrer überwacht Ihren Flug in Echtzeit und wartet in der Ankunftshalle. Wir erfassen Verspätungen automatisch — ohne Stress, ohne Warten, ohne Aufpreis.

Schritt 3 — Komfortable Fahrt: Setteln Sie sich in unseren modernen Mercedes mit Klimaanlage während wir die 85-Kilometer-Route navigieren.

Zusätzliche Services für Hanioti Transfers

Unser Fazit

Unser Hanioti Flughafen Transfer zum Festpreis bietet professionellen Service zu wettbewerbsfähigen Preisen. Bei 70€ für bis zu drei Passagiere ist unser Preis mit lokalen Taxametern vergleichbar, beinhaltet aber Flugüberwachung, Meet-and-Greet-Service und garantierte moderne Mercedes-Fahrzeuge. Die 55-minütige Fahrt vom Flughafen zum Paradies verstreicht schnell. Buchen Sie Ihren Hanioti Transfer online oder rufen Sie +306942794956 an.

Telegram Telegram
WhatsApp WhatsApp
Viber Viber
SMS SMS
Phone Phone