Пример #1
0
        public async void Initialize()
        {
            Title                 = "CHORALE";
            BackgroundColor       = Resources.ColorBlue;
            TextColor             = Resources.ColorWhite;
            ProgressBarVisibility = System.Windows.Visibility.Visible;

            await Task.Run(() =>
            {
                GraphDataList       = EcologDao.GetGraphDataOnSemanticLink(SemanticLink, Direction);
                RecentGraphDataList = EcologDao.GetRecentGraphDataOnSemanticLink(SemanticLink, Direction);
                OutlierExclusion();
                ChoraleModel = ChoraleModel.Init(GraphDataList);
                RModel       = RModel.Init(GraphDataList);
            });

            SwitchToChoralePage();
        }
        public async void Initialize()
        {
            //var SemanticLinks = SemanticLinkDao.OutwardSemanticLinks;
            //Direction = new TripDirection { Direction = "outward" };
            //SemanticLink = SemanticLinks.FirstOrDefault(s => s.SemanticLinkId == 13);
            Title                 = "CHORALE";
            BackgroundColor       = Resources.ColorBlue;
            TextColor             = Resources.ColorWhite;
            ProgressBarVisibility = System.Windows.Visibility.Visible;

            await Task.Run(() =>
            {
                GraphDataList = EcologDao.GetGraphDataOnSemanticLink(SemanticLink, Direction);
                OutlierExclusion();
                ChoraleModel = ChoraleModel.Init(GraphDataList);
                RModel       = RModel.Init(GraphDataList);
            });

            SwitchToChoralePage();
        }
        private void OnPositionChanged(object sender, PositionEventArgs e)
        {
            LastGeoStr.Value = (string)(e.Position.Latitude + ", " + e.Position.Longitude);

            Device.BeginInvokeOnMainThread(() =>
            {
                App.CurrentPosition = e.Position;
                Console.WriteLine(e.Position.Latitude + ", " + e.Position.Longitude);
                if (SemanticLink.TargetSemanticLinks == null)
                {
                    // HomeWardかOutWardかを決定
                    if (Coordinate.TommyHome.LatitudeStart < e.Position.Latitude &&
                        Coordinate.TommyHome.LatitudeEnd > e.Position.Latitude &&
                        Coordinate.TommyHome.LongitudeStart < e.Position.Longitude &&
                        Coordinate.TommyHome.LongitudeEnd > e.Position.Longitude)
                    {
                        SemanticLink.TargetSemanticLinks = SemanticLink.OutwardSemanticLinks;
                        Direction = "outward";
                        Debug.WriteLine("出発地点を自宅にセット");
                    }
                    else if (Coordinate.Ynu.LatitudeStart < e.Position.Latitude &&
                             Coordinate.Ynu.LatitudeEnd > e.Position.Latitude &&
                             Coordinate.Ynu.LongitudeStart < e.Position.Longitude &&
                             Coordinate.Ynu.LongitudeEnd > e.Position.Longitude)
                    {
                        SemanticLink.TargetSemanticLinks = SemanticLink.HomewardSemanticLinks;
                        Direction = "homeward";
                        Debug.WriteLine("出発地点を学校にセット");
                    }
                }
                else
                {
                    // HomeWardかOutWardか決定されている
                    if (SemanticLinkCurrent == null)
                    {
                        // 最初のセマンティックリンクを決定
                        SemanticLinkCurrent = SemanticLink.TargetSemanticLinks
                                              .FirstOrDefault(v => e.Position.Latitude > v.MinLatitude &&
                                                              e.Position.Latitude <v.MaxLatitude &&
                                                                                   e.Position.Longitude> v.MinLongitude &&
                                                              e.Position.Longitude < v.MaxLongitude);
                    }
                    else
                    {
                        if (e.Position.Latitude < SemanticLinkCurrent.MinLatitude - 0.0001 ||
                            e.Position.Latitude > SemanticLinkCurrent.MaxLatitude + 0.0001 ||
                            e.Position.Longitude < SemanticLinkCurrent.MinLongitude ||
                            e.Position.Longitude > SemanticLinkCurrent.MaxLongitude)
                        {
                            // セマンティックリンクの変更を検知
                            // ChoraleとEnergyStackModelの描画を開始
                            ChoraleModel         = ChoraleModel.CreateChoraleModel(SemanticLinkCurrent);
                            EnergyStackModelList =
                                EnergyStackModel.CreateEnergyStackSource(Calculator.GetGraphDatum(), SemanticLinkCurrent);

                            PlotModelChorale.Value     = CreatePlotModelChorale();
                            PlotModelEnergyStack.Value = CreatePlotModelEnergyStack();

                            Calculator.Init();
                            SemanticLinkPrevious = SemanticLinkCurrent.Copy();
                            SemanticLinkCurrent  = null;

                            // DependencyService.Get<IAudio>().PlayAudioFile("broadcasting.mp3");
                        }
                        else
                        {
                            Calculator.PositionCollection.Add(e.Position);
                        }
                    }
                }
            });
        }