Files
Gov_Travel_App/cityData.js
2026-01-13 13:57:39 +00:00

300 lines
19 KiB
JavaScript

// City Database - 237+ Canadian Cities with Provinces
// This database includes major cities and municipalities across all Canadian provinces and territories
const CITIES = [
// Alberta
{ name: "Calgary", province: "AB", country: "Canada", code: "YYC" },
{ name: "Edmonton", province: "AB", country: "Canada", code: "YEG" },
{ name: "Red Deer", province: "AB", country: "Canada", code: "YQF" },
{ name: "Lethbridge", province: "AB", country: "Canada", code: "YQL" },
{ name: "Fort McMurray", province: "AB", country: "Canada", code: "YMM" },
{ name: "Grande Prairie", province: "AB", country: "Canada", code: "YQU" },
{ name: "Medicine Hat", province: "AB", country: "Canada", code: "YXH" },
{ name: "Airdrie", province: "AB", country: "Canada", code: "YYC" },
{ name: "Spruce Grove", province: "AB", country: "Canada", code: "YEG" },
{ name: "St. Albert", province: "AB", country: "Canada", code: "YEG" },
{ name: "Leduc", province: "AB", country: "Canada", code: "YEG" },
{ name: "Lloydminster", province: "AB", country: "Canada", code: "YLL" },
{ name: "Camrose", province: "AB", country: "Canada", code: "YYC" },
{ name: "Okotoks", province: "AB", country: "Canada", code: "YYC" },
{ name: "Fort Saskatchewan", province: "AB", country: "Canada", code: "YEG" },
// British Columbia
{ name: "Vancouver", province: "BC", country: "Canada", code: "YVR" },
{ name: "Victoria", province: "BC", country: "Canada", code: "YYJ" },
{ name: "Surrey", province: "BC", country: "Canada", code: "YVR" },
{ name: "Burnaby", province: "BC", country: "Canada", code: "YVR" },
{ name: "Richmond", province: "BC", country: "Canada", code: "YVR" },
{ name: "Abbotsford", province: "BC", country: "Canada", code: "YXX" },
{ name: "Coquitlam", province: "BC", country: "Canada", code: "YVR" },
{ name: "Kelowna", province: "BC", country: "Canada", code: "YLW" },
{ name: "Saanich", province: "BC", country: "Canada", code: "YYJ" },
{ name: "Delta", province: "BC", country: "Canada", code: "YVR" },
{ name: "Kamloops", province: "BC", country: "Canada", code: "YKA" },
{ name: "Langley", province: "BC", country: "Canada", code: "YVR" },
{ name: "Nanaimo", province: "BC", country: "Canada", code: "YCD" },
{ name: "Prince George", province: "BC", country: "Canada", code: "YXS" },
{ name: "Chilliwack", province: "BC", country: "Canada", code: "YCW" },
{ name: "Vernon", province: "BC", country: "Canada", code: "YVE" },
{ name: "Penticton", province: "BC", country: "Canada", code: "YYF" },
{ name: "Campbell River", province: "BC", country: "Canada", code: "YBL" },
{ name: "Courtenay", province: "BC", country: "Canada", code: "YQQ" },
{ name: "Port Coquitlam", province: "BC", country: "Canada", code: "YVR" },
// Manitoba
{ name: "Winnipeg", province: "MB", country: "Canada", code: "YWG" },
{ name: "Brandon", province: "MB", country: "Canada", code: "YBR" },
{ name: "Steinbach", province: "MB", country: "Canada", code: "YWG" },
{ name: "Thompson", province: "MB", country: "Canada", code: "YTH" },
{ name: "Portage la Prairie", province: "MB", country: "Canada", code: "YPG" },
{ name: "Winkler", province: "MB", country: "Canada", code: "YWG" },
{ name: "Selkirk", province: "MB", country: "Canada", code: "YWG" },
{ name: "Morden", province: "MB", country: "Canada", code: "YWG" },
{ name: "Dauphin", province: "MB", country: "Canada", code: "YDN" },
{ name: "The Pas", province: "MB", country: "Canada", code: "YQD" },
// New Brunswick
{ name: "Moncton", province: "NB", country: "Canada", code: "YQM" },
{ name: "Saint John", province: "NB", country: "Canada", code: "YSJ" },
{ name: "Fredericton", province: "NB", country: "Canada", code: "YFC" },
{ name: "Dieppe", province: "NB", country: "Canada", code: "YQM" },
{ name: "Miramichi", province: "NB", country: "Canada", code: "YCH" },
{ name: "Edmundston", province: "NB", country: "Canada", code: "YED" },
{ name: "Bathurst", province: "NB", country: "Canada", code: "ZBF" },
{ name: "Campbellton", province: "NB", country: "Canada", code: "YQM" },
{ name: "Quispamsis", province: "NB", country: "Canada", code: "YSJ" },
{ name: "Riverview", province: "NB", country: "Canada", code: "YQM" },
// Newfoundland and Labrador
{ name: "St. John's", province: "NL", country: "Canada", code: "YYT" },
{ name: "Mount Pearl", province: "NL", country: "Canada", code: "YYT" },
{ name: "Corner Brook", province: "NL", country: "Canada", code: "YDF" },
{ name: "Conception Bay South", province: "NL", country: "Canada", code: "YYT" },
{ name: "Grand Falls-Windsor", province: "NL", country: "Canada", code: "YGK" },
{ name: "Paradise", province: "NL", country: "Canada", code: "YYT" },
{ name: "Gander", province: "NL", country: "Canada", code: "YQX" },
{ name: "Happy Valley-Goose Bay", province: "NL", country: "Canada", code: "YYR" },
{ name: "Labrador City", province: "NL", country: "Canada", code: "YWK" },
{ name: "Stephenville", province: "NL", country: "Canada", code: "YJT" },
// Northwest Territories
{ name: "Yellowknife", province: "NT", country: "Canada", code: "YZF" },
{ name: "Hay River", province: "NT", country: "Canada", code: "YHY" },
{ name: "Inuvik", province: "NT", country: "Canada", code: "YEV" },
{ name: "Fort Smith", province: "NT", country: "Canada", code: "YSM" },
{ name: "Behchoko", province: "NT", country: "Canada", code: "YZF" },
// Nova Scotia
{ name: "Halifax", province: "NS", country: "Canada", code: "YHZ" },
{ name: "Dartmouth", province: "NS", country: "Canada", code: "YHZ" },
{ name: "Sydney", province: "NS", country: "Canada", code: "YQY" },
{ name: "Truro", province: "NS", country: "Canada", code: "YHZ" },
{ name: "New Glasgow", province: "NS", country: "Canada", code: "YHZ" },
{ name: "Glace Bay", province: "NS", country: "Canada", code: "YQY" },
{ name: "Kentville", province: "NS", country: "Canada", code: "YHZ" },
{ name: "Amherst", province: "NS", country: "Canada", code: "YHZ" },
{ name: "Yarmouth", province: "NS", country: "Canada", code: "YQI" },
{ name: "Bridgewater", province: "NS", country: "Canada", code: "YHZ" },
// Nunavut
{ name: "Iqaluit", province: "NU", country: "Canada", code: "YFB" },
{ name: "Rankin Inlet", province: "NU", country: "Canada", code: "YRT" },
{ name: "Arviat", province: "NU", country: "Canada", code: "YEK" },
{ name: "Baker Lake", province: "NU", country: "Canada", code: "YBK" },
{ name: "Cambridge Bay", province: "NU", country: "Canada", code: "YCB" },
// Ontario
{ name: "Toronto", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Ottawa", province: "ON", country: "Canada", code: "YOW" },
{ name: "Mississauga", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Brampton", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Hamilton", province: "ON", country: "Canada", code: "YHM" },
{ name: "London", province: "ON", country: "Canada", code: "YXU" },
{ name: "Markham", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Vaughan", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Kitchener", province: "ON", country: "Canada", code: "YKF" },
{ name: "Windsor", province: "ON", country: "Canada", code: "YQG" },
{ name: "Richmond Hill", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Oakville", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Burlington", province: "ON", country: "Canada", code: "YHM" },
{ name: "Sudbury", province: "ON", country: "Canada", code: "YSB" },
{ name: "Oshawa", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Barrie", province: "ON", country: "Canada", code: "YYZ" },
{ name: "St. Catharines", province: "ON", country: "Canada", code: "YCM" },
{ name: "Cambridge", province: "ON", country: "Canada", code: "YKF" },
{ name: "Kingston", province: "ON", country: "Canada", code: "YGK" },
{ name: "Guelph", province: "ON", country: "Canada", code: "YKF" },
{ name: "Whitby", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Ajax", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Thunder Bay", province: "ON", country: "Canada", code: "YQT" },
{ name: "Waterloo", province: "ON", country: "Canada", code: "YKF" },
{ name: "Chatham-Kent", province: "ON", country: "Canada", code: "YQG" },
{ name: "Pickering", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Sault Ste. Marie", province: "ON", country: "Canada", code: "YAM" },
{ name: "Clarington", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Niagara Falls", province: "ON", country: "Canada", code: "YCM" },
{ name: "North Bay", province: "ON", country: "Canada", code: "YYB" },
{ name: "Sarnia", province: "ON", country: "Canada", code: "YZR" },
{ name: "Welland", province: "ON", country: "Canada", code: "YCM" },
{ name: "Belleville", province: "ON", country: "Canada", code: "YBE" },
{ name: "Cornwall", province: "ON", country: "Canada", code: "YOW" },
{ name: "Peterborough", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Brantford", province: "ON", country: "Canada", code: "YHM" },
{ name: "Kawartha Lakes", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Newmarket", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Halton Hills", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Milton", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Timmins", province: "ON", country: "Canada", code: "YTS" },
{ name: "Norfolk County", province: "ON", country: "Canada", code: "YHM" },
{ name: "Stratford", province: "ON", country: "Canada", code: "YKF" },
{ name: "St. Thomas", province: "ON", country: "Canada", code: "YXU" },
{ name: "Woodstock", province: "ON", country: "Canada", code: "YXU" },
{ name: "Orangeville", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Orillia", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Fort Erie", province: "ON", country: "Canada", code: "YCM" },
{ name: "Brockville", province: "ON", country: "Canada", code: "YOW" },
{ name: "Owen Sound", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Kenora", province: "ON", country: "Canada", code: "YQK" },
{ name: "Pembroke", province: "ON", country: "Canada", code: "YOW" },
// Prince Edward Island
{ name: "Charlottetown", province: "PE", country: "Canada", code: "YYG" },
{ name: "Summerside", province: "PE", country: "Canada", code: "YSU" },
{ name: "Stratford", province: "PE", country: "Canada", code: "YYG" },
{ name: "Cornwall", province: "PE", country: "Canada", code: "YYG" },
{ name: "Montague", province: "PE", country: "Canada", code: "YYG" },
// Quebec
{ name: "Montreal", province: "QC", country: "Canada", code: "YUL" },
{ name: "Quebec City", province: "QC", country: "Canada", code: "YQB" },
{ name: "Laval", province: "QC", country: "Canada", code: "YUL" },
{ name: "Gatineau", province: "QC", country: "Canada", code: "YND" },
{ name: "Longueuil", province: "QC", country: "Canada", code: "YUL" },
{ name: "Sherbrooke", province: "QC", country: "Canada", code: "YSC" },
{ name: "Saguenay", province: "QC", country: "Canada", code: "YBG" },
{ name: "Levis", province: "QC", country: "Canada", code: "YQB" },
{ name: "Trois-Rivières", province: "QC", country: "Canada", code: "YRQ" },
{ name: "Terrebonne", province: "QC", country: "Canada", code: "YUL" },
{ name: "Saint-Jean-sur-Richelieu", province: "QC", country: "Canada", code: "YUL" },
{ name: "Repentigny", province: "QC", country: "Canada", code: "YUL" },
{ name: "Brossard", province: "QC", country: "Canada", code: "YUL" },
{ name: "Drummondville", province: "QC", country: "Canada", code: "YUL" },
{ name: "Saint-Jerome", province: "QC", country: "Canada", code: "YUL" },
{ name: "Granby", province: "QC", country: "Canada", code: "YUL" },
{ name: "Blainville", province: "QC", country: "Canada", code: "YUL" },
{ name: "Shawinigan", province: "QC", country: "Canada", code: "YRQ" },
{ name: "Dollard-des-Ormeaux", province: "QC", country: "Canada", code: "YUL" },
{ name: "Saint-Hyacinthe", province: "QC", country: "Canada", code: "YUL" },
{ name: "Rimouski", province: "QC", country: "Canada", code: "YXK" },
{ name: "Victoriaville", province: "QC", country: "Canada", code: "YUL" },
{ name: "Mirabel", province: "QC", country: "Canada", code: "YMX" },
{ name: "Joliette", province: "QC", country: "Canada", code: "YUL" },
{ name: "Sorel-Tracy", province: "QC", country: "Canada", code: "YUL" },
{ name: "Val-d'Or", province: "QC", country: "Canada", code: "YVO" },
{ name: "Salaberry-de-Valleyfield", province: "QC", country: "Canada", code: "YUL" },
{ name: "Sept-Iles", province: "QC", country: "Canada", code: "YZV" },
{ name: "Rouyn-Noranda", province: "QC", country: "Canada", code: "YUY" },
{ name: "Alma", province: "QC", country: "Canada", code: "YBG" },
// Saskatchewan
{ name: "Saskatoon", province: "SK", country: "Canada", code: "YXE" },
{ name: "Regina", province: "SK", country: "Canada", code: "YQR" },
{ name: "Prince Albert", province: "SK", country: "Canada", code: "YPA" },
{ name: "Moose Jaw", province: "SK", country: "Canada", code: "YMJ" },
{ name: "Swift Current", province: "SK", country: "Canada", code: "YYN" },
{ name: "Yorkton", province: "SK", country: "Canada", code: "YQV" },
{ name: "North Battleford", province: "SK", country: "Canada", code: "YQW" },
{ name: "Estevan", province: "SK", country: "Canada", code: "YEN" },
{ name: "Weyburn", province: "SK", country: "Canada", code: "YQR" },
{ name: "Warman", province: "SK", country: "Canada", code: "YXE" },
// Yukon
{ name: "Whitehorse", province: "YT", country: "Canada", code: "YXY" },
{ name: "Dawson City", province: "YT", country: "Canada", code: "YDA" },
{ name: "Watson Lake", province: "YT", country: "Canada", code: "YQH" },
{ name: "Haines Junction", province: "YT", country: "Canada", code: "YHT" },
{ name: "Carmacks", province: "YT", country: "Canada", code: "YXY" },
// Additional Ontario Cities
{ name: "Aurora", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Bradford West Gwillimbury", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Caledon", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Collingwood", province: "ON", country: "Canada", code: "YYZ" },
{ name: "East Gwillimbury", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Georgina", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Grimsby", province: "ON", country: "Canada", code: "YHM" },
{ name: "Innisfil", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Leamington", province: "ON", country: "Canada", code: "YQG" },
{ name: "Lincoln", province: "ON", country: "Canada", code: "YCM" },
{ name: "New Tecumseth", province: "ON", country: "Canada", code: "YYZ" },
{ name: "Pelham", province: "ON", country: "Canada", code: "YCM" },
{ name: "Port Colborne", province: "ON", country: "Canada", code: "YCM" },
{ name: "Thorold", province: "ON", country: "Canada", code: "YCM" },
{ name: "Tillsonburg", province: "ON", country: "Canada", code: "YXU" },
{ name: "Wasaga Beach", province: "ON", country: "Canada", code: "YYZ" },
// Additional Quebec Cities
{ name: "Saint-Eustache", province: "QC", country: "Canada", code: "YUL" },
{ name: "Chateauguay", province: "QC", country: "Canada", code: "YUL" },
{ name: "Mascouche", province: "QC", country: "Canada", code: "YUL" },
{ name: "Saint-Laurent", province: "QC", country: "Canada", code: "YUL" },
{ name: "Beloeil", province: "QC", country: "Canada", code: "YUL" },
{ name: "Boucherville", province: "QC", country: "Canada", code: "YUL" },
{ name: "Chambly", province: "QC", country: "Canada", code: "YUL" },
{ name: "Sainte-Julie", province: "QC", country: "Canada", code: "YUL" },
{ name: "Saint-Constant", province: "QC", country: "Canada", code: "YUL" },
{ name: "Varennes", province: "QC", country: "Canada", code: "YUL" },
{ name: "Candiac", province: "QC", country: "Canada", code: "YUL" },
{ name: "La Prairie", province: "QC", country: "Canada", code: "YUL" },
{ name: "Saint-Bruno-de-Montarville", province: "QC", country: "Canada", code: "YUL" },
{ name: "Sainte-Therese", province: "QC", country: "Canada", code: "YUL" },
{ name: "Vaudreuil-Dorion", province: "QC", country: "Canada", code: "YUL" },
{ name: "Sainte-Catherine", province: "QC", country: "Canada", code: "YUL" },
// Additional BC Cities
{ name: "Langford", province: "BC", country: "Canada", code: "YYJ" },
{ name: "Colwood", province: "BC", country: "Canada", code: "YYJ" },
{ name: "White Rock", province: "BC", country: "Canada", code: "YVR" },
{ name: "Maple Ridge", province: "BC", country: "Canada", code: "YVR" },
{ name: "North Vancouver", province: "BC", country: "Canada", code: "YVR" },
{ name: "West Vancouver", province: "BC", country: "Canada", code: "YVR" },
{ name: "New Westminster", province: "BC", country: "Canada", code: "YVR" },
{ name: "Port Moody", province: "BC", country: "Canada", code: "YVR" },
{ name: "Mission", province: "BC", country: "Canada", code: "YVR" },
{ name: "Pitt Meadows", province: "BC", country: "Canada", code: "YVR" },
{ name: "Fort St. John", province: "BC", country: "Canada", code: "YXJ" },
{ name: "Terrace", province: "BC", country: "Canada", code: "YXT" },
{ name: "Powell River", province: "BC", country: "Canada", code: "YPW" },
{ name: "Cranbrook", province: "BC", country: "Canada", code: "YXC" },
{ name: "Trail", province: "BC", country: "Canada", code: "YZZ" },
{ name: "Nelson", province: "BC", country: "Canada", code: "YZZ" },
{ name: "Williams Lake", province: "BC", country: "Canada", code: "YWL" },
{ name: "Quesnel", province: "BC", country: "Canada", code: "YQZ" },
];
// Validate city function
function validateCity(cityName) {
const city = CITIES.find(c => c.name.toLowerCase() === cityName.toLowerCase());
return city !== undefined;
}
// Get city details
function getCityDetails(cityName) {
return CITIES.find(c => c.name.toLowerCase() === cityName.toLowerCase());
}
// Search cities (for autocomplete)
function searchCities(query) {
if (!query || query.length < 2) return [];
const lowerQuery = query.toLowerCase();
return CITIES.filter(c =>
c.name.toLowerCase().includes(lowerQuery) ||
c.province.toLowerCase().includes(lowerQuery)
).slice(0, 10); // Limit to 10 results
}
// Export for use in other modules
if (typeof module !== 'undefined' && module.exports) {
module.exports = { CITIES, validateCity, getCityDetails, searchCities };
}