Beach/Natural Attraction
About This Attraction
Maya Bay, located in the Phi Phi Islands of Thailand, is a popular tourist spot known for its stunning natural beauty. This bay is part of the Hat Noppharat Thara-Mu Ko Phi Phi National Park and gained international fame after being featured in the movie The Beach. Its crystal-clear waters and white sandy beaches attract visitors from around the world. Due to its popularity, Maya Bay travel information often highlights the need for sustainable tourism practices to protect its fragile ecosystem.
Access to Maya Bay was restricted for several years to allow for environmental recovery but has since reopened with specific guidelines for tourists. Visitors can enjoy activities such as snorkeling, which offers a glimpse into the diverse marine life. However, overnight stays are not permitted, and there are regulations in place to limit the number of tourists at any given time. These measures are aimed at preserving the natural beauty of this iconic destination while allowing people to enjoy its unique features responsibly.
Location Details
Address
Maya Bay, Ko Phi Phi Lee, Krabi, Thailand
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
Not applicable due to closure
Child
Not applicable due to closure
Student
Not applicable due to closure
Senior
Not applicable due to closure
Opening Hours & Booking
Open
Days
Temporarily Closed
Hours
N/A
Seasonality
N/A
Booking
Booking Required?
Yes
Book Your Visit
*Prices may vary. Check official website for the most up-to-date information.
Nearby Attractions
Scenic emerald lagoon surrounded by limestone cliffs.
Scenic bay known for snorkeling and clear waters.
Viking Cave is a popular attraction located on the northeastern side of Phi Phi Leh,…
Learn More
Secluded beach with clear waters and scenic views.
A picturesque sea cave with clear waters, popular for snorkeling and kayaking.
Secluded beach with clear waters and white sand, ideal for relaxation.
A secluded bay known for snorkeling and stunning limestone cliffs.
A secluded beach known for its clear waters and tranquil atmosphere.
A stunning beach with clear waters, ideal for swimming and snorkeling.
A small, picturesque beach known for its wild monkeys.
";
}
// Initialize modal controls
const initModalControls = function() {
console.log('Initializing modal controls');
const modal = document.getElementById('attraction-modal');
const closeBtn = document.querySelector('.attraction-modal-close');
if (closeBtn) {
closeBtn.addEventListener('click', function() {
modal.style.display = 'none';
document.body.style.overflow = '';
});
}
window.addEventListener('click', function(event) {
if (event.target === modal) {
modal.style.display = 'none';
document.body.style.overflow = '';
}
});
// Make attraction cards clickable
const attractionCards = document.querySelectorAll('.attraction-card');
console.log('Found ' + attractionCards.length + ' attraction cards');
attractionCards.forEach(card => {
card.addEventListener('click', function(e) {
openModalWithCardData(this);
});
});
};
// Function to open modal with card data
const openModalWithCardData = function(card) {
// Get data from hidden div
const data = card.querySelector('.attraction-full-data');
if (!data) {
console.error('No attraction data found in card');
return;
}
const modal = document.getElementById('attraction-modal');
if (!modal) {
console.error('Modal element still not found after creation attempt');
return;
}
// Helper function to safely get element text
function getElementText(selector) {
const element = data.querySelector(selector);
return element ? element.textContent : '';
}
try {
// Basic Info
document.getElementById('attraction-modal-title').textContent = getElementText('.attraction-name');
document.getElementById('attraction-modal-type').textContent = getElementText('.attraction-type-full');
document.getElementById('attraction-modal-description').textContent = getElementText('.attraction-description-full');
// Reset all containers to hidden
['attraction-modal-hours-container', 'attraction-modal-price-container',
'attraction-modal-address-container', 'attraction-modal-image-container'].forEach(id => {
const container = document.getElementById(id);
if (container) container.style.display = 'none';
});
// Rating
const ratingText = getElementText('.attraction-rating-full');
if (ratingText) {
const ratingValue = parseFloat(ratingText);
if (!isNaN(ratingValue)) {
const ratingValueEl = document.getElementById('attraction-modal-rating-value');
const ratingFillEl = document.getElementById('attraction-modal-rating-fill');
if (ratingValueEl) ratingValueEl.textContent = ratingValue.toFixed(1) + '/10';
if (ratingFillEl) ratingFillEl.style.width = (ratingValue * 10) + '%';
}
}
// Show the modal
modal.style.display = 'block';
document.body.style.overflow = 'hidden'; // Prevent background scrolling
console.log('Modal opened successfully');
} catch (error) {
console.error('Error opening modal:', error);
}
};
// Try to create the modal
const created = createModal();
console.log('Modal created:', created);
// If not created (already exists), initialize the controls
if (!created) {
initModalControls();
}
// Also initialize distance toggle
const distanceToggle = document.getElementById('distance-unit-toggle');
if (distanceToggle) {
distanceToggle.addEventListener('change', function() {
const showKm = this.checked;
// Update toggle labels
const labels = document.querySelectorAll('.toggle-label');
if (labels.length >= 2) {
labels[0].style.opacity = showKm ? '0.5' : '1';
labels[1].style.opacity = showKm ? '1' : '0.5';
}
// Update all distance displays
document.querySelectorAll('.nearby-attraction-card').forEach(card => {
const kmEl = card.querySelector('.distance-km');
const miEl = card.querySelector('.distance-mi');
if (kmEl && miEl) {
kmEl.style.display = showKm ? 'inline' : 'none';
miEl.style.display = showKm ? 'none' : 'inline';
}
});
});
}
});