An interactive historical mapping system that tracks geographical boundaries, political entities, and named locations across time periods. Built with React, Leaflet, and TailwindCSS.
- Interactive Time Slider: Navigate through history from 1886 to 2024
- Dynamic Map Rendering: View historical political boundaries
- Location Tracking: Search and analyze named locations (gazetteer)
- Duplicate Detection: Find and analyze locations with identical names
- Point-in-Polygon Analysis: Determine which political entity controls a location at any given year
- Automatic Data Loading: CSV and GeoJSON files are auto-loaded on page load
- Fully Offline: Works completely offline - no external APIs required
- GitHub Pages Ready: Deploy directly from your GitHub repository
Simply open index.html in your browser. The application will automatically:
- Load
Dov Play Gaz - Sheet1.csv(gazetteer/locations) - Load
GEO.json(geopolitical boundaries)
-
Initialize a Git repository (if not already done):
git init git add . git commit -m "Initial commit: Geospatial Explorer Pro"
-
Push to GitHub:
- Create a new repository called
<your-username>.github.ioorgeospatial-explorer - Add the remote and push:
git remote add origin https://github.com/<your-username>/<repo-name>.git git push -u origin main
- Create a new repository called
-
Enable GitHub Pages:
- Go to Settings → Pages
- Source: Deploy from a branch
- Branch: main / root
- Save
-
Access your site:
https://<your-username>.github.io/(for<username>.github.iorepo)https://<your-username>.github.io/<repo-name>/(for regular repo)
-
Dov Play Gaz - Sheet1.csv: Gazetteer with location coordinates- Columns:
Hebrew Name,English Name,Latitude,Longitude,Alt English Names(optional)
- Columns:
-
GEO.json: GeoJSON file with political boundaries and temporal metadata- Required properties:
From(orfrom,start_year),To(orto,end_year) - Recommended properties:
Name,Status,Area,Capital,Id/Holder
- Required properties:
- Manual file upload via buttons if auto-load fails
- Search Locations: Use the search box to find locations by Hebrew or English name
- View Boundaries: Click on map regions to see all locations within that political entity
- Time Navigation: Move the slider to view historical changes
- Entity Details: See the political entity name, status, area, and capital for selected year
- Switch to "🔍 Duplicate Names" tab
- Filter by minimum distance between duplicate locations
- View distance metrics between each duplicate point pair
- Click on duplicates to navigate to them on the map
- See which political entity controls each duplicate location
- Frontend Framework: React 18
- Map Library: Leaflet 1.9.4
- Styling: TailwindCSS
- Data Processing: PapaParse (CSV), Turf.js (geospatial analysis)
- Language: HTML5 + JSX (Babel standalone)
// Files are fetched relative to index.html
const csvResponse = await fetch('./Dov Play Gaz - Sheet1.csv');
const geoResponse = await fetch('./GEO.json');- Uses WGS84 (EPSG:4251) with latitude/longitude
- Map tiles via CartoDB (light style)
Edit this line in index.html:
L.tileLayer('https://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}{r}.png', {Change these values:
<input type="range" min="1886" max="2024" step="1" value={year} ... />Modify TailwindCSS classes or the <style> section for colors and appearance
The Gemini API chat feature has been removed to ensure:
- ✓ No external API dependencies
- ✓ Complete offline functionality
- ✓ Simpler deployment to GitHub Pages
- ✓ No security concerns with API keys
To add external API functionality, implement your own fetch endpoints.
| Issue | Solution |
|---|---|
| CSV/GeoJSON not loading | Ensure files are in the same directory as index.html |
| Map not displaying | Check browser console for CORS errors |
| Slow performance | Reduce GeoJSON feature count or simplify polygons |
| Markers not visible | Ensure CSV has valid Latitude/Longitude columns |
| Time slider unresponsive | Check feature date ranges in GeoJSON properties |
- Chrome/Edge: ✓ Full support
- Firefox: ✓ Full support
- Safari: ✓ Full support
- IE11: ✗ Not supported
Your specified license here (e.g., MIT, CC-BY-4.0, etc.)
Your name/organization
- Leaflet: Interactive mapping
- Turf.js: Geospatial analysis
- CartoDB: Map tiles
- React: UI framework
- TailwindCSS: Styling
For issues or questions, please:
- Check the Troubleshooting section above
- Review the browser console for error messages
- Ensure data files are properly formatted
Version: 2.3 (GitHub Pages Ready)
Last Updated: February 2026