示例#1
0
        private static PoiData GetPoiData(string dir, PoiCategory category, PoiCountry country)
        {
            try
            {
                var filename  = $"{dir}\\{GetFileName(category)}";
                var xml       = File.ReadAllText(filename);
                var listOfPoi = GpxFileParser.Parse(xml, category, country, Guid.NewGuid());
                var count     = listOfPoi.Count;
                //DateTime creation = File.GetCreationTime(filename);
                DateTime modificationDate = File.GetLastWriteTime(filename);

                var pd = new PoiData()
                {
                    Category    = category,
                    DateCreated = modificationDate,
                    PointCount  = count,
                    Url         = $"PoiData/{country}/{GetFileName(category)}",
                    Description = "",
                    Id          = GetGuid(country, category)
                };

                return(pd);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(null);
            }
        }
示例#2
0
        private void OnCountrySelected(object sender, AdapterView.ItemSelectedEventArgs e)
        {
            var country = (_spinnerCountry.Adapter as CountryAdapter)[e.Position];

            if (country.HasValue)
            {
                _country = country.Value;
            }
        }
        public static PoiCountry?GetDefaultCountryByPhoneSettings()
        {
            var regionCode = RegionInfo.CurrentRegion;

            if (PoiCountry.TryParse <PoiCountry>(regionCode.ThreeLetterISORegionName, out var poiCountry))
            {
                return(poiCountry);
            }

            return(null);
        }
        private void OnCountrySelected(int position)
        {
            PoiCountry country = _countryAdapter[position];

            _countryAdapter.Selection = country;

            var items = _downloadViewItems
                        .Where(x => x.fromDatabase.Country == country)
                        .OrderBy(x => x.fromDatabase.Category);

            MainThread.BeginInvokeOnMainThread(() =>
            {
                _downloadItemAdapter.SetItems(items);
            });
        }
示例#5
0
        static public PoiList Parse(string xml, PoiCategory category, PoiCountry country, Guid source, Action <int> OnStart = null, Action <int> OnProgress = null)
        {
            var lastNode = "";

            try
            {
                var listOfPoi = new PoiList();

                XmlDocument gpxDoc = new XmlDocument();
                gpxDoc.LoadXml(xml);
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(gpxDoc.NameTable);
                nsmgr.AddNamespace("x", "http://www.topografix.com/GPX/1/1");
                nsmgr.AddNamespace("ogr", "http://osgeo.org/gdal");
                XmlNodeList nl = gpxDoc.SelectNodes("/x:gpx/x:wpt ", nsmgr);

                OnStart?.Invoke(nl == null ? 0 : nl.Count);

                int i = 0;
                foreach (XmlElement xelement in nl)
                {
                    OnProgress?.Invoke(i++);

                    var lat = xelement.Attributes.GetNamedItem("lat").Value;
                    var lon = xelement.Attributes.GetNamedItem("lon").Value;

                    var nameElement = xelement["name"];
                    var name        = nameElement == null ? "Unnamed" : nameElement.InnerText;

                    var eleElement = xelement["ele"];
                    var ele        = eleElement == null ? "0" : eleElement.InnerText;

                    var    wikidataElement = xelement["wikidata"];
                    string wikidata        = wikidataElement == null ? "" : wikidataElement.InnerText;

                    var    wikipediaElement = xelement["wikipedia"];
                    string wikipedia        = wikipediaElement == null ? "" : wikipediaElement.InnerText;

                    Poi poi = new Poi
                    {
                        Name      = name,
                        Longitude = double.Parse(lon, CultureInfo.InvariantCulture),
                        Latitude  = double.Parse(lat, CultureInfo.InvariantCulture),
                        Altitude  = String.IsNullOrEmpty(ele) ? 0 : double.Parse(ele, CultureInfo.InvariantCulture),
                        Category  = category,
                        Country   = country,
                        Source    = source
                    };
                    if (!String.IsNullOrEmpty(wikipedia))
                    {
                        poi.Wikipedia = wikipedia;
                    }
                    if (!String.IsNullOrEmpty(wikidata))
                    {
                        poi.Wikidata = wikidata;
                    }

                    listOfPoi.Add(poi);

                    lastNode = name;
                }

                return(listOfPoi);
            }
            catch (Exception ex)
            {
                throw new Exception($"Error when parsing GPX file (last node:{lastNode})", ex);
            }
        }
        public static int GetCountryIcon(PoiCountry country)
        {
            //Icons from https://www.countryflags.com/en/icons-overview/
            switch (country)
            {
            case PoiCountry.AUT:
                return(Resource.Drawable.flag_of_Austria);

            case PoiCountry.CZE:
                return(Resource.Drawable.flag_of_CzechRepublic);

            case PoiCountry.FRA:
                return(Resource.Drawable.flag_of_France);

            case PoiCountry.DEU:
                return(Resource.Drawable.flag_of_Germany);

            case PoiCountry.HUN:
                return(Resource.Drawable.flag_of_Hungary);

            case PoiCountry.ITA:
                return(Resource.Drawable.flag_of_Italy);

            case PoiCountry.POL:
                return(Resource.Drawable.flag_of_Poland);

            case PoiCountry.ROU:
                return(Resource.Drawable.flag_of_Romania);

            case PoiCountry.SVK:
                return(Resource.Drawable.flag_of_Slovakia);

            case PoiCountry.SVN:
                return(Resource.Drawable.flag_of_Slovenia);

            case PoiCountry.ESP:
                return(Resource.Drawable.flag_of_Spain);

            case PoiCountry.CHE:
                return(Resource.Drawable.flag_of_Switzerland);

            case PoiCountry.BEL:
                return(Resource.Drawable.flag_of_Belgium);

            case PoiCountry.BIH:
                return(Resource.Drawable.flag_of_BosniaHerzegovina);

            case PoiCountry.HRV:
                return(Resource.Drawable.flag_of_Croatia);

            case PoiCountry.BGR:
                return(Resource.Drawable.flag_of_Bulgaria);

            case PoiCountry.DNK:
                return(Resource.Drawable.flag_of_Denmark);

            case PoiCountry.FIN:
                return(Resource.Drawable.flag_of_Finland);

            case PoiCountry.LIE:
                return(Resource.Drawable.flag_of_Liechtenstein);

            case PoiCountry.LUX:
                return(Resource.Drawable.flag_of_Luxembourg);

            case PoiCountry.NLD:
                return(Resource.Drawable.flag_of_Netherlands);

            case PoiCountry.NOR:
                return(Resource.Drawable.flag_of_Norway);

            case PoiCountry.ERB:
                return(Resource.Drawable.flag_of_Serbia);

            case PoiCountry.SWE:
                return(Resource.Drawable.flag_of_Sweden);

            case PoiCountry.GRC:
                return(Resource.Drawable.flag_of_Greece);

            case PoiCountry.UKR:
                return(Resource.Drawable.flag_of_Ukraine);

            case PoiCountry.BLR:
                return(Resource.Drawable.flag_of_Belarus);

            case PoiCountry.ALB:
                return(Resource.Drawable.flag_of_Albania);

            case PoiCountry.CYP:
                return(Resource.Drawable.flag_of_Cyprus);

            case PoiCountry.EST:
                return(Resource.Drawable.flag_of_Estonia);

            case PoiCountry.GBR:
                return(Resource.Drawable.flag_of_UnitedKingdom);

            case PoiCountry.XKX:
                return(Resource.Drawable.flag_of_Kosovo);

            case PoiCountry.LVA:
                return(Resource.Drawable.flag_of_Latvia);

            case PoiCountry.LTU:
                return(Resource.Drawable.flag_of_Lithuania);

            case PoiCountry.MLT:
                return(Resource.Drawable.flag_of_Malta);

            case PoiCountry.MCO:
                return(Resource.Drawable.flag_of_Monaco);

            case PoiCountry.PRT:
                return(Resource.Drawable.flag_of_Portugal);

            case PoiCountry.RUS:
                return(Resource.Drawable.flag_of_Russia);

            case PoiCountry.AND:
                return(Resource.Drawable.flag_of_Andorra);

            case PoiCountry.FRO:
                return(Resource.Drawable.flag_of_FaroeIslands);

            case PoiCountry.GEO:
                return(Resource.Drawable.flag_of_Georgia);

            case PoiCountry.MNE:
                return(Resource.Drawable.flag_of_Montenegro);

            case PoiCountry.MDA:
                return(Resource.Drawable.flag_of_Moldova);

            case PoiCountry.IRL:
                return(Resource.Drawable.flag_of_Ireland);

            case PoiCountry.MKD:
                return(Resource.Drawable.flag_of_Macedonia);

            case PoiCountry.GGY:
                return(Resource.Drawable.flag_of_Guernsey);

            case PoiCountry.IMN:
                return(Resource.Drawable.flag_of_IsleOfMan);

            case PoiCountry.AZO:
                return(Resource.Drawable.flag_of_Azores);

            default:
                return(Resource.Drawable.flag_of_Unknown);
            }
        }
        public static Language GetDefaultLanguage()
        {
            var regionCode = RegionInfo.CurrentRegion;

            if (!PoiCountry.TryParse <PoiCountry>(regionCode.ThreeLetterISORegionName, out var poiCountry))
            {
                return(Language.English);
            }

            switch (poiCountry)
            {
            case PoiCountry.AUT:     //austria
            case PoiCountry.DEU:     //germany
            case PoiCountry.CHE:     //switzerland
            case PoiCountry.LIE:     //liechtenstein
                return(Language.German);

            case PoiCountry.CZE:     //czech
            case PoiCountry.SVK:     //slovakia
                return(Language.Czech);

            case PoiCountry.FRA:     //france
                return(Language.French);

            case PoiCountry.ITA:     //italy
            case PoiCountry.MCO:     //monaco
                return(Language.Italian);

            case PoiCountry.ESP:     //spain
            case PoiCountry.PRT:     //portugal
            case PoiCountry.AZO:     //azores
            case PoiCountry.AND:     //andorra
                return(Language.Spanish);

            case PoiCountry.GBR:     //great-britain
            case PoiCountry.IRL:     //ireland
            case PoiCountry.IMN:     //isle-of-man
                return(Language.English);

            case PoiCountry.HUN:     //hungary
            case PoiCountry.POL:     //poland
            case PoiCountry.ROU:     //romania
            case PoiCountry.SVN:     //slovenia
            case PoiCountry.BEL:     //belgium
            case PoiCountry.BIH:     //bosna & Herzegovina
            case PoiCountry.HRV:     //croatia
            case PoiCountry.BGR:     //bulgaria
            case PoiCountry.DNK:     //denmark
            case PoiCountry.FRO:     //faroe-islands
            case PoiCountry.FIN:     //finland
            case PoiCountry.LUX:     //luxembourg
            case PoiCountry.NLD:     //netherlands
            case PoiCountry.NOR:     //norway
            case PoiCountry.ERB:     //serbia
            case PoiCountry.SWE:     //sweden
            case PoiCountry.GRC:     //greece
            case PoiCountry.UKR:     //ukraine
            case PoiCountry.BLR:     //belarus
            case PoiCountry.ALB:     //albania
            case PoiCountry.CYP:     //cyprus
            case PoiCountry.EST:     //estonia
            case PoiCountry.XKX:     //kosovo
            case PoiCountry.LVA:     //latvia
            case PoiCountry.LTU:     //lithuania
            case PoiCountry.MKD:     //macedonia
            case PoiCountry.MLT:     //malta
            case PoiCountry.RUS:     //russia
            case PoiCountry.GEO:     //georgia
            case PoiCountry.GGY:     //guernsey
            case PoiCountry.MNE:     //montenegro
            case PoiCountry.MDA:     //moldova
                return(Language.English);

            default:
                return(Language.English);
            }
        }
示例#8
0
        private static string GetCountryPart(PoiCountry country)
        {
            switch (country)
            {
            case PoiCountry.AUT: return("3B46C567-83D0-4751-B296-BD6184229D");

            case PoiCountry.CZE: return("948268dd-71a7-4696-bb8c-dafdad5e48");

            case PoiCountry.FRA: return("9fa3dd4e-46bf-4a58-bbb8-625ea4755f");

            case PoiCountry.DEU: return("47FCF987-5655-4AE0-9964-367A88E546");

            case PoiCountry.HUN: return("fcf08d5b-060a-4379-a7d4-14d60e0787");

            case PoiCountry.ITA: return("4DBF1E0D-146C-4E12-99CD-BF47C424AA");

            case PoiCountry.POL: return("827EDFA8-83EA-4D7D-B18C-67518D08DB");

            case PoiCountry.ROU: return("3E337A9B-27BD-401B-8D53-4021445671");

            case PoiCountry.SVK: return("a936b146-ab96-451f-b24b-f270c8373e");

            case PoiCountry.SVN: return("DEABB987-AA20-46B7-A0C3-9CA94BA034");

            case PoiCountry.ESP: return("627c8265-793d-4450-8071-690d54ad0a");

            case PoiCountry.CHE: return("e6963288-eb9d-4e2b-bdc6-40d36ddc13");

            case PoiCountry.BEL: return("e2e2d4dc-43cc-467d-8a8c-81eebe325d");

            case PoiCountry.BIH: return("15fe4786-87dd-46a7-a1b5-6eb7d75a7a");

            case PoiCountry.HRV: return("959737df-a344-4284-b9c9-aab1e56b8c");

            case PoiCountry.BGR: return("ee791400-6414-472f-a0fe-86bfd820ed");

            case PoiCountry.DNK: return("72598c7a-1910-4a0c-972b-0ea56cd6fd");

            case PoiCountry.FIN: return("2d88f613-f0d8-4565-a585-2783ee5f8d");

            case PoiCountry.LIE: return("7dcb0c3a-c928-4ac7-84aa-13bb162fc1");

            case PoiCountry.LUX: return("9bd3a549-5db5-4801-ae7d-06b5ed98b2");

            case PoiCountry.NLD: return("2c5505c5-d40a-44d7-952d-4c1f02e218");

            case PoiCountry.NOR: return("2823c60d-10d7-4c1d-a184-6a1ac2766c");

            case PoiCountry.ERB: return("82a1781d-4612-4916-ba9a-ba7548543a");

            case PoiCountry.SWE: return("4b3be5ce-b7fe-4229-b8b0-164b8161ce");

            case PoiCountry.GRC: return("8cb0e465-3bc8-4072-aa10-5f3af2e1a2");

            case PoiCountry.UKR: return("00410178-37de-4caf-9bce-9b836db533");

            case PoiCountry.BLR: return("c420bbc6-40e5-43fb-b588-35b5a01ebd");

            case PoiCountry.ALB: return("60497641-f19f-4bee-93c3-1a750ff887");

            case PoiCountry.CYP: return("95b21b0f-d7f9-4c9d-8da2-02a5fee8f2");

            case PoiCountry.EST: return("4da59190-6d02-4796-97f4-8ed8ec1677");

            case PoiCountry.GBR: return("fb280934-9e32-47c9-86d5-f1bc1e63e7");

            case PoiCountry.IRL: return("8572effc-8344-4ea3-b1b5-4ad9d7a9c0");

            case PoiCountry.XKX: return("bd8721c8-6c90-4c22-9b96-85e99d293e");

            case PoiCountry.LVA: return("b5ec9c53-31fd-46dc-a2da-db3696a54e");

            case PoiCountry.LTU: return("0a58aeae-a523-4c68-9eae-ff2f60109d");

            case PoiCountry.MKD: return("0b910f9b-4cbb-45dc-aac4-a85631efe8");

            case PoiCountry.MLT: return("fb9ddc61-89e9-461f-bc97-d490a3fa43");

            case PoiCountry.MCO: return("20e1578a-a397-4e07-8bee-83a7ed6afc");

            case PoiCountry.PRT: return("127d8a08-469b-4e4c-81b4-1cf5f65b10");

            case PoiCountry.RUS: return("ba390b0c-ea41-4607-9f70-f0734cc9ea");

            case PoiCountry.AND: return("7d4b40c3-1d86-4a77-93b1-9dba42271c");

            case PoiCountry.FRO: return("a26512c9-9231-4219-a83f-1b0716154a");

            case PoiCountry.GEO: return("8bd0a102-9652-4b83-91b7-aeff3511be");

            case PoiCountry.GGY: return("dcce3793-0d88-4433-8a23-8f1c1b8e2d");

            case PoiCountry.IMN: return("416c870b-e80c-4e5e-8812-d95946cea8");

            case PoiCountry.MNE: return("c42b2519-caec-43ab-b897-34804c6bc2");

            case PoiCountry.AZO: return("f0491f1b-1b9b-4499-bb52-964da0e2a4");

            case PoiCountry.MDA: return("a7fb494b-510d-44c5-bbc0-71a3983ceb");

            default:
                throw new ArgumentOutOfRangeException(nameof(country), country, null);
            }
        }
示例#9
0
        private static void AddPoiData(CountryData cd, string dir, PoiCategory category, PoiCountry poiCountry)
        {
            var pd = GetPoiData(dir, category, poiCountry);

            if (pd != null && pd.PointCount > 0)
            {
                cd.PoiData.Add(pd);
            }
        }
示例#10
0
 private static Guid GetGuid(PoiCountry country, PoiCategory category)
 {
     return(new Guid(GetCountryPart(country) + GetCategoryPart(category)));
 }