A desktop application built with Tauri + Vue 3 + TypeScript for merging multiple tile map folders.
- 📁 Multi-folder Merging - Add multiple tile folders and merge them in order
- 🖼️ Smart Overlay - Tiles at the same position are automatically alpha-blended
- 🗺️ Live Preview - Built-in map preview with Amap satellite basemap support
- 📍 Coordinate Navigation - Quick jump by entering coordinates, click map to get location
- ⚡ High Performance - Rust backend + Rayon parallel processing for fast merging
- 💻 Cross-platform - Supports macOS and Windows
# Install frontend dependencies
npm install
# Install Tauri CLI (if not installed)
npm install -g @tauri-apps/clinpm run tauri dev# macOS
npm run build:mac
# Windows (cross-compile on macOS, or build on Windows)
npm run build:win- Add Folders - Click "Add Folder" to select directories containing tiles
- Adjust Order - Use ⬆️⬇️ buttons to adjust merge order (folders later in the list overlay on top)
- Select Output Directory - Set the save location for merged results
- Start Merge - Click "Start Merge" and wait for completion
- Preview Results - After merging, click "Preview Results" to view on the map
- New Task - To start a new merge task, click "New Task" in the top left
Tile folders should contain subdirectories named by zoom level (XYZ format):
⚠️ Important: Only PNG format tile files are supported, JPG, WebP and other formats are not supported.
tile-folder/
├── {z}/ ← Zoom level
│ ├── {x}/ ← X coordinate (column)
│ │ ├── {y}.png ← Y coordinate (row)
Example: 10/827/373.png
Represents tile at zoom level 10, X coordinate 827, Y coordinate 373
For each tile position (z/x/y), the program processes as follows:
- First occurrence: Directly copied to output directory
- Subsequent occurrences: If tile exists at that position in output, performs alpha blending overlay
The program performs per-pixel transparency blending:
new_pixel = top_pixel × α + bottom_pixel × (1 - α)
- α = 1 (fully opaque): Completely covers bottom layer
- 0 < α < 1 (semi-transparent): Blends with bottom layer for transition effect
- α = 0 (fully transparent): Does not affect bottom layer
Processed in order from top to bottom of the folder list:
- Folders processed first serve as the "bottom layer"
- Folders processed later "overlay" on top
| Action | Description |
|---|---|
| Add Folder | Select tile directory, auto-scan tile count |
| Preview 👁️ | View this folder's tiles on the map |
| Move Up/Down ⬆️⬇️ | Adjust merge order |
| Remove ❌ | Remove from list |
| Feature | Description |
|---|---|
| Location Jump | Enter coordinates and click jump button |
| Zoom Control | Click zoom in/out buttons or use mouse wheel |
| Get Coordinates | Click anywhere on map to get coordinates |
| Basemap Toggle | Turn off satellite basemap to view tiles only |
| Shortcut | Function |
|---|---|
| F12 | Open developer tools |
| Enter | Quick jump when in coordinate input field |
Q: Why can't I see tiles in preview?
A: Please check:
- Whether tile coordinates correspond to current map position
- Whether zoom level matches current zoom level
- Try turning off satellite basemap to view pure tile effect
Q: Some tiles are missing after merge?
A: Ensure all source folders have correct directory structure in z/x/y.png format.
Q: How to control overlay effect?
A: By adjusting folder order. Folders later in the list will overlay on top.
tile-merge-app/
├── src/ # Vue frontend
│ ├── api/ # Tauri command call wrappers
│ ├── components/ # Vue components
│ ├── composables/ # Vue Composables
│ └── types.ts # TypeScript type definitions
│
└── src-tauri/ # Rust backend
└── src/
├── lib.rs # Tauri command entry
├── merger.rs # Tile merge core logic
└── tile_server.rs # Local tile HTTP server
| Layer | Tech Stack |
|---|---|
| Framework | Tauri 2.0 |
| Frontend | Vue 3 + TypeScript + Vite |
| Map | Leaflet |
| Image | image-rs |
| Parallel | Rayon |
- VS Code
- Vue - Official extension
- Tauri extension
- rust-analyzer extension
# Development mode
npm run tauri dev
# Type check
npx vue-tsc --noEmit
# Build frontend only
npm run buildCore merge logic references the following open source projects:
- merge_tile_sets.pl by jlmcgraw
- Stack Exchange GIS - ImageMagick merge approach
This project is licensed under CC BY-NC-SA 4.0.
- ✅ Free to use, copy, and modify
- ✅ Attribution required
- ❌ Commercial use prohibited
⚠️ Derivative works must use the same license
nanvon
