Ferienwohnungen 
an der Costa Blanca

Ferienwohnungen
an der Costa Blanca

Zentral gelegen, praktisch und mit allem ausgestattet, was Sie brauchen, um sich frei zu bewegen. Verwaltung durch diejenigen, die die Gegend kennen wie ihre Westentasche.

Unterkünfte suchen
Reiseziel

Möchten Sie zu einem bestimmten Unterküft gehen?

Wann
Schließen
Data
Flexibele data
Es tut uns leid, einige der ausgewählten Termine sind nicht mehr verfügbar. Bitte versuchen Sie es mit anderen Terminen oder schauen Sie sich unsere ähnlichen Unterkünfte an.
Ok
Es tut uns leid, einige der ausgewählten Termine sind nicht mehr verfügbar. Bitte versuchen Sie es mit anderen Terminen oder schauen Sie sich unsere ähnlichen Unterkünfte an.
Ok
Wer kommt mit Ihnen?
Erwachsene
Erwachsene 13 Jahre oder älter
Kinder
Kinder Von 2 bis 12 Jahre
0
Haustiere
Haustiere
Schließen
Ferienwohnung

Calpe / Calp

Wohnung zur Miete in der ersten Linie von Calpe, CANTAL

Personen 6 Pers. Betten 3 Zi. Sterne 4.71

Ab 154,00 € /Nacht

Ferienwohnung

Moraira

Wohnung zur Miete in Moraira, CAP DOR

Personen 6 Pers. Betten 3 Zi. Strand 0,2 km Sterne 4.66

Ab 110,00 € /Nacht

Ferienwohnung

Calpe / Calp

Ferienwohnung zu vermieten in Calpe PARAISOMAR

Personen 6 Pers. Betten 3 Zi. Strand 0,1 km Sterne 5

Ab 147,00 € /Nacht

Ferienwohnung

Calpe / Calp

Ferienhaus in Calpe JOYA

Personen 6 Pers. Betten 3 Zi. Strand 0,5 km Sterne 4.73

Ab 154,00 € /Nacht

Ferienwohnung

Calpe / Calp

TRAMONTANA, Wohnung vor dem Levante Strand in Calp, Alicante

Personen 6 Pers. Betten 3 Zi. Strand 0,1 km Sterne 4.55

Ab 123,00 € /Nacht

Ferienwohnung

Calpe / Calp

Ferienwohnung zur Miete direkt am Meer in Calpe, EVOLUTION

Personen 4 Pers. Betten 2 Zi. Strand 0,2 km Sterne 5

Ab 232,00 € /Nacht

Ferienwohnung

Moraira

Ferienwohnung in Moraira, Castell

Personen 4 Pers. Betten 2 Zi. Strand 0,3 km

Ab 138,00 € /Nacht

Ferienwohnung

Moraira

Wohnung zur Miete in El Portet, BELLISSIMO für 6 pax

Personen 6 Pers. Betten 3 Zi. Strand 1,5 km Sterne 4.4

Ab 120,00 € /Nacht

Ferienwohnung

Moraira

MARJALETA, Schönes Appartement im Zentrum von Moraira für 4 pax kostenloses Wifi.

Personen 4 Pers. Betten 2 Zi. Strand 0,8 km Sterne 4.61

Ab 94,00 € /Nacht

Ferienwohnung

Calpe / Calp

TOPACIO IV, schöne Wohnung am Strand Levante de Calp, Alicante

Personen 6 Pers. Betten 2 Zi. Strand 0,1 km Sterne 4.64

Ab 79,00 € /Nacht

Ferienwohnung

Calpe / Calp

Paraiso Mar Wohnung am Strand von Calpe, TROND

Personen 5 Pers. Betten 2 Zi. Strand 0,1 km Sterne 4.64

Ab 106,00 € /Nacht

Ferienwohnung

Calpe / Calp

Wohnung zur Miete in Calpe, BRIGITTE

Personen 4 Pers. Betten 2 Zi. Strand 0,3 km Sterne 4.59

Ab 80,00 € /Nacht

link.href === href); if (existing) { resolve(); return; } const link = document.createElement('link'); link.rel = 'stylesheet'; link.href = href; link.onload = resolve; link.onerror = reject; document.head.appendChild(link); }); }, highlightMarker(accommodationId) { // Primero limpiar todos los marcadores para evitar estados inconsistentes this.markers.forEach(m => { const el = m.getElement(); const priceEl = el.querySelector('.simple-price-marker'); if (priceEl) { priceEl.classList.remove('highlighted'); } // Restaurar z-index original if (el.dataset.originalZindex !== undefined) { el.style.zIndex = el.dataset.originalZindex; } else { el.style.zIndex = ''; } el.classList.remove('marker-highlighted'); }); // Ahora destacar el marcador específico const marker = this.markers.find(m => { const el = m.getElement(); return el && String(el.getAttribute('data-accommodation-id')) === String(accommodationId); }); if (marker) { const el = marker.getElement(); const priceEl = el.querySelector('.simple-price-marker'); if (priceEl) { priceEl.classList.add('highlighted'); } // Guardar z-index original si no está guardado if (!el.dataset.originalZindex) { el.dataset.originalZindex = el.style.zIndex || ''; } el.style.zIndex = '9999'; el.classList.add('marker-highlighted'); // Mover la cámara del mapa hasta el marcador manteniendo el zoom actual const lngLat = marker.getLngLat(); this.map.flyTo({ center: [lngLat.lng, lngLat.lat], duration: 1000, // Duración de la animación en ms essential: true // Esta animación es considerada esencial }); } }, unhighlightMarker(accommodationId) { const marker = this.markers.find(m => { const el = m.getElement(); return el && String(el.getAttribute('data-accommodation-id')) === String(accommodationId); }); if (marker) { const el = marker.getElement(); const priceEl = el.querySelector('.simple-price-marker'); if (priceEl) { // Limpiar todas las clases relacionadas con el estado de hover priceEl.classList.remove('highlighted'); // También limpiar cualquier estado de hover nativo que pueda haber quedado priceEl.classList.remove('show-price'); // Solo restaurar el texto si no está en estado clicked if (!priceEl.classList.contains('clicked')) { // Para marcadores con precio oculto, limpiar el texto if (priceEl.classList.contains('hidden-price')) { priceEl.textContent = ''; } } } // Restaurar z-index original if (el.dataset.originalZindex !== undefined) { el.style.zIndex = el.dataset.originalZindex; } else { el.style.zIndex = ''; } el.classList.remove('marker-highlighted'); } }, updateMarkers(accommodations) { // Verificar que el mapa esté inicializado if (!this.map || !this.mapInitialized) { return; } // Limpiar marcadores existentes this.markers.forEach(marker => marker.remove()); this.markers = []; accommodations.forEach(accommodation => { const lat = accommodation.lat; const lng = accommodation.lng; const price = accommodation.totalPrice; const shouldDisplayPrice = accommodation.display === true; const el = document.createElement('div'); // Aplicar clase condicional basada en la propiedad display const markerClass = shouldDisplayPrice ? 'simple-price-marker' : 'simple-price-marker hidden-price'; const displayText = shouldDisplayPrice ? price : ''; el.innerHTML = `
${displayText}
`; try { // Usar la URL ya construida desde PHP que incluye todos los parámetros necesarios const accommodationUrl = accommodation.url; // Crear el popup const fromLabel = 'Von'; const popupContent = document.createElement('div'); popupContent.className = 'card card--map'; const link = document.createElement('a'); link.href = accommodationUrl; link.className = 'card__link'; popupContent.appendChild(link); if (accommodation.picture) { const img = document.createElement('img'); img.src = accommodation.picture; img.className = 'card__image'; img.alt = accommodation.name || 'Alojamiento'; img.addEventListener('error', () => { img.style.display = 'none'; }); popupContent.appendChild(img); } const content = document.createElement('div'); content.className = 'card__content'; const title = document.createElement('h3'); title.className = 'card__title'; title.textContent = accommodation.name || 'Alojamiento'; content.appendChild(title); const priceWrap = document.createElement('div'); priceWrap.className = 'card__price'; priceWrap.appendChild(document.createTextNode(fromLabel + ' ')); const priceMoney = document.createElement('span'); priceMoney.className = 'card__price-money'; priceMoney.textContent = price; priceWrap.appendChild(priceMoney); priceWrap.appendChild(document.createTextNode(' ' + (accommodation.priceSuffix || ''))); content.appendChild(priceWrap); popupContent.appendChild(content); const popup = new mapboxgl.Popup({ offset: 45, closeButton: true }); if (typeof popup.setDOMContent === 'function') { popup.setDOMContent(popupContent); } else { popup.setHTML(popupContent.outerHTML); } // Crear el marcador const marker = new mapboxgl.Marker(el) .setLngLat([lng, lat]) .setPopup(popup) .addTo(this.map); // Asignar el atributo al contenedor real del marker const markerElement = marker.getElement(); markerElement.setAttribute('data-accommodation-id', accommodation.id); // Añadir listeners para hover y click const priceEl = el.querySelector('.simple-price-marker'); if (priceEl) { // Funcionalidad estándar de hover para todos los marcadores priceEl.addEventListener('mouseenter', () => { markerElement.dataset.originalZindex = markerElement.style.zIndex || ''; markerElement.style.zIndex = '99999'; markerElement.classList.add('marker-highlighted'); }); priceEl.addEventListener('mouseleave', () => { markerElement.style.zIndex = markerElement.dataset.originalZindex || ''; markerElement.classList.remove('marker-highlighted'); }); // Funcionalidad especial para marcadores con precio oculto if (!shouldDisplayPrice) { // Mostrar precio al hacer hover priceEl.addEventListener('mouseenter', () => { priceEl.classList.add('show-price'); priceEl.textContent = price; }); priceEl.addEventListener('mouseleave', () => { if (!priceEl.classList.contains('clicked')) { priceEl.classList.remove('show-price'); priceEl.textContent = ''; } }); // Manejar click en marcadores ocultos priceEl.addEventListener('click', (e) => { // No prevenir la propagación para permitir que el popup se abra // Remover clase clicked de todos los otros marcadores this.markers.forEach(otherMarker => { const otherPriceEl = otherMarker.getElement().querySelector('.simple-price-marker'); if (otherPriceEl && otherPriceEl !== priceEl) { otherPriceEl.classList.remove('clicked', 'show-price'); otherPriceEl.textContent = ''; } }); // Toggle del estado clicked en el marcador actual if (priceEl.classList.contains('clicked')) { priceEl.classList.remove('clicked', 'show-price'); priceEl.textContent = ''; } else { priceEl.classList.add('clicked', 'show-price'); priceEl.textContent = price; } }); } } this.markers.push(marker); } catch (e) { console.error('Error creating marker element:', e); } }); // Solo ajustar bounds automáticamente si: // 1. Hay marcadores // 2. No ha habido interacción del usuario // 3. Es la primera carga (no hay centro inicial establecido por alojamientos) if (this.markers.length > 0 && !this.userAct) { const bounds = new mapboxgl.LngLatBounds(); this.markers.forEach(marker => bounds.extend(marker.getLngLat())); // Solo hacer fitBounds si no hay un alojamiento específico como centro inicial const hasSpecificCenter = this.accommodations && this.accommodations.length > 0 && this.accommodations[0].lat && this.accommodations[0].lng && this.accommodations[0].lat !== 0 && this.accommodations[0].lng !== 0; if (!hasSpecificCenter) { this.map.fitBounds(bounds, { padding: 100, maxZoom: 15 }); } } } }">
Karte wird aktualisiert...
Filtros Filter 1 Mapa Karte Listado Liste

Reiseziele an der Costa Blanca für Ihren nächsten Urlaub

Benissa
Benissa

Benissa

Calpe / Calp
Calpe / Calp

Calpe / Calp

Moraira
Moraira

Moraira

Benitatxell
Benitatxell

Benitatxell

Entdecken Sie weitere Unterkünfte

Jede Reise erfordert etwas anderes. Finde deine ideale Unterkunft, ohne auf etwas verzichten zu müssen.

Zuverlässige Unterkünfte zu 100 %

Registriert beim Tourismusverband mit Nr. EGVT-183A, geprüft und lokal.
Du weißt, wo du ankommst und wer auf dich wartet!

Registriert beim Tourismusverband mit Nr. EGVT-183A, geprüft und lokal. Du weißt, wo du ankommst und wer auf dich wartet!

Kostenlose Stornierung

Wir wissen, dass sich die Pläne ändern können.
Hier kannst du kostenlos und ohne versteckte Bedingungen stornieren.

Wir wissen, dass sich die Pläne ändern können. Hier kannst du kostenlos und ohne versteckte Bedingungen stornieren.

Reservierung ohne Kaution für Schäden

Das Vertrauen steht an erster Stelle, deshalb blockieren wir kein Geld auf Ihrer Karte und verlangen keine Vorauszahlungen.

Das Vertrauen steht an erster Stelle, deshalb blockieren wir kein Geld auf Ihrer Karte und verlangen keine Vorauszahlungen.