mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
Add very raw scratch map
This commit is contained in:
parent
93a8d2f111
commit
db880a0d5d
6 changed files with 817 additions and 3 deletions
File diff suppressed because one or more lines are too long
|
|
@ -8,8 +8,8 @@ class MapController < ApplicationController
|
||||||
|
|
||||||
@countries_and_cities = CountriesAndCities.new(@points).call
|
@countries_and_cities = CountriesAndCities.new(@points).call
|
||||||
@coordinates =
|
@coordinates =
|
||||||
@points.pluck(:latitude, :longitude, :battery, :altitude, :timestamp, :velocity, :id)
|
@points.pluck(:latitude, :longitude, :battery, :altitude, :timestamp, :velocity, :id, :country)
|
||||||
.map { [_1.to_f, _2.to_f, _3.to_s, _4.to_s, _5.to_s, _6.to_s, _7.to_s] }
|
.map { [_1.to_f, _2.to_f, _3.to_s, _4.to_s, _5.to_s, _6.to_s, _7.to_s, _8.to_s] }
|
||||||
@distance = distance
|
@distance = distance
|
||||||
@start_at = Time.zone.at(start_at)
|
@start_at = Time.zone.at(start_at)
|
||||||
@end_at = Time.zone.at(end_at)
|
@end_at = Time.zone.at(end_at)
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,35 @@ export default class extends Controller {
|
||||||
this.distanceUnit = this.element.dataset.distance_unit || "km";
|
this.distanceUnit = this.element.dataset.distance_unit || "km";
|
||||||
this.pointsRenderingMode = this.userSettings.points_rendering_mode || "raw";
|
this.pointsRenderingMode = this.userSettings.points_rendering_mode || "raw";
|
||||||
|
|
||||||
|
this.countryCodeMap = {
|
||||||
|
'Russia': 'RU',
|
||||||
|
'Germany': 'DE',
|
||||||
|
'United States': 'US',
|
||||||
|
'United Kingdom': 'GB',
|
||||||
|
'France': 'FR',
|
||||||
|
'Italy': 'IT',
|
||||||
|
'Spain': 'ES',
|
||||||
|
'Canada': 'CA',
|
||||||
|
'Australia': 'AU',
|
||||||
|
'Japan': 'JP',
|
||||||
|
'China': 'CN',
|
||||||
|
'Brazil': 'BR',
|
||||||
|
'India': 'IN',
|
||||||
|
'Mexico': 'MX',
|
||||||
|
'South Africa': 'ZA',
|
||||||
|
'South Korea': 'KR',
|
||||||
|
'Netherlands': 'NL',
|
||||||
|
'Switzerland': 'CH',
|
||||||
|
'Sweden': 'SE',
|
||||||
|
'Norway': 'NO',
|
||||||
|
'Denmark': 'DK',
|
||||||
|
'Poland': 'PL',
|
||||||
|
'Greece': 'GR',
|
||||||
|
'Portugal': 'PT',
|
||||||
|
'Ireland': 'IE',
|
||||||
|
// Add more countries as needed
|
||||||
|
};
|
||||||
|
|
||||||
this.center = this.markers[this.markers.length - 1] || [52.514568, 13.350111];
|
this.center = this.markers[this.markers.length - 1] || [52.514568, 13.350111];
|
||||||
|
|
||||||
this.map = L.map(this.containerTarget).setView([this.center[0], this.center[1]], 14);
|
this.map = L.map(this.containerTarget).setView([this.center[0], this.center[1]], 14);
|
||||||
|
|
@ -61,6 +90,7 @@ export default class extends Controller {
|
||||||
this.heatmapLayer = L.heatLayer(this.heatmapMarkers, { radius: 20 }).addTo(this.map);
|
this.heatmapLayer = L.heatLayer(this.heatmapMarkers, { radius: 20 }).addTo(this.map);
|
||||||
this.fogOverlay = L.layerGroup(); // Initialize fog layer
|
this.fogOverlay = L.layerGroup(); // Initialize fog layer
|
||||||
this.areasLayer = L.layerGroup(); // Initialize areas layer
|
this.areasLayer = L.layerGroup(); // Initialize areas layer
|
||||||
|
this.setupScratchLayer();
|
||||||
|
|
||||||
if (!this.settingsButtonAdded) {
|
if (!this.settingsButtonAdded) {
|
||||||
this.addSettingsButton();
|
this.addSettingsButton();
|
||||||
|
|
@ -71,6 +101,7 @@ export default class extends Controller {
|
||||||
Polylines: this.polylinesLayer,
|
Polylines: this.polylinesLayer,
|
||||||
Heatmap: this.heatmapLayer,
|
Heatmap: this.heatmapLayer,
|
||||||
"Fog of War": this.fogOverlay,
|
"Fog of War": this.fogOverlay,
|
||||||
|
"Scratch map": this.scratchLayer,
|
||||||
Areas: this.areasLayer // Add the areas layer to the controls
|
Areas: this.areasLayer // Add the areas layer to the controls
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -140,6 +171,53 @@ export default class extends Controller {
|
||||||
this.map.remove();
|
this.map.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async setupScratchLayer() {
|
||||||
|
this.scratchLayer = L.geoJSON(null, {
|
||||||
|
style: {
|
||||||
|
fillColor: '#FFD700',
|
||||||
|
fillOpacity: 0.3,
|
||||||
|
color: '#FFA500',
|
||||||
|
weight: 1
|
||||||
|
}
|
||||||
|
}).addTo(this.map)
|
||||||
|
|
||||||
|
const response = await fetch('https://raw.githubusercontent.com/datasets/geo-countries/master/data/countries.geojson')
|
||||||
|
const worldData = await response.json()
|
||||||
|
|
||||||
|
const visitedCountries = this.getVisitedCountries()
|
||||||
|
const filteredFeatures = worldData.features.filter(feature =>
|
||||||
|
visitedCountries.includes(feature.properties.ISO_A2)
|
||||||
|
)
|
||||||
|
|
||||||
|
this.scratchLayer.addData({
|
||||||
|
type: 'FeatureCollection',
|
||||||
|
features: filteredFeatures
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
getVisitedCountries() {
|
||||||
|
if (!this.markers) return [];
|
||||||
|
|
||||||
|
return [...new Set(
|
||||||
|
this.markers
|
||||||
|
.filter(marker => marker[7]) // Ensure country exists
|
||||||
|
.map(marker => {
|
||||||
|
// Convert country name to ISO code, or return the original if not found
|
||||||
|
return this.countryCodeMap[marker[7]] || marker[7];
|
||||||
|
})
|
||||||
|
)];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Optional: Add methods to handle user interactions
|
||||||
|
toggleScratchLayer() {
|
||||||
|
if (this.map.hasLayer(this.scratchLayer)) {
|
||||||
|
this.map.removeLayer(this.scratchLayer)
|
||||||
|
} else {
|
||||||
|
this.scratchLayer.addTo(this.map)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
baseMaps() {
|
baseMaps() {
|
||||||
let selectedLayerName = this.userSettings.preferred_map_layer || "OpenStreetMap";
|
let selectedLayerName = this.userSettings.preferred_map_layer || "OpenStreetMap";
|
||||||
|
|
||||||
|
|
|
||||||
730
app/javascript/maps/country_codes.js
Normal file
730
app/javascript/maps/country_codes.js
Normal file
|
|
@ -0,0 +1,730 @@
|
||||||
|
export function countryCodeMap() {
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"Afghanistan": "AF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Aland Islands": "AX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Albania": "AL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Algeria": "DZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AmericanSamoa": "AS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Andorra": "AD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Angola": "AO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Anguilla": "AI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Antarctica": "AQ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Antigua and Barbuda": "AG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Argentina": "AR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Armenia": "AM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Aruba": "AW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Australia": "AU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Austria": "AT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Azerbaijan": "AZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bahamas": "BS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bahrain": "BH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bangladesh": "BD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Barbados": "BB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Belarus": "BY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Belgium": "BE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Belize": "BZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Benin": "BJ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bermuda": "BM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bhutan": "BT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bolivia, Plurinational State of": "BO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bosnia and Herzegovina": "BA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Botswana": "BW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Brazil": "BR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"British Indian Ocean Territory": "IO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Brunei Darussalam": "BN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bulgaria": "BG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Burkina Faso": "BF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Burundi": "BI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Cambodia": "KH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Cameroon": "CM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Canada": "CA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Cape Verde": "CV"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Cayman Islands": "KY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Central African Republic": "CF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Chad": "TD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Chile": "CL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"China": "CN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Christmas Island": "CX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Cocos (Keeling) Islands": "CC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Colombia": "CO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Comoros": "KM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Congo": "CG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Congo, The Democratic Republic of the Congo": "CD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Cook Islands": "CK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Costa Rica": "CR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Cote d'Ivoire": "CI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Croatia": "HR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Cuba": "CU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Cyprus": "CY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Czech Republic": "CZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Denmark": "DK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Djibouti": "DJ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Dominica": "DM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Dominican Republic": "DO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ecuador": "EC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Egypt": "EG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"El Salvador": "SV"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Equatorial Guinea": "GQ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Eritrea": "ER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Estonia": "EE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ethiopia": "ET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Falkland Islands (Malvinas)": "FK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Faroe Islands": "FO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Fiji": "FJ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Finland": "FI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"France": "FR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"French Guiana": "GF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"French Polynesia": "PF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Gabon": "GA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Gambia": "GM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Georgia": "GE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Germany": "DE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ghana": "GH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Gibraltar": "GI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Greece": "GR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Greenland": "GL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Grenada": "GD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Guadeloupe": "GP"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Guam": "GU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Guatemala": "GT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Guernsey": "GG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Guinea": "GN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Guinea-Bissau": "GW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Guyana": "GY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Haiti": "HT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Holy See (Vatican City State)": "VA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Honduras": "HN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Hong Kong": "HK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Hungary": "HU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Iceland": "IS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"India": "IN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Indonesia": "ID"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Iran, Islamic Republic of Persian Gulf": "IR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Iraq": "IQ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ireland": "IE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Isle of Man": "IM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Israel": "IL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Italy": "IT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Jamaica": "JM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Japan": "JP"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Jersey": "JE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Jordan": "JO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Kazakhstan": "KZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Kenya": "KE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Kiribati": "KI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Korea, Democratic People's Republic of Korea": "KP"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Korea, Republic of South Korea": "KR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Kuwait": "KW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Kyrgyzstan": "KG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Laos": "LA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Latvia": "LV"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Lebanon": "LB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Lesotho": "LS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Liberia": "LR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Libyan Arab Jamahiriya": "LY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Liechtenstein": "LI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Lithuania": "LT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Luxembourg": "LU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Macao": "MO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Macedonia": "MK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Madagascar": "MG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Malawi": "MW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Malaysia": "MY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Maldives": "MV"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Mali": "ML"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Malta": "MT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Marshall Islands": "MH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Martinique": "MQ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Mauritania": "MR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Mauritius": "MU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Mayotte": "YT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Mexico": "MX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Micronesia, Federated States of Micronesia": "FM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Moldova": "MD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Monaco": "MC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Mongolia": "MN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Montenegro": "ME"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Montserrat": "MS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Morocco": "MA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Mozambique": "MZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Myanmar": "MM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Namibia": "NA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nauru": "NR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nepal": "NP"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Netherlands": "NL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Netherlands Antilles": "AN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"New Caledonia": "NC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"New Zealand": "NZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nicaragua": "NI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Niger": "NE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nigeria": "NG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Niue": "NU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Norfolk Island": "NF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Northern Mariana Islands": "MP"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Norway": "NO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Oman": "OM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Pakistan": "PK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Palau": "PW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Palestinian Territory, Occupied": "PS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Panama": "PA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Papua New Guinea": "PG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Paraguay": "PY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Peru": "PE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Philippines": "PH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Pitcairn": "PN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Poland": "PL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Portugal": "PT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Puerto Rico": "PR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Qatar": "QA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Romania": "RO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Russia": "RU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Rwanda": "RW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Reunion": "RE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Saint Barthelemy": "BL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Saint Helena, Ascension and Tristan Da Cunha": "SH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Saint Kitts and Nevis": "KN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Saint Lucia": "LC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Saint Martin": "MF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Saint Pierre and Miquelon": "PM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Saint Vincent and the Grenadines": "VC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Samoa": "WS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"San Marino": "SM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sao Tome and Principe": "ST"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Saudi Arabia": "SA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Senegal": "SN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Serbia": "RS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Seychelles": "SC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sierra Leone": "SL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Singapore": "SG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Slovakia": "SK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Slovenia": "SI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Solomon Islands": "SB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Somalia": "SO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"South Africa": "ZA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"South Sudan": "SS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"South Georgia and the South Sandwich Islands": "GS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Spain": "ES"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sri Lanka": "LK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sudan": "SD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Suriname": "SR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Svalbard and Jan Mayen": "SJ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Swaziland": "SZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sweden": "SE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Switzerland": "CH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Syrian Arab Republic": "SY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Taiwan": "TW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Tajikistan": "TJ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Tanzania, United Republic of Tanzania": "TZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Thailand": "TH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Timor-Leste": "TL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Togo": "TG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Tokelau": "TK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Tonga": "TO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Trinidad and Tobago": "TT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Tunisia": "TN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Turkey": "TR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Turkmenistan": "TM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Turks and Caicos Islands": "TC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Tuvalu": "TV"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Uganda": "UG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ukraine": "UA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"United Arab Emirates": "AE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"United Kingdom": "GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"United States": "US"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Uruguay": "UY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Uzbekistan": "UZ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Vanuatu": "VU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Venezuela, Bolivarian Republic of Venezuela": "VE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Vietnam": "VN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Virgin Islands, British": "VG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Virgin Islands, U.S.": "VI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Wallis and Futuna": "WF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Yemen": "YE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Zambia": "ZM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Zimbabwe": "ZW"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ export function createMarkersArray(markersData, userSettings) {
|
||||||
} else {
|
} else {
|
||||||
return markersData.map((marker) => {
|
return markersData.map((marker) => {
|
||||||
const [lat, lon] = marker;
|
const [lat, lon] = marker;
|
||||||
|
const country = marker[7];
|
||||||
const popupContent = createPopupContent(marker, userSettings.timezone, userSettings.distanceUnit);
|
const popupContent = createPopupContent(marker, userSettings.timezone, userSettings.distanceUnit);
|
||||||
return L.circleMarker([lat, lon], { radius: 4 }).bindPopup(popupContent);
|
return L.circleMarker([lat, lon], { radius: 4 }).bindPopup(popupContent);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,11 @@
|
||||||
<div data-maps-target="container" class="h-[25rem] w-full min-h-screen">
|
<div data-maps-target="container" class="h-[25rem] w-full min-h-screen">
|
||||||
<div id="fog" class="fog"></div>
|
<div id="fog" class="fog"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<button
|
||||||
|
data-action="click->maps#toggleScratchLayer"
|
||||||
|
class="btn btn-primary mt-4">
|
||||||
|
Toggle Visited Countries
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue