Neighborhood
About This Attraction
Cerro Alegre in Valparaíso, Chile, is a picturesque neighborhood known for its colorful houses and artistic atmosphere. Visitors can explore its vibrant streets filled with murals and street art, which provide a unique backdrop for photography enthusiasts. The area also features charming cafes and shops where you can enjoy local cuisine or purchase handmade crafts. While there are no specific Cerro Alegre opening hours, most attractions, cafes, and shops follow typical business hours, generally opening in the late morning and closing by early evening.
The neighborhood is easily accessible by foot or via the citys iconic funiculars, making it convenient for tourists to navigate. Cerro Alegre offers stunning views of the Pacific Ocean from various viewpoints scattered throughout the area. Additionally, the neighborhoods proximity to other popular attractions in Valparaíso makes it an ideal starting point for exploring the city. When planning your visit, check local guides or maps for specific locations and operating times of individual businesses to ensure a smooth experience.
Location Details
Address
Cerro Alegre, Valparaíso, Chile
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
Free
Child
Free
Student
Free
Senior
Free
Opening Hours & Booking
Open
Days
Daily
Hours
Open 24 hours
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
The Ascensor Artillería is one of the iconic funiculars in Valparaíso, Chile, offering panoramic views…
Learn More
La Sebastiana is a museum located in Valparaíso, Chile, that was once the home of…
Learn More
Nahuel Huapi National Park, located in Bariloche, Argentina, is the oldest national park in the…
Learn More
Circuito Chico is a popular tourist route near San Carlos de Bariloche, Argentina, offering stunning…
Learn More
Cerro Catedral, located in San Carlos de Bariloche, Argentina, is one of the most popular…
Learn More
Cafayate is a renowned wine-producing region in Argentina, situated in the Calchaquí Valley, known for…
Learn More
The Museo de la Vid y el Vino in Cafayate, Argentina, is an engaging destination…
Learn More
Quebrada de las Conchas is a stunning natural reserve located near Cafayate in Argentinas Salta…
Learn More
Palermo is a prominent neighborhood in Buenos Aires, known for its expansive parks and vibrant…
Learn More
Recoleta Cemetery in Buenos Aires is one of the citys most famous landmarks, known for…
Learn More
";
}
// 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';
}
});
});
}
});