namespace Mapbox.Unity.Map { using UnityEngine; using System.Collections.Generic; public static class LocationPrefabCategoryOptions { static LocationPrefabCategoryOptions() { PopulateCategoriesToMakiDictionary(); } private static Dictionary> CategoriesToMakiDictionary = new Dictionary> { {LocationPrefabCategories.ArtsAndEntertainment,new List{"art-gallery", "cinema", "stadium", "museum", "library", "zoo", "music", "theatre", "amusement-park"}}, {LocationPrefabCategories.Food,new List{"cafe", "bakery", "fast-food", "grocery", "ice-cream", "restaurant"}}, {LocationPrefabCategories.Nightlife,new List{"bar", "beer"}}, {LocationPrefabCategories.OutdoorsAndRecreation,new List{"aquarium", "campsite", "attraction", "castle", "cemetery", "dog-park", "drinking-water", "garden", "golf", "monument", "park", "picnic-site", "playground", "swimming"}}, {LocationPrefabCategories.Services,new List{"bank", "dentist", "toilet", "veterinary", "pharmacy", "college", "school", "hospital", "place-of-worship", "religious-christian", "religious-jewish", "religious-muslim", "police", "post", "doctor", "fire-station", "information", "town-hall", "prison", "embassy", "fuel", "laundry", "lodging"}}, {LocationPrefabCategories.Shops,new List{"alcohol-shop", "clothing-store", "shop"}}, {LocationPrefabCategories.Transportation,new List{"bus", "car", "bicycle-share", "bicycle", "airfield", "ferry", "harbor", "heliport"}}, }; private static Dictionary MakiToCategoriesDictionary = new Dictionary(); //Creates a reverse reference from the CategoriesToMakiDictionary private static void PopulateCategoriesToMakiDictionary () { foreach(var item in CategoriesToMakiDictionary) { foreach(string makiTag in item.Value) { if (!MakiToCategoriesDictionary.ContainsKey(makiTag)) { MakiToCategoriesDictionary.Add(makiTag, item.Key); } } } } /// /// Gets the maki tags list from a category /// /// The list of maki tags from supplied category. /// public static List GetMakiListFromCategory(LocationPrefabCategories category) { List returnList = new List(); CategoriesToMakiDictionary.TryGetValue(category, out returnList); return returnList; } /// /// Gets the category that the maki tag belongs to. /// /// The category from maki tag. /// Maki tag public static LocationPrefabCategories GetCategoryFromMakiTag(string makiTag) { LocationPrefabCategories returnCategory; if (MakiToCategoriesDictionary.TryGetValue(makiTag, out returnCategory)) return returnCategory; return LocationPrefabCategories.AnyCategory; } } }