mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 10:42:57 +00:00
241 lines
6.8 KiB
Markdown
241 lines
6.8 KiB
Markdown
# Enhanced Map Implementation
|
|
|
|
## Overview
|
|
The map system has been significantly enhanced with professional styling options, club color integration, and improved flexibility.
|
|
|
|
## Features
|
|
|
|
### 🎨 Multiple Map Styles
|
|
The application now supports **11 professional map styles**, all from free, open-source providers:
|
|
|
|
#### Light & Minimal
|
|
- **Positron** - Clean light map, perfect for overlays and colored markers
|
|
- **Positron No Labels** - Minimal light map without labels
|
|
- **OpenStreetMap (Default)** - Standard OSM tiles
|
|
|
|
#### Dark Themes
|
|
- **Dark Matter** - Professional dark theme, great for night mode
|
|
- **Dark No Labels** - Dark map without text labels
|
|
|
|
#### Black & White
|
|
- **Toner (B&W)** - High contrast black and white, elegant and professional
|
|
- **Toner Lite (B&W)** - Subtle black and white style
|
|
|
|
#### Colorful Options
|
|
- **Voyager** - Balanced colors with good readability
|
|
- **Terrain** - Natural terrain visualization with topographic features
|
|
- **Watercolor** - Artistic watercolor style (unique look)
|
|
|
|
#### Satellite
|
|
- **Satellite** - Real satellite imagery from Esri
|
|
|
|
### 🎯 Club Color Integration
|
|
|
|
Maps now automatically integrate your club's colors:
|
|
|
|
1. **Custom Markers** - Map markers are generated with your primary club color
|
|
2. **Color Overlay** - Subtle color tint applied to maps using club colors (15% opacity)
|
|
3. **Consistent Branding** - Map markers match your club's visual identity
|
|
|
|
### 🎨 How It Works
|
|
|
|
#### Custom SVG Markers
|
|
- Dynamically generated markers with club primary color
|
|
- White center dot for visibility
|
|
- Drop shadow for depth
|
|
- Professional appearance
|
|
|
|
#### Color Overlay System
|
|
- Uses CSS blend modes (`multiply`) for natural color mixing
|
|
- 15% opacity ensures map remains readable
|
|
- Automatically applied when club colors are set
|
|
|
|
### 📍 Where Maps Appear
|
|
|
|
Maps with enhanced styling appear in:
|
|
- **Homepage** - Contact section (if enabled in settings)
|
|
- **Contact Page** - Location map with club colors
|
|
- **Events** - Event location maps with geocoding
|
|
- **Admin Preview** - Real-time preview in contact settings
|
|
|
|
### 🛠️ Admin Configuration
|
|
|
|
#### Location in Admin Panel
|
|
Navigate to: **Admin → Kontakty → Nastavení polohy**
|
|
|
|
#### Configuration Options
|
|
|
|
1. **Map Coordinates**
|
|
- Latitude/Longitude (manual entry or map link import)
|
|
- Import from Google Maps, Mapy.cz, or other providers
|
|
- Zoom level (1-20)
|
|
|
|
2. **Map Style Selection**
|
|
- Visual selector with descriptions
|
|
- Live preview with club colors
|
|
- Tips for best style choices
|
|
|
|
3. **Club Colors**
|
|
- Automatically pulled from general settings
|
|
- Shows color preview in selector
|
|
- Applied to all maps across the site
|
|
|
|
4. **Homepage Display**
|
|
- Toggle map visibility on homepage
|
|
- Full preview before publishing
|
|
|
|
### 📦 Technical Implementation
|
|
|
|
#### Files Modified
|
|
- `frontend/src/components/home/ContactMap.tsx` - Core map component
|
|
- `frontend/src/components/admin/MapStyleSelector.tsx` - New style selector UI
|
|
- `frontend/src/pages/admin/ContactsAdminPage.tsx` - Admin interface updates
|
|
- `frontend/src/components/home/ContactsSection.tsx` - Homepage integration
|
|
- `frontend/src/pages/ContactPage.tsx` - Contact page integration
|
|
|
|
#### Key Features
|
|
- **Dynamic Loading** - Leaflet loaded on-demand (no bloat)
|
|
- **Caching** - Map tiles are cached by browser
|
|
- **Responsive** - Mobile-friendly controls
|
|
- **Accessibility** - Keyboard navigation support
|
|
|
|
### 🎯 Style Recommendations
|
|
|
|
**For Clubs with Bold Colors:**
|
|
- Use Positron or Toner Lite as base
|
|
- Let your club colors shine through the overlay
|
|
|
|
**For Dark/Night Mode Sites:**
|
|
- Dark Matter or Dark No Labels
|
|
- Excellent contrast with light markers
|
|
|
|
**For Classic/Traditional Look:**
|
|
- Toner (B&W) for elegant, timeless appearance
|
|
- High contrast, professional
|
|
|
|
**For Modern/Vibrant Sites:**
|
|
- Voyager for balanced colors
|
|
- Watercolor for unique artistic touch
|
|
|
|
### 🔧 Customization
|
|
|
|
#### Adding New Styles
|
|
Edit `MAP_STYLES` in `ContactMap.tsx`:
|
|
|
|
```typescript
|
|
'your-style-key': {
|
|
name: 'Your Style Name',
|
|
url: 'https://tile-server.com/{z}/{x}/{y}.png',
|
|
attribution: '© Provider',
|
|
description: 'Style description'
|
|
}
|
|
```
|
|
|
|
#### Changing Color Overlay Opacity
|
|
In `ContactMap.tsx`, adjust this line:
|
|
```typescript
|
|
pane.style.opacity = '0.15'; // Change from 0.15 to your preference (0.0 - 1.0)
|
|
```
|
|
|
|
#### Custom Marker Colors
|
|
Markers automatically use `clubPrimaryColor` prop. To override:
|
|
```typescript
|
|
<ContactMap
|
|
clubPrimaryColor="#YOUR_COLOR"
|
|
// ... other props
|
|
/>
|
|
```
|
|
|
|
### 🌍 Open Source Map Providers
|
|
|
|
All map tiles are from free, open-source providers:
|
|
- **CartoDB** - Positron, Dark Matter, Voyager
|
|
- **Stadia Maps** - Toner, Terrain, Watercolor (Stamen designs)
|
|
- **OpenStreetMap** - Default OSM tiles
|
|
- **Esri** - Satellite imagery
|
|
|
|
No API keys required! All tiles are freely available.
|
|
|
|
### ✨ Best Practices
|
|
|
|
1. **Choose Style That Matches Your Brand**
|
|
- Light maps for colorful clubs
|
|
- Dark maps for professional/elegant sites
|
|
- B&W for timeless, clean look
|
|
|
|
2. **Test Visibility**
|
|
- Ensure markers are visible on your chosen style
|
|
- Check readability of labels
|
|
- Preview on mobile devices
|
|
|
|
3. **Color Harmony**
|
|
- Primary color should contrast with map style
|
|
- Use color wheel to find complementary colors
|
|
- Test with color overlay enabled
|
|
|
|
4. **Performance**
|
|
- Maps lazy-load automatically
|
|
- Tiles are cached by browser
|
|
- No performance impact until map is viewed
|
|
|
|
### 🎨 Example Configurations
|
|
|
|
#### Classic Football Club (Red/White)
|
|
```
|
|
Style: Toner Lite (B&W)
|
|
Primary Color: #e11d48 (red)
|
|
Secondary: #ffffff (white)
|
|
→ Red markers on clean B&W map
|
|
```
|
|
|
|
#### Modern Tech-Forward Club (Blue)
|
|
```
|
|
Style: Dark Matter
|
|
Primary Color: #3b82f6 (blue)
|
|
Secondary: #60a5fa (light blue)
|
|
→ Sleek dark map with bright blue markers
|
|
```
|
|
|
|
#### Traditional/Heritage Club (Green/Gold)
|
|
```
|
|
Style: Terrain
|
|
Primary Color: #16a34a (green)
|
|
Secondary: #fbbf24 (gold)
|
|
→ Natural terrain with club colors
|
|
```
|
|
|
|
### 🐛 Troubleshooting
|
|
|
|
**Map doesn't load:**
|
|
- Check browser console for errors
|
|
- Ensure coordinates are valid (-90 to 90 lat, -180 to 180 lng)
|
|
- Check internet connection (tiles loaded from external servers)
|
|
|
|
**Marker wrong color:**
|
|
- Verify club primary color is set in Settings → Vzhled
|
|
- Check color format (hex, rgb, or named colors)
|
|
|
|
**Map tiles not loading:**
|
|
- Some tile servers may be temporarily down
|
|
- Try different map style
|
|
- Check browser ad-blocker/privacy settings
|
|
|
|
**Color overlay too strong/weak:**
|
|
- Adjust opacity in ContactMap.tsx (see Customization section)
|
|
- Values: 0.05 (subtle) to 0.30 (strong)
|
|
|
|
### 📈 Future Enhancements
|
|
|
|
Potential additions:
|
|
- Multiple markers for multiple locations
|
|
- Custom marker icons (club logo)
|
|
- Drawing tools for catchment areas
|
|
- Route planning integration
|
|
- Cluster markers for many locations
|
|
|
|
---
|
|
|
|
**Implementation Date:** 2025-10-10
|
|
**Version:** 1.0
|
|
**Status:** ✅ Production Ready
|