Pedestrian Bridge
About This Attraction
The Langkawi Sky Bridge is a remarkable curved pedestrian bridge located in Langkawi, Malaysia. It stretches 125 meters across the lush mountains and offers breathtaking views of the surrounding area. Built at an altitude of 660 meters above sea level, it provides visitors with a unique perspective of the Langkawi archipelago. The bridge is supported by a single pylon and features two triangular platforms where visitors can pause to enjoy the scenery.
To access the Langkawi Sky Bridge, visitors typically take the Langkawi Cable Car to the top of Gunung Mat Cincang. The bridge is open from 10:00 AM to 8:00 PM on weekdays and from 9:30 AM to 8:00 PM on weekends, which are the Langkawi Sky Bridge opening hours. It is advisable to check local weather conditions before planning a visit, as operations may be affected by adverse weather. Comfortable footwear is recommended due to the incline and length of the walk.
Location Details
Address
Gunung Mat Cincang, Langkawi, Kedah, Malaysia
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
RM 85
Child
RM 65
Student
RM 75
Senior
RM 75
Opening Hours & Booking
Open
Days
Daily
Hours
10:00 AM - 6:00 PM
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
Pantai Cenang is a popular beach destination located on the island of Langkawi, Malaysia. Known…
Learn More
Kilim Geoforest Park in Langkawi is known for its unique geological formations and rich biodiversity.…
Learn More
Sunrise Beach in Koh Lipe is a popular destination known for its stunning sunrises and…
Learn More
Scenic viewpoint offering panoramic views of Koh Lipe and surrounding waters.
Scenic viewpoint offering panoramic views of Koh Lipe and surrounding islands.
A serene beach known for its clear waters and vibrant marine life, ideal for snorkeling…
Secluded beach with crystal-clear waters and white sand.
A serene beach with clear waters, ideal for relaxation and snorkeling.
A serene and secluded beach with clear waters and soft sand.
A vibrant street with shops, restaurants, and bars.
";
}
// 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';
}
});
});
}
});