コード例 #1
0
        //todo: unit test
        public string GetPortLocode(double?speed, double?lat, double?lon)
        {
            if (lat.HasValue && lon.HasValue && speed.HasValue)
            {
                if (speed > 0.5)
                {
                    return(null);
                }

                foreach (AreaBboxModel port in _memoryAccess.GetPortAreas())
                {
                    MapPointModel point = new MapPointModel()
                    {
                        Lat = double.Parse(lat.ToString()), Lon = double.Parse(lon.ToString())
                    };

                    if (VerifyPolygon(point, port))
                    {
                        return(port.KeyProperty);
                    }
                }
            }

            return(null);
        }
コード例 #2
0
        public string GetGeographicalArea(double?lat, double?lon)
        {
            if (lat.HasValue && lon.HasValue)
            {
                if (lat.Value == 0 && lon.Value == 0)
                {
                    return("Unknown");
                }

                foreach (AreaBboxModel sea in _memoryAccess.GetSeaAreas())
                {
                    MapPointModel point = new MapPointModel()
                    {
                        Lat = double.Parse(lat.ToString()), Lon = double.Parse(lon.ToString())
                    };

                    if (VerifyPolygon(point, sea))
                    {
                        return(sea.Name);
                    }
                }
            }

            return(null);
        }
コード例 #3
0
        private bool VerifyPolygon(MapPointModel point, AreaBboxModel area)
        {
            //+/- 0.05 for port boundaries
            if (point.Lat > (area.MinLatitude - 0.05) && point.Lat < (area.MaxLatitude + 0.05) && point.Lon > (area.MinLongitude - 0.05) && point.Lon < (area.MaxLongitude + 0.05))
            {
                return(true);
            }

            return(false);
        }
コード例 #4
0
        private void GoToAddPoint()
        {
            CurrentMapPoint = new MapPointModel();
            var masterDetailPage = App.Current.MainPage as MasterDetailPage;

            if (masterDetailPage != null && !(
                    GetCurrentPage() is AddMapPointView))
            {
                masterDetailPage.Detail.Navigation.PushAsync(new AddMapPointView());
            }
            masterDetailPage.IsPresented = false;
        }