Reorder js functions for scratch map a bit

This commit is contained in:
Eugene Burmakin 2024-11-01 13:40:37 +01:00
parent db880a0d5d
commit ef7b4c1fba
3 changed files with 253 additions and 765 deletions

File diff suppressed because one or more lines are too long

View file

@ -21,6 +21,7 @@ import { esriWorldStreetMapLayer } from "../maps/layers";
import { esriWorldTopoMapLayer } from "../maps/layers"; import { esriWorldTopoMapLayer } from "../maps/layers";
import { esriWorldImageryMapLayer } from "../maps/layers"; import { esriWorldImageryMapLayer } from "../maps/layers";
import { esriWorldGrayCanvasMapLayer } from "../maps/layers"; import { esriWorldGrayCanvasMapLayer } from "../maps/layers";
import { countryCodesMap } from "../maps/country_codes";
import "leaflet-draw"; import "leaflet-draw";
@ -41,35 +42,7 @@ export default class extends Controller {
this.routeOpacity = parseFloat(this.userSettings.route_opacity) || 0.6; this.routeOpacity = parseFloat(this.userSettings.route_opacity) || 0.6;
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.countryCodesMap = countryCodesMap();
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];
@ -90,7 +63,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(); this.setupScratchLayer(this.countryCodesMap);
if (!this.settingsButtonAdded) { if (!this.settingsButtonAdded) {
this.addSettingsButton(); this.addSettingsButton();
@ -171,8 +144,7 @@ export default class extends Controller {
this.map.remove(); this.map.remove();
} }
async setupScratchLayer(countryCodesMap) {
async setupScratchLayer() {
this.scratchLayer = L.geoJSON(null, { this.scratchLayer = L.geoJSON(null, {
style: { style: {
fillColor: '#FFD700', fillColor: '#FFD700',
@ -185,7 +157,7 @@ export default class extends Controller {
const response = await fetch('https://raw.githubusercontent.com/datasets/geo-countries/master/data/countries.geojson') const response = await fetch('https://raw.githubusercontent.com/datasets/geo-countries/master/data/countries.geojson')
const worldData = await response.json() const worldData = await response.json()
const visitedCountries = this.getVisitedCountries() const visitedCountries = this.getVisitedCountries(countryCodesMap)
const filteredFeatures = worldData.features.filter(feature => const filteredFeatures = worldData.features.filter(feature =>
visitedCountries.includes(feature.properties.ISO_A2) visitedCountries.includes(feature.properties.ISO_A2)
) )
@ -196,7 +168,7 @@ export default class extends Controller {
}) })
} }
getVisitedCountries() { getVisitedCountries(countryCodesMap) {
if (!this.markers) return []; if (!this.markers) return [];
return [...new Set( return [...new Set(
@ -204,7 +176,7 @@ export default class extends Controller {
.filter(marker => marker[7]) // Ensure country exists .filter(marker => marker[7]) // Ensure country exists
.map(marker => { .map(marker => {
// Convert country name to ISO code, or return the original if not found // Convert country name to ISO code, or return the original if not found
return this.countryCodeMap[marker[7]] || marker[7]; return countryCodesMap[marker[7]] || marker[7];
}) })
)]; )];
} }

View file

@ -1,730 +1,246 @@
export function countryCodeMap() { export function countryCodesMap() {
[ return {
{ "Afghanistan": "AF",
"Afghanistan": "AF" "Aland Islands": "AX",
}, "Albania": "AL",
{ "Algeria": "DZ",
"Aland Islands": "AX" "AmericanSamoa": "AS",
}, "Andorra": "AD",
{ "Angola": "AO",
"Albania": "AL" "Anguilla": "AI",
}, "Antarctica": "AQ",
{ "Antigua and Barbuda": "AG",
"Algeria": "DZ" "Argentina": "AR",
}, "Armenia": "AM",
{ "Aruba": "AW",
"AmericanSamoa": "AS" "Australia": "AU",
}, "Austria": "AT",
{ "Azerbaijan": "AZ",
"Andorra": "AD" "Bahamas": "BS",
}, "Bahrain": "BH",
{ "Bangladesh": "BD",
"Angola": "AO" "Barbados": "BB",
}, "Belarus": "BY",
{ "Belgium": "BE",
"Anguilla": "AI" "Belize": "BZ",
}, "Benin": "BJ",
{ "Bermuda": "BM",
"Antarctica": "AQ" "Bhutan": "BT",
}, "Bolivia, Plurinational State of": "BO",
{ "Bosnia and Herzegovina": "BA",
"Antigua and Barbuda": "AG" "Botswana": "BW",
}, "Brazil": "BR",
{ "British Indian Ocean Territory": "IO",
"Argentina": "AR" "Brunei Darussalam": "BN",
}, "Bulgaria": "BG",
{ "Burkina Faso": "BF",
"Armenia": "AM" "Burundi": "BI",
}, "Cambodia": "KH",
{ "Cameroon": "CM",
"Aruba": "AW" "Canada": "CA",
}, "Cape Verde": "CV",
{ "Cayman Islands": "KY",
"Australia": "AU" "Central African Republic": "CF",
}, "Chad": "TD",
{ "Chile": "CL",
"Austria": "AT" "China": "CN",
}, "Christmas Island": "CX",
{ "Cocos (Keeling) Islands": "CC",
"Azerbaijan": "AZ" "Colombia": "CO",
}, "Comoros": "KM",
{ "Congo": "CG",
"Bahamas": "BS" "Congo, The Democratic Republic of the Congo": "CD",
}, "Cook Islands": "CK",
{ "Costa Rica": "CR",
"Bahrain": "BH" "Cote d'Ivoire": "CI",
}, "Croatia": "HR",
{ "Cuba": "CU",
"Bangladesh": "BD" "Cyprus": "CY",
}, "Czech Republic": "CZ",
{ "Denmark": "DK",
"Barbados": "BB" "Djibouti": "DJ",
}, "Dominica": "DM",
{ "Dominican Republic": "DO",
"Belarus": "BY" "Ecuador": "EC",
}, "Egypt": "EG",
{ "El Salvador": "SV",
"Belgium": "BE" "Equatorial Guinea": "GQ",
}, "Eritrea": "ER",
{ "Estonia": "EE",
"Belize": "BZ" "Ethiopia": "ET",
}, "Falkland Islands (Malvinas)": "FK",
{ "Faroe Islands": "FO",
"Benin": "BJ" "Fiji": "FJ",
}, "Finland": "FI",
{ "France": "FR",
"Bermuda": "BM" "French Guiana": "GF",
}, "French Polynesia": "PF",
{ "Gabon": "GA",
"Bhutan": "BT" "Gambia": "GM",
}, "Georgia": "GE",
{ "Germany": "DE",
"Bolivia, Plurinational State of": "BO" "Ghana": "GH",
}, "Gibraltar": "GI",
{ "Greece": "GR",
"Bosnia and Herzegovina": "BA" "Greenland": "GL",
}, "Grenada": "GD",
{ "Guadeloupe": "GP",
"Botswana": "BW" "Guam": "GU",
}, "Guatemala": "GT",
{ "Guernsey": "GG",
"Brazil": "BR" "Guinea": "GN",
}, "Guinea-Bissau": "GW",
{ "Guyana": "GY",
"British Indian Ocean Territory": "IO" "Haiti": "HT",
}, "Holy See (Vatican City State)": "VA",
{ "Honduras": "HN",
"Brunei Darussalam": "BN" "Hong Kong": "HK",
}, "Hungary": "HU",
{ "Iceland": "IS",
"Bulgaria": "BG" "India": "IN",
}, "Indonesia": "ID",
{ "Iran, Islamic Republic of Persian Gulf": "IR",
"Burkina Faso": "BF" "Iraq": "IQ",
}, "Ireland": "IE",
{ "Isle of Man": "IM",
"Burundi": "BI" "Israel": "IL",
}, "Italy": "IT",
{ "Jamaica": "JM",
"Cambodia": "KH" "Japan": "JP",
}, "Jersey": "JE",
{ "Jordan": "JO",
"Cameroon": "CM" "Kazakhstan": "KZ",
}, "Kenya": "KE",
{ "Kiribati": "KI",
"Canada": "CA" "Korea, Democratic People's Republic of Korea": "KP",
}, "Korea, Republic of South Korea": "KR",
{ "Kuwait": "KW",
"Cape Verde": "CV" "Kyrgyzstan": "KG",
}, "Laos": "LA",
{ "Latvia": "LV",
"Cayman Islands": "KY" "Lebanon": "LB",
}, "Lesotho": "LS",
{ "Liberia": "LR",
"Central African Republic": "CF" "Libyan Arab Jamahiriya": "LY",
}, "Liechtenstein": "LI",
{ "Lithuania": "LT",
"Chad": "TD" "Luxembourg": "LU",
}, "Macao": "MO",
{ "Macedonia": "MK",
"Chile": "CL" "Madagascar": "MG",
}, "Malawi": "MW",
{ "Malaysia": "MY",
"China": "CN" "Maldives": "MV",
}, "Mali": "ML",
{ "Malta": "MT",
"Christmas Island": "CX" "Marshall Islands": "MH",
}, "Martinique": "MQ",
{ "Mauritania": "MR",
"Cocos (Keeling) Islands": "CC" "Mauritius": "MU",
}, "Mayotte": "YT",
{ "Mexico": "MX",
"Colombia": "CO" "Micronesia, Federated States of Micronesia": "FM",
}, "Moldova": "MD",
{ "Monaco": "MC",
"Comoros": "KM" "Mongolia": "MN",
}, "Montenegro": "ME",
{ "Montserrat": "MS",
"Congo": "CG" "Morocco": "MA",
}, "Mozambique": "MZ",
{ "Myanmar": "MM",
"Congo, The Democratic Republic of the Congo": "CD" "Namibia": "NA",
}, "Nauru": "NR",
{ "Nepal": "NP",
"Cook Islands": "CK" "Netherlands": "NL",
}, "Netherlands Antilles": "AN",
{ "New Caledonia": "NC",
"Costa Rica": "CR" "New Zealand": "NZ",
}, "Nicaragua": "NI",
{ "Niger": "NE",
"Cote d'Ivoire": "CI" "Nigeria": "NG",
}, "Niue": "NU",
{ "Norfolk Island": "NF",
"Croatia": "HR" "Northern Mariana Islands": "MP",
}, "Norway": "NO",
{ "Oman": "OM",
"Cuba": "CU" "Pakistan": "PK",
}, "Palau": "PW",
{ "Palestinian Territory, Occupied": "PS",
"Cyprus": "CY" "Panama": "PA",
}, "Papua New Guinea": "PG",
{ "Paraguay": "PY",
"Czech Republic": "CZ" "Peru": "PE",
}, "Philippines": "PH",
{ "Pitcairn": "PN",
"Denmark": "DK" "Poland": "PL",
}, "Portugal": "PT",
{ "Puerto Rico": "PR",
"Djibouti": "DJ" "Qatar": "QA",
}, "Romania": "RO",
{ "Russia": "RU",
"Dominica": "DM" "Rwanda": "RW",
}, "Reunion": "RE",
{ "Saint Barthelemy": "BL",
"Dominican Republic": "DO" "Saint Helena, Ascension and Tristan Da Cunha": "SH",
}, "Saint Kitts and Nevis": "KN",
{ "Saint Lucia": "LC",
"Ecuador": "EC" "Saint Martin": "MF",
}, "Saint Pierre and Miquelon": "PM",
{ "Saint Vincent and the Grenadines": "VC",
"Egypt": "EG" "Samoa": "WS",
}, "San Marino": "SM",
{ "Sao Tome and Principe": "ST",
"El Salvador": "SV" "Saudi Arabia": "SA",
}, "Senegal": "SN",
{ "Serbia": "RS",
"Equatorial Guinea": "GQ" "Seychelles": "SC",
}, "Sierra Leone": "SL",
{ "Singapore": "SG",
"Eritrea": "ER" "Slovakia": "SK",
}, "Slovenia": "SI",
{ "Solomon Islands": "SB",
"Estonia": "EE" "Somalia": "SO",
}, "South Africa": "ZA",
{ "South Sudan": "SS",
"Ethiopia": "ET" "South Georgia and the South Sandwich Islands": "GS",
}, "Spain": "ES",
{ "Sri Lanka": "LK",
"Falkland Islands (Malvinas)": "FK" "Sudan": "SD",
}, "Suriname": "SR",
{ "Svalbard and Jan Mayen": "SJ",
"Faroe Islands": "FO" "Swaziland": "SZ",
}, "Sweden": "SE",
{ "Switzerland": "CH",
"Fiji": "FJ" "Syrian Arab Republic": "SY",
}, "Taiwan": "TW",
{ "Tajikistan": "TJ",
"Finland": "FI" "Tanzania, United Republic of Tanzania": "TZ",
}, "Thailand": "TH",
{ "Timor-Leste": "TL",
"France": "FR" "Togo": "TG",
}, "Tokelau": "TK",
{ "Tonga": "TO",
"French Guiana": "GF" "Trinidad and Tobago": "TT",
}, "Tunisia": "TN",
{ "Turkey": "TR",
"French Polynesia": "PF" "Turkmenistan": "TM",
}, "Turks and Caicos Islands": "TC",
{ "Tuvalu": "TV",
"Gabon": "GA" "Uganda": "UG",
}, "Ukraine": "UA",
{ "United Arab Emirates": "AE",
"Gambia": "GM" "United Kingdom": "GB",
}, "United States": "US",
{ "Uruguay": "UY",
"Georgia": "GE" "Uzbekistan": "UZ",
}, "Vanuatu": "VU",
{ "Venezuela, Bolivarian Republic of Venezuela": "VE",
"Germany": "DE" "Vietnam": "VN",
}, "Virgin Islands, British": "VG",
{ "Virgin Islands, U.S.": "VI",
"Ghana": "GH" "Wallis and Futuna": "WF",
}, "Yemen": "YE",
{ "Zambia": "ZM",
"Gibraltar": "GI" "Zimbabwe": "ZW"
}, }
{
"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"
}
]
} }