package countryCenter import ( "fmt" "strings" ) var countryCenter = map[string][2]float64{ "Afghanistan": {33.93911, 67.709953}, "Albania": {41.153332, 20.168331}, "Algeria": {28.033886, 1.659626}, "Andorra": {42.546245, 1.601554}, "Angola": {-11.202692, 17.873887}, "Antigua and Barbuda": {17.060816, -61.796428}, "Argentina": {-38.416097, -63.616672}, "Armenia": {40.069099, 45.038189}, "Australia": {-25.274398, 133.775136}, "Azerbaijan": {40.143105, 47.576927}, "Bahamas": {25.03428, -77.39628}, "Bahrain": {26.0667, 50.5577}, "Bangladesh": {23.684994, 90.356331}, "Barbados": {13.193887, -59.543198}, "Belarus": {53.709807, 27.953389}, "Belgium": {50.503887, 4.469936}, "Belize": {17.189877, -88.49765}, "Benin": {9.30769, 2.315834}, "Bhutan": {27.514162, 90.433601}, "Bolivia": {-16.290154, -63.588653}, "Bosnia and Herzegovina": {43.915886, 17.679076}, "Botswana": {-22.328474, 24.684866}, "Brazil": {-14.235004, -51.92528}, "Brunei": {4.535277, 114.727669}, "Bulgaria": {42.733883, 25.48583}, "Burkina Faso": {12.238333, -1.561593}, "Burundi": {-3.373056, 29.918886}, "Cabo Verde": {16.5388, -23.0418}, "Cambodia": {12.565679, 104.990963}, "Cameroon": {7.369722, 12.354722}, "Canada": {56.130366, -106.346771}, "Central African Republic": {6.611111, 20.939444}, "Chad": {15.454166, 18.732207}, "Chile": {-35.675147, -71.542969}, "China": {35.86166, 104.195397}, "Colombia": {4.570868, -74.297333}, "Comoros": {-11.6455, 43.3333}, "Congo": {-0.228021, 15.827659}, "Costa Rica": {9.748917, -83.753428}, "Croatia": {45.1, 15.2}, "Cuba": {21.521757, -77.781167}, "Cyprus": {35.126413, 33.429859}, "Czechia": {49.817492, 15.472962}, "Denmark": {56.26392, 9.501785}, "Djibouti": {11.825138, 42.590275}, "Dominica": {15.414999, -61.370976}, "Dominican Republic": {18.735693, -70.162651}, "Ecuador": {-1.831239, -78.183406}, "Egypt": {26.820553, 30.802498}, "El Salvador": {13.794185, -88.89653}, "Equatorial Guinea": {1.650801, 10.267895}, "Eritrea": {15.179384, 39.782334}, "Estonia": {58.595272, 25.013607}, "Eswatini": {-26.522503, 31.465866}, "Ethiopia": {9.145, 40.489673}, "Fiji": {-17.713371, 178.065032}, "Finland": {61.92411, 25.748151}, "France": {46.603354, 1.888334}, "Gabon": {-0.803689, 11.609444}, "Gambia": {13.443182, -15.310139}, "Georgia": {32.165622, -82.900075}, "Germany": {51.165691, 10.451526}, "Ghana": {7.946527, -1.023194}, "Greece": {39.074208, 21.824312}, "Grenada": {12.262776, -61.604171}, "Guatemala": {15.783471, -90.230759}, "Guinea": {9.945587, -9.696645}, "Guinea-Bissau": {11.803749, -15.180413}, "Guyana": {4.860416, -58.93018}, "Haiti": {18.971187, -72.285215}, "Honduras": {15.199999, -86.241905}, "Hungary": {47.162494, 19.503304}, "Iceland": {64.963051, -19.020835}, "India": {20.593684, 78.96288}, "Indonesia": {-0.789275, 113.921327}, "Iran": {32.427908, 53.688046}, "Iraq": {33.223191, 43.679291}, "Ireland": {53.41291, -8.24389}, "Israel": {31.046051, 34.851612}, "Italy": {41.87194, 12.56738}, "Jamaica": {18.109581, -77.297508}, "Japan": {36.204824, 138.252924}, "Jordan": {30.585164, 36.238414}, "Kazakhstan": {48.019573, 66.923684}, "Kenya": {-1.292066, 36.821946}, "Kiribati": {-3.370417, -168.734039}, "Kuwait": {29.31166, 47.481766}, "Kyrgyzstan": {41.20438, 74.766098}, "Laos": {19.85627, 102.495496}, "Latvia": {56.879635, 24.603189}, "Lebanon": {33.854721, 35.862285}, "Lesotho": {-29.609988, 28.233608}, "Liberia": {6.428055, -9.429499}, "Libya": {26.3351, 17.228331}, "Liechtenstein": {47.166, 9.555373}, "Lithuania": {55.169438, 23.881275}, "Luxembourg": {49.815273, 6.129583}, "Madagascar": {-18.766947, 46.869107}, "Malawi": {-13.254308, 34.301525}, "Malaysia": {4.210484, 101.975766}, "Maldives": {3.202778, 73.22068}, "Mali": {17.570692, -3.996166}, "Malta": {35.937496, 14.375416}, "Marshall Islands": {7.131474, 171.184478}, "Mauritania": {21.00789, -10.940835}, "Mauritius": {-20.348404, 57.552152}, "Mexico": {23.634501, -102.552784}, "Micronesia": {7.425554, 150.550812}, "Moldova": {47.411631, 28.369885}, "Monaco": {43.738417, 7.424616}, "Mongolia": {46.862496, 103.846656}, "Montenegro": {42.708678, 19.37439}, "Morocco": {31.791702, -7.09262}, "Mozambique": {-18.665695, 35.529562}, "Myanmar": {21.916221, 95.955974}, "Namibia": {-22.95764, 18.49041}, "Nauru": {-0.522778, 166.931503}, "Nepal": {28.394857, 84.124008}, "Netherlands": {52.132633, 5.291266}, "New Zealand": {-40.900557, 174.885971}, "Nicaragua": {12.865416, -85.207229}, "Niger": {17.607789, 8.081666}, "Nigeria": {9.081999, 8.675277}, "North Korea": {40.339852, 127.510093}, "North Macedonia": {41.608635, 21.745275}, "Norway": {60.472024, 8.468946}, "Oman": {21.512583, 55.923255}, "Pakistan": {30.375321, 69.345116}, "Palau": {7.51498, 134.58252}, "Palestine": {31.952162, 35.233154}, "Panama": {8.537981, -80.782127}, "Papua New Guinea": {-6.314993, 143.95555}, "Paraguay": {-23.442503, -58.443832}, "Peru": {-9.189967, -75.015152}, "Philippines": {12.879721, 121.774017}, "Poland": {51.919438, 19.145136}, "Portugal": {39.399872, -8.224454}, "Qatar": {25.354826, 51.183884}, "Romania": {45.943161, 24.96676}, "Russia": {61.52401, 105.318756}, "Rwanda": {-1.940278, 29.873888}, "Saint Kitts and Nevis": {17.357822, -62.782998}, "Saint Lucia": {13.909444, -60.978893}, "Saint Vincent and the Grenadines": {12.984305, -61.287228}, "Samoa": {-13.759029, -172.104629}, "San Marino": {43.94236, 12.457777}, "Sao Tome and Principe": {0.18636, 6.613081}, "Saudi Arabia": {23.885942, 45.079162}, "Senegal": {14.497401, -14.452362}, "Serbia": {44.016521, 21.005859}, "Seychelles": {-4.679574, 55.491977}, "Sierra Leone": {8.460555, -11.779889}, "Singapore": {1.352083, 103.819836}, "Slovakia": {48.669026, 19.699024}, "Slovenia": {46.151241, 14.995463}, "Solomon Islands": {-9.64571, 160.156194}, "Somalia": {5.152149, 46.199616}, "South Africa": {-30.559482, 22.937506}, "South Korea": {35.907757, 127.766922}, "South Sudan": {6.8769919, 31.3069788}, "Spain": {40.463667, -3.74922}, "Sri Lanka": {7.873054, 80.771797}, "Sudan": {12.862807, 30.217636}, "Suriname": {3.919305, -56.027783}, "Sweden": {60.128161, 18.643501}, "Switzerland": {46.818188, 8.227512}, "Syria": {34.802075, 38.996815}, "Tajikistan": {38.861034, 71.276093}, "Tanzania": {-6.369028, 34.888822}, "Thailand": {15.870032, 100.992541}, "Timor-Leste": {-8.874217, 125.727539}, "Togo": {8.619543, 0.824782}, "Tonga": {-21.178986, -175.198242}, "Trinidad and Tobago": {10.691803, -61.222503}, "Tunisia": {33.886917, 9.537499}, "Turkey": {38.963745, 35.243322}, "Turkmenistan": {38.969719, 59.556278}, "Tuvalu": {-7.109535, 177.64933}, "Uganda": {1.373333, 32.290275}, "Ukraine": {48.379433, 31.16558}, "United Arab Emirates": {23.424076, 53.847818}, "United Kingdom": {55.378051, -3.435973}, "United States": {37.09024, -95.712891}, "Uruguay": {-32.522779, -55.765835}, "Uzbekistan": {41.377491, 64.585262}, "Vanuatu": {-15.376706, 166.959158}, "Vatican City": {41.902916, 12.453389}, "Venezuela": {6.42375, -66.58973}, "Vietnam": {14.058324, 108.277199}, "Yemen": {15.552727, 48.516388}, "Zambia": {-13.133897, 27.849332}, "Zimbabwe": {-19.015438, 29.154857}, } // 国家简称到全称的映射表 var countryAbbr = map[string]string{ // ISO 3166-1 alpha-2 codes "AD": "Andorra", "AE": "United Arab Emirates", "AF": "Afghanistan", "AG": "Antigua and Barbuda", "AI": "Anguilla", "AL": "Albania", "AM": "Armenia", "AO": "Angola", "AQ": "Antarctica", "AR": "Argentina", "AS": "American Samoa", "AT": "Austria", "AU": "Australia", "AW": "Aruba", "AX": "Aland Islands", "AZ": "Azerbaijan", "BA": "Bosnia and Herzegovina", "BB": "Barbados", "BD": "Bangladesh", "BE": "Belgium", "BF": "Burkina Faso", "BG": "Bulgaria", "BH": "Bahrain", "BI": "Burundi", "BJ": "Benin", "BL": "Saint Barthelemy", "BM": "Bermuda", "BN": "Brunei", "BO": "Bolivia", "BQ": "Bonaire", "BR": "Brazil", "BS": "Bahamas", "BT": "Bhutan", "BV": "Bouvet Island", "BW": "Botswana", "BY": "Belarus", "BZ": "Belize", "CA": "Canada", "CC": "Cocos Islands", "CD": "Congo", "CF": "Central African Republic", "CG": "Congo", "CH": "Switzerland", "CI": "Cote D'Ivoire", "CK": "Cook Islands", "CL": "Chile", "CM": "Cameroon", "CN": "China", "CO": "Colombia", "CR": "Costa Rica", "CU": "Cuba", "CV": "Cabo Verde", "CW": "Curacao", "CX": "Christmas Island", "CY": "Cyprus", "CZ": "Czechia", "DE": "Germany", "DJ": "Djibouti", "DK": "Denmark", "DM": "Dominica", "DO": "Dominican Republic", "DZ": "Algeria", "EC": "Ecuador", "EE": "Estonia", "EG": "Egypt", "EH": "Western Sahara", "ER": "Eritrea", "ES": "Spain", "ET": "Ethiopia", "FI": "Finland", "FJ": "Fiji", "FK": "Falkland Islands", "FM": "Micronesia", "FO": "Faroe Islands", "FR": "France", "GA": "Gabon", "GB": "United Kingdom", "GD": "Grenada", "GE": "Georgia", "GF": "French Guiana", "GG": "Guernsey", "GH": "Ghana", "GI": "Gibraltar", "GL": "Greenland", "GM": "Gambia", "GN": "Guinea", "GP": "Guadeloupe", "GQ": "Equatorial Guinea", "GR": "Greece", "GS": "South Georgia", "GT": "Guatemala", "GU": "Guam", "GW": "Guinea-Bissau", "GY": "Guyana", "HK": "Hong Kong", "HM": "Heard Island", "HN": "Honduras", "HR": "Croatia", "HT": "Haiti", "HU": "Hungary", "ID": "Indonesia", "IE": "Ireland", "IL": "Israel", "IM": "Isle of Man", "IN": "India", "IO": "British Indian Ocean Territory", "IQ": "Iraq", "IR": "Iran", "IS": "Iceland", "IT": "Italy", "JE": "Jersey", "JM": "Jamaica", "JO": "Jordan", "JP": "Japan", "KE": "Kenya", "KG": "Kyrgyzstan", "KH": "Cambodia", "KI": "Kiribati", "KM": "Comoros", "KN": "Saint Kitts and Nevis", "KP": "North Korea", "KR": "South Korea", "KW": "Kuwait", "KY": "Cayman Islands", "KZ": "Kazakhstan", "LA": "Laos", "LB": "Lebanon", "LC": "Saint Lucia", "LI": "Liechtenstein", "LK": "Sri Lanka", "LR": "Liberia", "LS": "Lesotho", "LT": "Lithuania", "LU": "Luxembourg", "LV": "Latvia", "LY": "Libya", "MA": "Morocco", "MC": "Monaco", "MD": "Moldova", "ME": "Montenegro", "MF": "Saint Martin", "MG": "Madagascar", "MH": "Marshall Islands", "MK": "North Macedonia", "ML": "Mali", "MM": "Myanmar", "MN": "Mongolia", "MO": "Macao", "MP": "Northern Mariana Islands", "MQ": "Martinique", "MR": "Mauritania", "MS": "Montserrat", "MT": "Malta", "MU": "Mauritius", "MV": "Maldives", "MW": "Malawi", "MX": "Mexico", "MY": "Malaysia", "MZ": "Mozambique", "NA": "Namibia", "NC": "New Caledonia", "NE": "Niger", "NF": "Norfolk Island", "NG": "Nigeria", "NI": "Nicaragua", "NL": "Netherlands", "NO": "Norway", "NP": "Nepal", "NR": "Nauru", "NU": "Niue", "NZ": "New Zealand", "OM": "Oman", "PA": "Panama", "PE": "Peru", "PF": "French Polynesia", "PG": "Papua New Guinea", "PH": "Philippines", "PK": "Pakistan", "PL": "Poland", "PM": "Saint Pierre and Miquelon", "PN": "Pitcairn", "PR": "Puerto Rico", "PS": "Palestine", "PT": "Portugal", "PW": "Palau", "PY": "Paraguay", "QA": "Qatar", "RE": "Reunion", "RO": "Romania", "RS": "Serbia", "RU": "Russia", "RW": "Rwanda", "SA": "Saudi Arabia", "SB": "Solomon Islands", "SC": "Seychelles", "SD": "Sudan", "SE": "Sweden", "SG": "Singapore", "SH": "Saint Helena", "SI": "Slovenia", "SJ": "Svalbard and Jan Mayen", "SK": "Slovakia", "SL": "Sierra Leone", "SM": "San Marino", "SN": "Senegal", "SO": "Somalia", "SR": "Suriname", "SS": "South Sudan", "ST": "Sao Tome and Principe", "SV": "El Salvador", "SX": "Sint Maarten", "SY": "Syria", "SZ": "Eswatini", "TC": "Turks and Caicos Islands", "TD": "Chad", "TF": "French Southern Territories", "TG": "Togo", "TH": "Thailand", "TJ": "Tajikistan", "TK": "Tokelau", "TL": "Timor-Leste", "TM": "Turkmenistan", "TN": "Tunisia", "TO": "Tonga", "TR": "Turkey", "TT": "Trinidad and Tobago", "TV": "Tuvalu", "TW": "Taiwan", "TZ": "Tanzania", "UA": "Ukraine", "UG": "Uganda", "UM": "United States Minor Outlying Islands", "US": "United States", "UY": "Uruguay", "UZ": "Uzbekistan", "VA": "Vatican City", "VC": "Saint Vincent and the Grenadines", "VE": "Venezuela", "VG": "British Virgin Islands", "VI": "U.S. Virgin Islands", "VN": "Vietnam", "VU": "Vanuatu", "WF": "Wallis and Futuna", "WS": "Samoa", "YE": "Yemen", "YT": "Mayotte", "ZA": "South Africa", "ZM": "Zambia", "ZW": "Zimbabwe", } // 主要城市到国家的映射表 var cityToCountry = map[string]string{ // China "Beijing": "China", "Shanghai": "China", "Guangzhou": "China", "Shenzhen": "China", "HK": "China", "Tsuen Wan": "China", "Chengdu": "China", "Hangzhou": "China", "Wuhan": "China", "Xi'an": "China", "Nanjing": "China", "Tianjin": "China", "Chongqing": "China", "Shenyang": "China", "Dalian": "China", "Qingdao": "China", "Jinan": "China", "Harbin": "China", "Changchun": "China", "Shijiazhuang": "China", "Taiyuan": "China", "Hohhot": "China", "Yinchuan": "China", "Lanzhou": "China", "Xining": "China", "Urumqi": "China", "Lhasa": "China", "Kunming": "China", "Guiyang": "China", "Nanning": "China", "Haikou": "China", "Changsha": "China", "Zhengzhou": "China", "Nanchang": "China", "Hefei": "China", "Fuzhou": "China", "Taipei": "China", "Hong Kong": "China", "Macao": "China", // United States "New York": "United States", "Chicago": "United States", "Houston": "United States", "Phoenix": "United States", "Philadelphia": "United States", "San Antonio": "United States", "San Diego": "United States", "Dallas": "United States", "San Jose": "United States", "Austin": "United States", "Jacksonville": "United States", "Fort Worth": "United States", "Columbus": "United States", "Indianapolis": "United States", "Charlotte": "United States", "San Francisco": "United States", "Seattle": "United States", "Denver": "United States", "Washington": "United States", "Boston": "United States", "El Paso": "United States", "Detroit": "United States", "Nashville": "United States", "Portland Oregon": "United States", "Memphis": "United States", "Oklahoma City": "United States", "Las Vegas": "United States", "Louisville": "United States", "Baltimore": "United States", "Milwaukee": "United States", "Albuquerque": "United States", "Tucson": "United States", "Fresno": "United States", "Sacramento": "United States", "Mesa": "United States", "Kansas City": "United States", "Atlanta": "United States", "Long Beach": "United States", "Colorado Springs": "United States", "Raleigh": "United States", "Miami": "United States", "Virginia Beach": "United States", "Omaha": "United States", "Oakland": "United States", "Minneapolis": "United States", "Tulsa": "United States", "Arlington": "United States", // Japan "Tokyo": "Japan", "Osaka": "Japan", "Yokohama": "Japan", "Nagoya": "Japan", "Sapporo": "Japan", "Fukuoka": "Japan", "Kobe": "Japan", "Kawasaki": "Japan", "Kyoto": "Japan", "Saitama": "Japan", "Hiroshima": "Japan", "Sendai": "Japan", "Kitakyushu": "Japan", "Chiba": "Japan", "Sakai": "Japan", "Niigata": "Japan", "Hamamatsu": "Japan", "Okayama": "Japan", "Sagamihara": "Japan", "Kumamoto": "Japan", // United Kingdom "London": "United Kingdom", "Birmingham": "United Kingdom", "Manchester": "United Kingdom", "Glasgow": "United Kingdom", "Liverpool": "United Kingdom", "Edinburgh": "United Kingdom", "Leeds": "United Kingdom", "Sheffield": "United Kingdom", "Bristol": "United Kingdom", "Cardiff": "United Kingdom", "Belfast": "United Kingdom", "Leicester": "United Kingdom", "Coventry": "United Kingdom", "Bradford": "United Kingdom", "Nottingham": "United Kingdom", "Kingston upon Hull": "United Kingdom", "Newcastle upon Tyne": "United Kingdom", "Stoke-on-Trent": "United Kingdom", "Southampton": "United Kingdom", "Derby": "United Kingdom", // Germany "Berlin": "Germany", "Hamburg": "Germany", "Munich": "Germany", "Cologne": "Germany", "Frankfurt": "Germany", "Stuttgart": "Germany", "Düsseldorf": "Germany", "Dortmund": "Germany", "Essen": "Germany", "Leipzig": "Germany", "Bremen": "Germany", "Dresden": "Germany", "Hanover": "Germany", "Nuremberg": "Germany", "Duisburg": "Germany", "Bochum": "Germany", "Wuppertal": "Germany", "Bielefeld": "Germany", "Bonn": "Germany", "Münster": "Germany", // France "Paris": "France", "Marseille": "France", "Lyon": "France", "Toulouse": "France", "Nice": "France", "Nantes": "France", "Strasbourg": "France", "Montpellier": "France", "Bordeaux": "France", "Lille": "France", "Rennes": "France", "Reims": "France", "Le Havre": "France", "Saint-Étienne": "France", "Toulon": "France", "Grenoble": "France", "Dijon": "France", "Angers": "France", "Nîmes": "France", "Villeurbanne": "France", // Italy "Rome": "Italy", "Milan": "Italy", "Naples": "Italy", "Turin": "Italy", "Palermo": "Italy", "Genoa": "Italy", "Bologna": "Italy", "Florence": "Italy", "Bari": "Italy", "Catania": "Italy", "Venice": "Italy", "Verona": "Italy", "Messina": "Italy", "Padua": "Italy", "Trieste": "Italy", "Taranto": "Italy", // Spain "Madrid": "Spain", "Seville": "Spain", "Zaragoza": "Spain", "Málaga": "Spain", "Murcia": "Spain", "Palma": "Spain", "Las Palmas": "Spain", "Bilbao": "Spain", "Alicante": "Spain", "Valladolid": "Spain", "Vigo": "Spain", "Gijón": "Spain", "Hospitalet": "Spain", "A Coruña": "Spain", "Vitoria-Gasteiz": "Spain", "Granada": "Spain", "Elche": "Spain", // Canada "Toronto": "Canada", "Montreal": "Canada", "Vancouver": "Canada", "Calgary": "Canada", "Edmonton": "Canada", "Ottawa": "Canada", "Winnipeg": "Canada", "Quebec City": "Canada", "Hamilton Canada": "Canada", "Kitchener": "Canada", "London Ontario": "Canada", "Victoria Canada": "Canada", "Halifax": "Canada", "Oshawa": "Canada", "Windsor Canada": "Canada", "Saskatoon": "Canada", "Regina": "Canada", "St. John's": "Canada", "Kelowna": "Canada", "Barrie": "Canada", // Australia "Sydney": "Australia", "Melbourne": "Australia", "Brisbane": "Australia", "Perth": "Australia", "Adelaide": "Australia", "Gold Coast": "Australia", "Newcastle Australia": "Australia", "Canberra": "Australia", "Sunshine Coast": "Australia", "Wollongong": "Australia", "Hobart": "Australia", "Geelong": "Australia", "Townsville": "Australia", "Cairns": "Australia", "Toowoomba": "Australia", "Darwin": "Australia", // India "Mumbai": "India", "Delhi": "India", "Bangalore": "India", "Hyderabad": "India", "Ahmedabad": "India", "Chennai": "India", "Kolkata": "India", "Surat": "India", "Pune": "India", "Jaipur": "India", "Lucknow": "India", "Kanpur": "India", "Nagpur": "India", "Indore": "India", "Thane": "India", "Bhopal": "India", "Visakhapatnam": "India", "Pimpri": "India", "Patna": "India", "Vadodara": "India", "Ludhiana": "India", "Agra": "India", "Nashik": "India", "Faridabad": "India", "Meerut": "India", "Rajkot": "India", "Kalyan": "India", "Vasai": "India", // Brazil "São Paulo": "Brazil", "Rio de Janeiro": "Brazil", "Brasília": "Brazil", "Salvador": "Brazil", "Fortaleza": "Brazil", "Belo Horizonte": "Brazil", "Manaus": "Brazil", "Curitiba": "Brazil", "Recife": "Brazil", "Porto Alegre": "Brazil", "Belém": "Brazil", "Goiânia": "Brazil", "Guarulhos": "Brazil", "Campinas": "Brazil", "São Luís": "Brazil", "São Gonçalo": "Brazil", // Russia "Moscow": "Russia", "Saint Petersburg": "Russia", "Novosibirsk": "Russia", "Yekaterinburg": "Russia", "Nizhny Novgorod": "Russia", "Kazan": "Russia", "Chelyabinsk": "Russia", "Omsk": "Russia", "Samara": "Russia", "Rostov-on-Don": "Russia", "Ufa": "Russia", "Krasnoyarsk": "Russia", "Perm": "Russia", "Voronezh": "Russia", "Volgograd": "Russia", "Krasnodar": "Russia", // South Korea "Seoul": "South Korea", "Busan": "South Korea", "Incheon": "South Korea", "Daegu": "South Korea", "Daejeon": "South Korea", "Gwangju": "South Korea", "Suwon": "South Korea", "Ulsan": "South Korea", "Changwon": "South Korea", "Goyang": "South Korea", "Yongin": "South Korea", "Bucheon": "South Korea", // Mexico "Mexico City": "Mexico", "Guadalajara": "Mexico", "Monterrey": "Mexico", "Puebla": "Mexico", "Tijuana": "Mexico", "León": "Mexico", "Juárez": "Mexico", "Torreón": "Mexico", "Querétaro": "Mexico", "San Luis Potosí": "Mexico", "Mexicali": "Mexico", // Indonesia "Jakarta": "Indonesia", "Surabaya": "Indonesia", "Bandung": "Indonesia", "Bekasi": "Indonesia", "Medan": "Indonesia", "Tangerang": "Indonesia", "Depok": "Indonesia", "Semarang": "Indonesia", "Palembang": "Indonesia", "Makassar": "Indonesia", "Batam": "Indonesia", "Bogor": "Indonesia", // Turkey "Istanbul": "Turkey", "Ankara": "Turkey", "Izmir": "Turkey", "Bursa": "Turkey", "Adana": "Turkey", "Gaziantep": "Turkey", "Konya": "Turkey", "Antalya": "Turkey", "Kayseri": "Turkey", "Mersin": "Turkey", "Eskişehir": "Turkey", "Diyarbakır": "Turkey", // Netherlands "Amsterdam": "Netherlands", "Rotterdam": "Netherlands", "The Hague": "Netherlands", "Utrecht": "Netherlands", "Eindhoven": "Netherlands", "Tilburg": "Netherlands", "Groningen": "Netherlands", "Almere": "Netherlands", "Breda": "Netherlands", "Nijmegen": "Netherlands", "Enschede": "Netherlands", "Haarlem": "Netherlands", // Saudi Arabia "Riyadh": "Saudi Arabia", "Jeddah": "Saudi Arabia", "Mecca": "Saudi Arabia", "Medina": "Saudi Arabia", "Dammam": "Saudi Arabia", "Khobar": "Saudi Arabia", "Tabuk": "Saudi Arabia", "Buraidah": "Saudi Arabia", "Khamis Mushait": "Saudi Arabia", "Hafar Al-Batin": "Saudi Arabia", "Jubail": "Saudi Arabia", "Taif": "Saudi Arabia", // Argentina "Buenos Aires": "Argentina", "Rosario": "Argentina", "Mendoza": "Argentina", "Tucumán": "Argentina", "La Plata": "Argentina", "Mar del Plata": "Argentina", "Salta": "Argentina", "Santa Fe": "Argentina", "San Juan": "Argentina", "Resistencia": "Argentina", "Santiago del Estero": "Argentina", // Poland "Warsaw": "Poland", "Kraków": "Poland", "Łódź": "Poland", "Wrocław": "Poland", "Poznań": "Poland", "Gdańsk": "Poland", "Szczecin": "Poland", "Bydgoszcz": "Poland", "Lublin": "Poland", "Katowice": "Poland", "Białystok": "Poland", "Gdynia": "Poland", // Ukraine "Kiev": "Ukraine", "Kharkiv": "Ukraine", "Odessa": "Ukraine", "Dnipro": "Ukraine", "Donetsk": "Ukraine", "Zaporizhzhia": "Ukraine", "Lviv": "Ukraine", "Kryvyi Rih": "Ukraine", "Mykolaiv": "Ukraine", "Mariupol": "Ukraine", "Luhansk": "Ukraine", "Vinnytsia": "Ukraine", // Egypt "Cairo": "Egypt", "Alexandria": "Egypt", "Giza": "Egypt", "Shubra El Kheima": "Egypt", "Port Said": "Egypt", "Suez": "Egypt", "Luxor": "Egypt", "Mansoura": "Egypt", "El Mahalla El Kubra": "Egypt", "Tanta": "Egypt", "Asyut": "Egypt", "Ismailia": "Egypt", // Nigeria "Lagos": "Nigeria", "Kano": "Nigeria", "Ibadan": "Nigeria", "Abuja": "Nigeria", "Port Harcourt": "Nigeria", "Benin City": "Nigeria", "Maiduguri": "Nigeria", "Zaria": "Nigeria", "Aba": "Nigeria", "Jos": "Nigeria", "Ilorin": "Nigeria", "Oyo": "Nigeria", // South Africa "Johannesburg": "South Africa", "Cape Town": "South Africa", "Durban": "South Africa", "Pretoria": "South Africa", "Soweto": "South Africa", "Port Elizabeth": "South Africa", "Pietermaritzburg": "South Africa", "Benoni": "South Africa", "Tembisa": "South Africa", "East London": "South Africa", "Vereeniging": "South Africa", "Bloemfontein": "South Africa", // Iran "Tehran": "Iran", "Mashhad": "Iran", "Isfahan": "Iran", "Karaj": "Iran", "Shiraz": "Iran", "Tabriz": "Iran", "Qom": "Iran", "Ahvaz": "Iran", "Kermanshah": "Iran", "Urmia": "Iran", "Rasht": "Iran", "Zahedan": "Iran", // Thailand "Bangkok": "Thailand", "Nonthaburi": "Thailand", "Pak Kret": "Thailand", "Hat Yai": "Thailand", "Chiang Mai": "Thailand", "Phuket": "Thailand", "Pattaya": "Thailand", "Nakhon Ratchasima": "Thailand", "Khon Kaen": "Thailand", "Udon Thani": "Thailand", "Surat Thani": "Thailand", "Nakhon Si Thammarat": "Thailand", // Vietnam "Ho Chi Minh City": "Vietnam", "Hanoi": "Vietnam", "Haiphong": "Vietnam", "Da Nang": "Vietnam", "Bien Hoa": "Vietnam", "Hue": "Vietnam", "Nha Trang": "Vietnam", "Can Tho": "Vietnam", "Rach Gia": "Vietnam", "Qui Nhon": "Vietnam", "Vung Tau": "Vietnam", "Nam Dinh": "Vietnam", // Philippines "Manila": "Philippines", "Quezon City": "Philippines", "Davao": "Philippines", "Caloocan": "Philippines", "Cebu City": "Philippines", "Zamboanga": "Philippines", "Antipolo": "Philippines", "Taguig": "Philippines", "Pasig": "Philippines", "Cagayan de Oro": "Philippines", "Paranaque": "Philippines", "Makati": "Philippines", // Malaysia "Kuala Lumpur": "Malaysia", "George Town": "Malaysia", "Ipoh": "Malaysia", "Shah Alam": "Malaysia", "Petaling Jaya": "Malaysia", "Johor Bahru": "Malaysia", "Seremban": "Malaysia", "Kuching": "Malaysia", "Kota Kinabalu": "Malaysia", "Klang": "Malaysia", "Kajang": "Malaysia", "Subang Jaya": "Malaysia", // Bangladesh "Dhaka": "Bangladesh", "Chittagong": "Bangladesh", "Sylhet": "Bangladesh", "Khulna": "Bangladesh", "Rajshahi": "Bangladesh", "Rangpur": "Bangladesh", "Barisal": "Bangladesh", "Comilla": "Bangladesh", "Mymensingh": "Bangladesh", "Narayanganj": "Bangladesh", "Gazipur": "Bangladesh", "Tongi": "Bangladesh", // Pakistan "Karachi": "Pakistan", "Lahore": "Pakistan", "Faisalabad": "Pakistan", "Rawalpindi": "Pakistan", "Gujranwala": "Pakistan", "Peshawar": "Pakistan", "Multan": "Pakistan", "Islamabad": "Pakistan", "Quetta": "Pakistan", "Bahawalpur": "Pakistan", "Sargodha": "Pakistan", "Sialkot": "Pakistan", // Afghanistan "Kabul": "Afghanistan", "Kandahar": "Afghanistan", "Herat": "Afghanistan", "Mazar-i-Sharif": "Afghanistan", "Jalalabad": "Afghanistan", "Kunduz": "Afghanistan", "Ghazni": "Afghanistan", "Bamyan": "Afghanistan", // Israel "Jerusalem": "Israel", "Tel Aviv": "Israel", "Haifa": "Israel", "Rishon LeZion": "Israel", "Petah Tikva": "Israel", "Ashdod": "Israel", "Netanya": "Israel", "Beer Sheva": "Israel", "Holon": "Israel", "Bnei Brak": "Israel", "Ramat Gan": "Israel", "Ashkelon": "Israel", // Iraq "Baghdad": "Iraq", "Basra": "Iraq", "Mosul": "Iraq", "Erbil": "Iraq", "Sulaymaniyah": "Iraq", "Najaf": "Iraq", "Karbala": "Iraq", "Nasiriyah": "Iraq", "Amarah": "Iraq", "Duhok": "Iraq", "Ramadi": "Iraq", "Fallujah": "Iraq", // Morocco "Casablanca": "Morocco", "Rabat": "Morocco", "Fes": "Morocco", "Marrakech": "Morocco", "Tangier": "Morocco", "Meknes": "Morocco", "Oujda": "Morocco", "Kenitra": "Morocco", "Tetouan": "Morocco", "Safi": "Morocco", "El Jadida": "Morocco", "Nador": "Morocco", // Algeria "Algiers": "Algeria", "Oran": "Algeria", "Constantine": "Algeria", "Batna": "Algeria", "Djelfa": "Algeria", "Setif": "Algeria", "Annaba": "Algeria", "Sidi Bel Abbes": "Algeria", "Biskra": "Algeria", "Tebessa": "Algeria", "El Oued": "Algeria", "Skikda": "Algeria", // Kenya "Nairobi": "Kenya", "Mombasa": "Kenya", "Kisumu": "Kenya", "Nakuru": "Kenya", "Eldoret": "Kenya", "Kitale": "Kenya", "Malindi": "Kenya", "Garissa": "Kenya", "Kakamega": "Kenya", "Nyeri": "Kenya", "Machakos": "Kenya", "Meru": "Kenya", // Ethiopia "Addis Ababa": "Ethiopia", "Dire Dawa": "Ethiopia", "Mek'ele": "Ethiopia", "Gondar": "Ethiopia", "Adama": "Ethiopia", "Awasa": "Ethiopia", "Bahir Dar": "Ethiopia", "Dessie": "Ethiopia", "Jimma": "Ethiopia", "Jijiga": "Ethiopia", "Shashamane": "Ethiopia", "Nekemte": "Ethiopia", // Ghana "Accra": "Ghana", "Kumasi": "Ghana", "Tamale": "Ghana", "Sekondi-Takoradi": "Ghana", "Ashaiman": "Ghana", "Cape Coast": "Ghana", "Obuasi": "Ghana", "Teshie": "Ghana", "Madina": "Ghana", "Koforidua": "Ghana", "Wa": "Ghana", "Techiman": "Ghana", // Chile "Santiago": "Chile", "Valparaíso": "Chile", "Concepción": "Chile", "La Serena": "Chile", "Antofagasta": "Chile", "Temuco": "Chile", "Rancagua": "Chile", "Talca": "Chile", "Arica": "Chile", "Chillán": "Chile", "Iquique": "Chile", // Colombia "Bogotá": "Colombia", "Medellín": "Colombia", "Cali": "Colombia", "Barranquilla": "Colombia", "Cartagena": "Colombia", "Cúcuta": "Colombia", "Bucaramanga": "Colombia", "Pereira": "Colombia", "Santa Marta": "Colombia", "Ibagué": "Colombia", "Pasto": "Colombia", "Manizales": "Colombia", // Peru "Lima": "Peru", "Arequipa": "Peru", "Trujillo": "Peru", "Chiclayo": "Peru", "Piura": "Peru", "Iquitos": "Peru", "Cusco": "Peru", "Chimbote": "Peru", "Huancayo": "Peru", "Tacna": "Peru", "Juliaca": "Peru", "Ica": "Peru", // Venezuela "Caracas": "Venezuela", "Maracaibo": "Venezuela", "Barquisimeto": "Venezuela", "Maracay": "Venezuela", "Ciudad Guayana": "Venezuela", "San Cristóbal": "Venezuela", "Maturín": "Venezuela", "Ciudad Bolívar": "Venezuela", "Cumana": "Venezuela", // Ecuador "Guayaquil": "Ecuador", "Quito": "Ecuador", "Cuenca": "Ecuador", "Santo Domingo": "Ecuador", "Machala": "Ecuador", "Durán": "Ecuador", "Manta": "Ecuador", "Portoviejo": "Ecuador", "Ambato": "Ecuador", "Riobamba": "Ecuador", "Loja": "Ecuador", "Esmeraldas": "Ecuador", // Bolivia "Santa Cruz": "Bolivia", "La Paz": "Bolivia", "Cochabamba": "Bolivia", "Oruro": "Bolivia", "Sucre": "Bolivia", "Tarija": "Bolivia", "Potosí": "Bolivia", "Trinidad": "Bolivia", // Uruguay "Montevideo": "Uruguay", "Salto": "Uruguay", "Paysandú": "Uruguay", "Las Piedras": "Uruguay", "Rivera": "Uruguay", "Maldonado": "Uruguay", "Tacuarembó": "Uruguay", "Melo": "Uruguay", // Paraguay "Asunción": "Paraguay", "Ciudad del Este": "Paraguay", "San Lorenzo": "Paraguay", "Luque": "Paraguay", "Capiatá": "Paraguay", "Lambaré": "Paraguay", "Fernando de la Mora": "Paraguay", "Limpio": "Paraguay", // Norway "Oslo": "Norway", "Bergen": "Norway", "Trondheim": "Norway", "Stavanger": "Norway", "Bærum": "Norway", "Kristiansand": "Norway", "Fredrikstad": "Norway", "Sandnes": "Norway", "Tromsø": "Norway", "Drammen": "Norway", "Asker": "Norway", "Lillestrøm": "Norway", // Sweden "Stockholm": "Sweden", "Gothenburg": "Sweden", "Malmö": "Sweden", "Uppsala": "Sweden", "Västerås": "Sweden", "Örebro": "Sweden", "Linköping": "Sweden", "Helsingborg": "Sweden", "Jönköping": "Sweden", "Norrköping": "Sweden", "Lund": "Sweden", "Umeå": "Sweden", // Finland "Helsinki": "Finland", "Espoo": "Finland", "Tampere": "Finland", "Vantaa": "Finland", "Oulu": "Finland", "Turku": "Finland", "Jyväskylä": "Finland", "Lahti": "Finland", "Kuopio": "Finland", "Pori": "Finland", "Joensuu": "Finland", "Lappeenranta": "Finland", // Denmark "Copenhagen": "Denmark", "Aarhus": "Denmark", "Odense": "Denmark", "Aalborg": "Denmark", "Esbjerg": "Denmark", "Randers": "Denmark", "Kolding": "Denmark", "Horsens": "Denmark", "Vejle": "Denmark", "Roskilde": "Denmark", "Herning": "Denmark", "Silkeborg": "Denmark", // Switzerland "Zurich": "Switzerland", "Geneva": "Switzerland", "Basel": "Switzerland", "Bern": "Switzerland", "Lausanne": "Switzerland", "Winterthur": "Switzerland", "Lucerne": "Switzerland", "St. Gallen": "Switzerland", "Lugano": "Switzerland", "Biel": "Switzerland", "Thun": "Switzerland", "Köniz": "Switzerland", // Austria "Innsbruck": "Austria", "Klagenfurt": "Austria", "Villach": "Austria", "Wels": "Austria", "Sankt Pölten": "Austria", "Dornbirn": "Austria", "Steyr": "Austria", "Wiener Neustadt": "Austria", "Feldkirch": "Austria", "Bregenz": "Austria", "Leonding": "Austria", "Klosterneuburg": "Austria", // Belgium "Brussels": "Belgium", "Antwerp": "Belgium", "Ghent": "Belgium", "Charleroi": "Belgium", "Liège": "Belgium", "Bruges": "Belgium", "Namur": "Belgium", "Leuven": "Belgium", "Mons": "Belgium", "Aalst": "Belgium", "Mechelen": "Belgium", "La Louvière": "Belgium", // Czech Republic (Czechia) "Prague": "Czechia", "Brno": "Czechia", "Ostrava": "Czechia", "Plzen": "Czechia", "Liberec": "Czechia", "Olomouc": "Czechia", "Budweis": "Czechia", "Hradec Králové": "Czechia", "Ústí nad Labem": "Czechia", "Pardubice": "Czechia", "Zlín": "Czechia", "Havířov": "Czechia", // Hungary "Budapest": "Hungary", "Debrecen": "Hungary", "Szeged": "Hungary", "Miskolc": "Hungary", "Pécs": "Hungary", "Győr": "Hungary", "Nyíregyháza": "Hungary", "Kecskemét": "Hungary", "Székesfehérvár": "Hungary", "Szombathely": "Hungary", "Érd": "Hungary", "Tatabánya": "Hungary", // Romania "Bucharest": "Romania", "Cluj-Napoca": "Romania", "Timișoara": "Romania", "Iași": "Romania", "Constanța": "Romania", "Craiova": "Romania", "Brașov": "Romania", "Galați": "Romania", "Ploiești": "Romania", "Oradea": "Romania", "Brăila": "Romania", "Arad": "Romania", // Serbia "Belgrade": "Serbia", "Novi Sad": "Serbia", "Niš": "Serbia", "Kragujevac": "Serbia", "Subotica": "Serbia", "Zrenjanin": "Serbia", "Pančevo": "Serbia", "Čačak": "Serbia", "Novi Pazar": "Serbia", "Kraljevo": "Serbia", "Smederevo": "Serbia", "Leskovac": "Serbia", // Croatia "Zagreb": "Croatia", "Split": "Croatia", "Rijeka": "Croatia", "Osijek": "Croatia", "Zadar": "Croatia", "Pula": "Croatia", "Slavonski Brod": "Croatia", "Karlovac": "Croatia", "Varaždin": "Croatia", "Šibenik": "Croatia", "Sisak": "Croatia", "Velika Gorica": "Croatia", // Greece "Athens": "Greece", "Thessaloniki": "Greece", "Patras": "Greece", "Heraklion": "Greece", "Larissa": "Greece", "Volos": "Greece", "Rhodes": "Greece", "Ioannina": "Greece", "Chania": "Greece", "Chalcis": "Greece", "Serres": "Greece", "Alexandroupoli": "Greece", // Portugal "Lisbon": "Portugal", "Porto": "Portugal", "Vila Nova de Gaia": "Portugal", "Amadora": "Portugal", "Braga": "Portugal", "Funchal": "Portugal", "Coimbra": "Portugal", "Setúbal": "Portugal", "Almada": "Portugal", "Agualva-Cacém": "Portugal", "Queluz": "Portugal", "Rio Tinto": "Portugal", // Bulgaria "Sofia": "Bulgaria", "Plovdiv": "Bulgaria", "Varna": "Bulgaria", "Burgas": "Bulgaria", "Ruse": "Bulgaria", "Stara Zagora": "Bulgaria", "Pleven": "Bulgaria", "Sliven": "Bulgaria", "Dobrich": "Bulgaria", "Shumen": "Bulgaria", "Pernik": "Bulgaria", "Haskovo": "Bulgaria", // Slovakia "Bratislava": "Slovakia", "Košice": "Slovakia", "Prešov": "Slovakia", "Žilina": "Slovakia", "Banská Bystrica": "Slovakia", "Nitra": "Slovakia", "Trnava": "Slovakia", "Martin": "Slovakia", "Trenčín": "Slovakia", "Poprad": "Slovakia", "Prievidza": "Slovakia", "Zvolen": "Slovakia", // Slovenia "Ljubljana": "Slovenia", "Maribor": "Slovenia", "Celje": "Slovenia", "Kranj": "Slovenia", "Velenje": "Slovenia", "Koper": "Slovenia", "Novo Mesto": "Slovenia", "Ptuj": "Slovenia", "Trbovlje": "Slovenia", "Kamnik": "Slovenia", "Jesenice": "Slovenia", "Nova Gorica": "Slovenia", // Lithuania "Vilnius": "Lithuania", "Kaunas": "Lithuania", "Klaipėda": "Lithuania", "Šiauliai": "Lithuania", "Panevėžys": "Lithuania", "Alytus": "Lithuania", "Marijampolė": "Lithuania", "Mažeikiai": "Lithuania", "Jonava": "Lithuania", "Utena": "Lithuania", "Kėdainiai": "Lithuania", "Telšiai": "Lithuania", // Latvia "Riga": "Latvia", "Daugavpils": "Latvia", "Liepāja": "Latvia", "Jelgava": "Latvia", "Jūrmala": "Latvia", "Ventspils": "Latvia", "Rēzekne": "Latvia", "Valmiera": "Latvia", "Jēkabpils": "Latvia", "Ogre": "Latvia", "Tukums": "Latvia", "Salaspils": "Latvia", // Estonia "Tallinn": "Estonia", "Tartu": "Estonia", "Narva": "Estonia", "Pärnu": "Estonia", "Kohtla-Järve": "Estonia", "Viljandi": "Estonia", "Rakvere": "Estonia", "Maardu": "Estonia", "Sillamäe": "Estonia", "Kuressaare": "Estonia", "Võru": "Estonia", "Valga": "Estonia", // New Zealand "Auckland": "New Zealand", "Wellington": "New Zealand", "Christchurch": "New Zealand", "Hamilton": "New Zealand", "Tauranga": "New Zealand", "Napier-Hastings": "New Zealand", "Dunedin": "New Zealand", "Palmerston North": "New Zealand", "Nelson": "New Zealand", "Rotorua": "New Zealand", "New Plymouth": "New Zealand", "Whangarei": "New Zealand", // Singapore "Singapore": "Singapore", // United Arab Emirates "Dubai": "United Arab Emirates", "Abu Dhabi": "United Arab Emirates", "Sharjah": "United Arab Emirates", "Al Ain": "United Arab Emirates", "Ajman": "United Arab Emirates", "Ras Al Khaimah": "United Arab Emirates", "Fujairah": "United Arab Emirates", "Umm Al Quwain": "United Arab Emirates", // Lebanon "Beirut": "Lebanon", "Sidon": "Lebanon", "Tyre": "Lebanon", "Nabatieh": "Lebanon", "Jounieh": "Lebanon", "Zahle": "Lebanon", "Baalbek": "Lebanon", // Jordan "Amman": "Jordan", "Zarqa": "Jordan", "Irbid": "Jordan", "Russeifa": "Jordan", "Wadi as-Sir": "Jordan", "Aqaba": "Jordan", "Madaba": "Jordan", "Salt": "Jordan", // Yemen "Sanaa": "Yemen", "Aden": "Yemen", "Taiz": "Yemen", "Hodeidah": "Yemen", "Mukalla": "Yemen", "Ibb": "Yemen", "Dhamar": "Yemen", "Zinjibar": "Yemen", // Syria "Damascus": "Syria", "Aleppo": "Syria", "Homs": "Syria", "Latakia": "Syria", "Hama": "Syria", "Raqqa": "Syria", "Deir ez-Zor": "Syria", "Hasakah": "Syria", // Oman "Muscat": "Oman", "Seeb": "Oman", "Salalah": "Oman", "Bawshar": "Oman", "Sohar": "Oman", "Sur": "Oman", "Ibra": "Oman", "Nizwa": "Oman", // Qatar "Doha": "Qatar", "Al Rayyan": "Qatar", "Umm Salal": "Qatar", "Al Wakrah": "Qatar", "Al Khor": "Qatar", "Dukhan": "Qatar", "Lusail": "Qatar", "Mesaieed": "Qatar", // Kuwait "Kuwait City": "Kuwait", "Al Ahmadi": "Kuwait", "Hawally": "Kuwait", "As Salimiyah": "Kuwait", "Sabah as-Salim": "Kuwait", "Al Farwaniyah": "Kuwait", "Al Fahahil": "Kuwait", "Ar Riqqah": "Kuwait", // Bahrain "Manama": "Bahrain", "Riffa": "Bahrain", "Muharraq": "Bahrain", "Hamad Town": "Bahrain", "A'ali": "Bahrain", "Isa Town": "Bahrain", "Sitra": "Bahrain", "Budaiya": "Bahrain", // Cyprus "Nicosia": "Cyprus", "Limassol": "Cyprus", "Larnaca": "Cyprus", "Famagusta": "Cyprus", "Paphos": "Cyprus", "Kyrenia": "Cyprus", "Protaras": "Cyprus", "Paralimni": "Cyprus", // Malta "Valletta": "Malta", "Birkirkara": "Malta", "Mosta": "Malta", "Qormi": "Malta", "Zabbar": "Malta", "San Pawl il-Bahar": "Malta", "Tarxien": "Malta", "Naxxar": "Malta", // Iceland "Reykjavik": "Iceland", "Kopavogur": "Iceland", "Hafnarfjordur": "Iceland", "Akureyri": "Iceland", "Reykjanesbaer": "Iceland", "Gardabaer": "Iceland", "Mosfellsbaer": "Iceland", "Arborg": "Iceland", // Luxembourg "Luxembourg City": "Luxembourg", "Esch-sur-Alzette": "Luxembourg", "Dudelange": "Luxembourg", "Schifflange": "Luxembourg", "Bettembourg": "Luxembourg", "Petange": "Luxembourg", "Ettelbruck": "Luxembourg", "Diekirch": "Luxembourg", // Belarus "Minsk": "Belarus", "Gomel": "Belarus", "Mogilev": "Belarus", "Vitebsk": "Belarus", "Grodno": "Belarus", "Brest": "Belarus", "Bobruisk": "Belarus", "Baranovichi": "Belarus", // Moldova "Chisinau": "Moldova", "Tiraspol": "Moldova", "Balti": "Moldova", "Bender": "Moldova", "Rybnitsa": "Moldova", "Cahul": "Moldova", "Ungheni": "Moldova", "Soroca": "Moldova", // North Macedonia "Skopje": "North Macedonia", "Bitola": "North Macedonia", "Kumanovo": "North Macedonia", "Prilep": "North Macedonia", "Tetovo": "North Macedonia", "Veles": "North Macedonia", "Shtip": "North Macedonia", "Ohrid": "North Macedonia", // Albania "Tirana": "Albania", "Durres": "Albania", "Vlore": "Albania", "Elbasan": "Albania", "Shkoder": "Albania", "Fier": "Albania", "Korce": "Albania", "Berat": "Albania", // Montenegro "Podgorica": "Montenegro", "Niksic": "Montenegro", "Pljevlja": "Montenegro", "Bijelo Polje": "Montenegro", "Cetinje": "Montenegro", "Bar": "Montenegro", "Herceg Novi": "Montenegro", "Berane": "Montenegro", // Bosnia and Herzegovina "Sarajevo": "Bosnia and Herzegovina", "Banja Luka": "Bosnia and Herzegovina", "Tuzla": "Bosnia and Herzegovina", "Zenica": "Bosnia and Herzegovina", "Mostar": "Bosnia and Herzegovina", "Prijedor": "Bosnia and Herzegovina", "Brčko": "Bosnia and Herzegovina", "Bijeljina": "Bosnia and Herzegovina", // Armenia "Yerevan": "Armenia", "Gyumri": "Armenia", "Vanadzor": "Armenia", "Vagharshapat": "Armenia", "Hrazdan": "Armenia", "Abovyan": "Armenia", "Kapan": "Armenia", "Armavir": "Armenia", // Georgia "Tbilisi": "Georgia", "Kutaisi": "Georgia", "Batumi": "Georgia", "Rustavi": "Georgia", "Gori": "Georgia", "Zugdidi": "Georgia", "Poti": "Georgia", "Kobuleti": "Georgia", // Azerbaijan "Baku": "Azerbaijan", "Ganja": "Azerbaijan", "Sumqayit": "Azerbaijan", "Mingachevir": "Azerbaijan", "Quba": "Azerbaijan", "Lankaran": "Azerbaijan", "Shaki": "Azerbaijan", "Yevlax": "Azerbaijan", // Kazakhstan "Almaty": "Kazakhstan", "Nur-Sultan": "Kazakhstan", "Shymkent": "Kazakhstan", "Aktobe": "Kazakhstan", "Taraz": "Kazakhstan", "Pavlodar": "Kazakhstan", "Ust-Kamenogorsk": "Kazakhstan", "Semey": "Kazakhstan", "Atyrau": "Kazakhstan", "Kostanay": "Kazakhstan", "Kyzylorda": "Kazakhstan", "Oral": "Kazakhstan", // Uzbekistan "Tashkent": "Uzbekistan", "Namangan": "Uzbekistan", "Samarkand": "Uzbekistan", "Andijan": "Uzbekistan", "Nukus": "Uzbekistan", "Fergana": "Uzbekistan", "Bukhara": "Uzbekistan", "Qarshi": "Uzbekistan", "Kokand": "Uzbekistan", "Margilan": "Uzbekistan", "Chirchiq": "Uzbekistan", "Termez": "Uzbekistan", // Kyrgyzstan "Bishkek": "Kyrgyzstan", "Osh": "Kyrgyzstan", "Jalal-Abad": "Kyrgyzstan", "Karakol": "Kyrgyzstan", "Tokmok": "Kyrgyzstan", "Uzgen": "Kyrgyzstan", "Naryn": "Kyrgyzstan", "Talas": "Kyrgyzstan", // Tajikistan "Dushanbe": "Tajikistan", "Khujand": "Tajikistan", "Kulob": "Tajikistan", "Qurghonteppa": "Tajikistan", "Istaravshan": "Tajikistan", "Isfara": "Tajikistan", "Panjakent": "Tajikistan", "Tursunzoda": "Tajikistan", // Turkmenistan "Ashgabat": "Turkmenistan", "Turkmenbashi": "Turkmenistan", "Dasoguz": "Turkmenistan", "Mary": "Turkmenistan", "Balkanabat": "Turkmenistan", "Bayramaly": "Turkmenistan", "Tejen": "Turkmenistan", "Serdar": "Turkmenistan", // Mongolia "Ulaanbaatar": "Mongolia", "Erdenet": "Mongolia", "Darkhan": "Mongolia", "Choibalsan": "Mongolia", "Murun": "Mongolia", "Bayankhongor": "Mongolia", "Ulgii": "Mongolia", "Khovd": "Mongolia", // Myanmar "Yangon": "Myanmar", "Mandalay": "Myanmar", "Naypyidaw": "Myanmar", "Mawlamyine": "Myanmar", "Bago": "Myanmar", "Pathein": "Myanmar", "Monywa": "Myanmar", "Meiktila": "Myanmar", "Sittwe": "Myanmar", "Myitkyina": "Myanmar", "Dawei": "Myanmar", "Pyay": "Myanmar", // Laos "Vientiane": "Laos", "Pakse": "Laos", "Savannakhet": "Laos", "Luang Prabang": "Laos", "Thakhek": "Laos", "Muang Xay": "Laos", "Phonsavan": "Laos", "Muang Pakbeng": "Laos", // Cambodia "Phnom Penh": "Cambodia", "Siem Reap": "Cambodia", "Battambang": "Cambodia", "Sihanoukville": "Cambodia", "Poipet": "Cambodia", "Kampong Cham": "Cambodia", "Pursat": "Cambodia", "Kampong Speu": "Cambodia", // Sri Lanka "Colombo": "Sri Lanka", "Dehiwala-Mount Lavinia": "Sri Lanka", "Moratuwa": "Sri Lanka", "Negombo": "Sri Lanka", "Kandy": "Sri Lanka", "Kalmunai": "Sri Lanka", "Galle": "Sri Lanka", "Trincomalee": "Sri Lanka", "Batticaloa": "Sri Lanka", "Jaffna": "Sri Lanka", "Katunayake": "Sri Lanka", "Dambulla": "Sri Lanka", // Nepal "Kathmandu": "Nepal", "Pokhara": "Nepal", "Lalitpur": "Nepal", "Bharatpur": "Nepal", "Biratnagar": "Nepal", "Birgunj": "Nepal", "Dharan": "Nepal", "Bhim Datta": "Nepal", "Butwal": "Nepal", "Hetauda": "Nepal", "Dhangadhi": "Nepal", "Itahari": "Nepal", // Bhutan "Thimphu": "Bhutan", "Phuntsholing": "Bhutan", "Punakha": "Bhutan", "Wangdue": "Bhutan", "Samdrup Jongkhar": "Bhutan", "Gelephu": "Bhutan", "Trongsa": "Bhutan", "Mongar": "Bhutan", // Maldives "Male": "Maldives", "Addu City": "Maldives", "Fuvahmulah": "Maldives", "Kulhudhuffushi": "Maldives", "Thinadhoo": "Maldives", "Ungoofaaru": "Maldives", "Naifaru": "Maldives", "Dhidhdhoo": "Maldives", // Madagascar "Antananarivo": "Madagascar", "Toamasina": "Madagascar", "Antsirabe": "Madagascar", "Fianarantsoa": "Madagascar", "Mahajanga": "Madagascar", "Toliara": "Madagascar", "Antsiranana": "Madagascar", "Ambovombe": "Madagascar", "Morondava": "Madagascar", "Sambava": "Madagascar", "Manakara": "Madagascar", "Farafangana": "Madagascar", // Mauritius "Port Louis": "Mauritius", "Beau Bassin-Rose Hill": "Mauritius", "Vacoas-Phoenix": "Mauritius", "Curepipe": "Mauritius", "Quatre Bornes": "Mauritius", "Triolet": "Mauritius", "Goodlands": "Mauritius", "Centre de Flacq": "Mauritius", // Seychelles "Victoria": "Seychelles", "Anse Boileau": "Seychelles", "Beau Vallon": "Seychelles", "Cascade": "Seychelles", "Anse Royale": "Seychelles", "Takamaka": "Seychelles", "Port Glaud": "Seychelles", "Grand Anse Mahe": "Seychelles", // Comoros "Moroni": "Comoros", "Mutsamudu": "Comoros", "Fomboni": "Comoros", "Domoni": "Comoros", "Sima": "Comoros", "Mitsoudje": "Comoros", "Adda-Doueni": "Comoros", "Ouani": "Comoros", // Djibouti "Djibouti City": "Djibouti", "Ali Sabieh": "Djibouti", "Dikhil": "Djibouti", "Tadjoura": "Djibouti", "Obock": "Djibouti", "Arta": "Djibouti", "Holhol": "Djibouti", "Yoboki": "Djibouti", // Eritrea "Asmara": "Eritrea", "Assab": "Eritrea", "Massawa": "Eritrea", "Keren": "Eritrea", "Mendefera": "Eritrea", "Barentu": "Eritrea", "Adi Keih": "Eritrea", "Adi Quala": "Eritrea", // Somalia "Mogadishu": "Somalia", "Hargeisa": "Somalia", "Bosaso": "Somalia", "Kismayo": "Somalia", "Merca": "Somalia", "Galcayo": "Somalia", "Berbera": "Somalia", "Baidoa": "Somalia", "Garowe": "Somalia", "Jowhar": "Somalia", "Borama": "Somalia", "Las Anod": "Somalia", // Sudan "Khartoum": "Sudan", "Omdurman": "Sudan", "Port Sudan": "Sudan", "Kassala": "Sudan", "Obeid": "Sudan", "Nyala": "Sudan", "Gedaref": "Sudan", "Wad Medani": "Sudan", "El Fasher": "Sudan", "Kosti": "Sudan", "Sennar": "Sudan", "Dongola": "Sudan", // South Sudan "Juba": "South Sudan", "Malakal": "South Sudan", "Wau": "South Sudan", "Bentiu": "South Sudan", "Yei": "South Sudan", "Aweil": "South Sudan", "Kuacjok": "South Sudan", "Bor": "South Sudan", // Chad "N'Djamena": "Chad", "Moundou": "Chad", "Sarh": "Chad", "Abéché": "Chad", "Kelo": "Chad", "Koumra": "Chad", "Pala": "Chad", "Am Timan": "Chad", // Central African Republic "Bangui": "Central African Republic", "Bimbo": "Central African Republic", "Berbérati": "Central African Republic", "Carnot": "Central African Republic", "Bambari": "Central African Republic", "Bouar": "Central African Republic", "Bossangoa": "Central African Republic", "Bria": "Central African Republic", // Democratic Republic of Congo "Kinshasa": "Congo", "Lubumbashi": "Congo", "Mbuji-Mayi": "Congo", "Kisangani": "Congo", "Masina": "Congo", "Kananga": "Congo", "Likasi": "Congo", "Kolwezi": "Congo", "Tshikapa": "Congo", "Beni": "Congo", "Bukavu": "Congo", "Mwene-Ditu": "Congo", // Republic of Congo "Brazzaville": "Congo", "Pointe-Noire": "Congo", "Dolisie": "Congo", "Nkayi": "Congo", "Impfondo": "Congo", "Ouesso": "Congo", "Madingou": "Congo", "Owando": "Congo", // Gabon "Libreville": "Gabon", "Port-Gentil": "Gabon", "Franceville": "Gabon", "Oyem": "Gabon", "Moanda": "Gabon", "Mouila": "Gabon", "Lambaréné": "Gabon", "Tchibanga": "Gabon", // Equatorial Guinea "Malabo": "Equatorial Guinea", "Bata": "Equatorial Guinea", "Ebebiyin": "Equatorial Guinea", "Aconibe": "Equatorial Guinea", "Añisoc": "Equatorial Guinea", "Luba": "Equatorial Guinea", "Evinayong": "Equatorial Guinea", "Mengomeyén": "Equatorial Guinea", // Cameroon "Yaoundé": "Cameroon", "Douala": "Cameroon", "Bamenda": "Cameroon", "Bafoussam": "Cameroon", "Garoua": "Cameroon", "Maroua": "Cameroon", "Nkongsamba": "Cameroon", "Bertoua": "Cameroon", "Edéa": "Cameroon", "Loum": "Cameroon", "Kumba": "Cameroon", "Foumban": "Cameroon", // Angola "Luanda": "Angola", "Huambo": "Angola", "Lobito": "Angola", "Benguela": "Angola", "Kuito": "Angola", "Lubango": "Angola", "Malanje": "Angola", "Namibe": "Angola", "Soyo": "Angola", "Cabinda": "Angola", "Uíge": "Angola", "Saurimo": "Angola", // Zambia "Lusaka": "Zambia", "Kitwe": "Zambia", "Ndola": "Zambia", "Kabwe": "Zambia", "Chingola": "Zambia", "Mufulira": "Zambia", "Livingstone": "Zambia", "Luanshya": "Zambia", "Kasama": "Zambia", "Chipata": "Zambia", "Mazabuka": "Zambia", "Mongu": "Zambia", // Zimbabwe "Harare": "Zimbabwe", "Bulawayo": "Zimbabwe", "Chitungwiza": "Zimbabwe", "Mutare": "Zimbabwe", // Namibia "Windhoek": "Namibia", "Rundu": "Namibia", "Walvis Bay": "Namibia", "Oshakati": "Namibia", "Swakopmund": "Namibia", "Katima Mulilo": "Namibia", "Grootfontein": "Namibia", "Rehoboth": "Namibia", "Otjiwarongo": "Namibia", "Okahandja": "Namibia", "Ondangwa": "Namibia", "Outapi": "Namibia", "Conakry": "Guinea", "Nzérékoré": "Guinea", "Kankan": "Guinea", "Kindia": "Guinea", // Botswana "Gaborone": "Botswana", "Francistown": "Botswana", "Molepolole": "Botswana", "Maun": "Botswana", "Serowe": "Botswana", "Selibe Phikwe": "Botswana", "Kanye": "Botswana", "Mochudi": "Botswana", "Mahalapye": "Botswana", "Palapye": "Botswana", "Lobatse": "Botswana", "Kasane": "Botswana", // Guinea-Bissau (补充缺失) // Lesotho "Maseru": "Lesotho", "Teyateyaneng": "Lesotho", "Mafeteng": "Lesotho", "Hlotse": "Lesotho", "Mohale's Hoek": "Lesotho", "Maputsoe": "Lesotho", "Qacha's Nek": "Lesotho", "Quthing": "Lesotho", "Freetown": "Sierra Leone", "Bo": "Sierra Leone", "Kenema": "Sierra Leone", "Koidu": "Sierra Leone", // Eswatini (Swaziland) "Mbabane": "Eswatini", "Manzini": "Eswatini", "Big Bend": "Eswatini", "Malkerns": "Eswatini", "Nhlangano": "Eswatini", "Siteki": "Eswatini", "Pigg's Peak": "Eswatini", "Lobamba": "Eswatini", "Monrovia": "Liberia", "Gbarnga": "Liberia", "Kakata": "Liberia", "Bensonville": "Liberia", // Malawi "Lilongwe": "Malawi", "Blantyre": "Malawi", "Mzuzu": "Malawi", "Zomba": "Malawi", "Kasungu": "Malawi", "Mangochi": "Malawi", "Karonga": "Malawi", "Salima": "Malawi", "Liwonde": "Malawi", "Nkhotakota": "Malawi", "Chiradzulu": "Malawi", "Nsanje": "Malawi", "Abidjan": "Cote D'Ivoire", "Bouaké": "Cote D'Ivoire", "Daloa": "Cote D'Ivoire", "Yamoussoukro": "Cote D'Ivoire", // Mozambique "Maputo": "Mozambique", "Matola": "Mozambique", "Beira": "Mozambique", "Nampula": "Mozambique", "Chimoio": "Mozambique", "Nacala": "Mozambique", "Quelimane": "Mozambique", "Tete": "Mozambique", "Xai-Xai": "Mozambique", "Maxixe": "Mozambique", "Inhambane": "Mozambique", "Pemba": "Mozambique", "Lomé": "Togo", "Sokodé": "Togo", "Kara": "Togo", "Palimé": "Togo", // Tanzania "Dar es Salaam": "Tanzania", "Mwanza": "Tanzania", "Arusha": "Tanzania", "Dodoma": "Tanzania", "Mbeya": "Tanzania", "Morogoro": "Tanzania", "Tanga": "Tanzania", "Kahama": "Tanzania", "Tabora": "Tanzania", "Zanzibar City": "Tanzania", "Kigoma": "Tanzania", "Sumbawanga": "Tanzania", "Cotonou": "Benin", "Porto-Novo": "Benin", "Parakou": "Benin", "Djougou": "Benin", // Rwanda "Kigali": "Rwanda", "Butare": "Rwanda", "Gitarama": "Rwanda", "Ruhengeri": "Rwanda", "Gisenyi": "Rwanda", "Byumba": "Rwanda", "Cyangugu": "Rwanda", "Kibuye": "Rwanda", "Banjul": "Gambia", "Serekunda": "Gambia", "Brikama": "Gambia", "Bakau": "Gambia", // Burundi "Gitega": "Burundi", "Bujumbura": "Burundi", "Muyinga": "Burundi", "Ruyigi": "Burundi", "Ngozi": "Burundi", "Rutana": "Burundi", "Kayanza": "Burundi", "Makamba": "Burundi", "Nouakchott": "Mauritania", "Nouadhibou": "Mauritania", "Néma": "Mauritania", "Kaédi": "Mauritania", // Uganda "Kampala": "Uganda", "Gulu": "Uganda", "Lira": "Uganda", "Mbarara": "Uganda", "Jinja": "Uganda", "Bwizibwera": "Uganda", "Mbale": "Uganda", "Mukono": "Uganda", "Kasese": "Uganda", "Masaka": "Uganda", "Entebbe": "Uganda", "Njeru": "Uganda", // Cabo Verde (补充缺失) // Tunisia "Tunis": "Tunisia", "Sfax": "Tunisia", "Sousse": "Tunisia", "Ettadhamen": "Tunisia", "Kairouan": "Tunisia", "Bizerte": "Tunisia", "Gabès": "Tunisia", "Aryanah": "Tunisia", "Gafsa": "Tunisia", "El Mourouj": "Tunisia", "Kasserine": "Tunisia", "Ben Arous": "Tunisia", // São Tomé and Príncipe (补充缺失) // Libya "Benghazi": "Libya", "Misrata": "Libya", "Tarhuna": "Libya", "Al Bayda": "Libya", "Zawiya": "Libya", "Zuwara": "Libya", "Ajdabiya": "Libya", "Tobruk": "Libya", "Sabha": "Libya", "Sirte": "Libya", "Marj": "Libya", "Dublin": "Ireland", "Cork": "Ireland", "Limerick": "Ireland", "Galway": "Ireland", "Waterford": "Ireland", "Drogheda": "Ireland", "Dundalk": "Ireland", "Swords": "Ireland", "Bray": "Ireland", "Navan": "Ireland", "Ennis": "Ireland", "Kilkenny": "Ireland", // More countries and cities can be added here... } // GetCountryCenterByCountryOrCity 根据国家名称或城市名称获取国家中心经纬度 // countryOrAbbr: 国家名称(全称或简称) // city: 城市名称 // 返回: 纬度, 经度, 是否找到 func GetCountryCenterByCountryOrCity(countryOrAbbr, city string) (lat, lon string, found bool) { // 1. 首先尝试国家简称转全称(大小写不敏感) countryOrAbbr = strings.TrimSpace(countryOrAbbr) if countryOrAbbr != "" { // 尝试作为简称查找 if fullName, ok := countryAbbr[strings.ToUpper(countryOrAbbr)]; ok { countryOrAbbr = fullName } // 2. 直接查找国家中心点(大小写不敏感) for country, center := range countryCenter { if strings.EqualFold(country, countryOrAbbr) { return fmt.Sprintf("%f", center[0]), fmt.Sprintf("%f", center[1]), true } } } // 3. 通过城市查找国家(大小写不敏感) city = strings.TrimSpace(city) if city != "" { for cityName, country := range cityToCountry { if strings.EqualFold(cityName, city) { if center, ok := countryCenter[country]; ok { return fmt.Sprintf("%f", center[0]), fmt.Sprintf("%f", center[1]), true } } } } return "", "", false } // GetCountryCenter 根据国家名称获取中心经纬度(兼容旧接口) func GetCountryCenter(countryName string) (lat, lon string, found bool) { return GetCountryCenterByCountryOrCity(countryName, "") } // GetCountryCenterByCity 根据城市名称获取所在国家的中心经纬度 func GetCountryCenterByCity(cityName string) (lat, lon string, found bool) { return GetCountryCenterByCountryOrCity("", cityName) }