示例#1
0
        /// <summary>
        /// 从图片库中筛选出既有GPS又有Google街景的图片集,用作生成回忆的备选图片集
        /// </summary>
        /// <param name="imageMonthGroups"></param>
        /// <returns></returns>
        public async Task <IOrderedEnumerable <ImageMonthGroup> > FindImagesAsync(IOrderedEnumerable <ImageMonthGroup> imageMonthGroups)
        {
            var imageModels = new List <ImageModel>();

            foreach (ImageMonthGroup imageMonthGroup in imageMonthGroups)
            {
                foreach (ImageModel imageModel in imageMonthGroup)
                {
                    if (imageModel.Longitude.HasValue && imageModel.Latitude.HasValue)
                    {
                        var x = imageModel.Latitude.Value
                                .ToString(CultureInfo.CurrentCulture);
                        var y = imageModel.Longitude.Value
                                .ToString(CultureInfo.CurrentCulture);
                        var status = await StreetViewMetadata.GetStreetViewStutas(x, y);

                        Debug.WriteLine(status);
                        if (status == "OK")
                        {
                            imageModels.Add(imageModel);
                        }
                    }
                }
            }

            IOrderedEnumerable <ImageMonthGroup> MemoryImageMonthGroups;

            MemoryImageMonthGroups = imageModels
                                     .GroupBy(m => m.MonthYearDate, (key, list) => new ImageMonthGroup(key, list))
                                     .OrderByDescending(m => m.Key.WholeDateTime.Year).ThenByDescending(m => m.Key.WholeDateTime.Month);
            return(MemoryImageMonthGroups);
        }
示例#2
0
        //显示路径
        private async void ShowPath(int nodeNum, int wayNum)
        {
            var completed = false;
            var delay     = TimeSpan.FromSeconds(3);
            //string streetStatus="";
            //
            // TODO: Work
            //
            var x = _pathPoint.ElementAt(nodeNum).X
                    .ToString(CultureInfo.CurrentCulture);
            var y = _pathPoint.ElementAt(nodeNum).Y
                    .ToString(CultureInfo.CurrentCulture);

            //Debug.WriteLine("get point"+tmp);
            Debug.WriteLine(x);
            Debug.WriteLine(y);
            var pathpov =
                new PathPov(_pathPoint.ElementAt(nodeNum - 1),
                            _pathPoint.ElementAt(nodeNum));
            var tmpheading = pathpov.GetHeading().ToString();

            var status = await StreetViewMetadata.GetStreetViewStutas(x, y);

            Debug.WriteLine(status);
            if (status == "OK")
            {
                InvokeJsMove(x, y, tmpheading);
            }

            /*await Dispatcher.RunAsync(
             * CoreDispatcherPriority.High,
             * async () =>
             * {
             *  string[] script =
             *  {
             *      "setStreetViewPositon("+x
             +","+y
             +","+tmpheading
             +")"
             *  };
             *  streetStatus = await Webview1.InvokeScriptAsync("eval", script);
             *  Debug.WriteLine("street:"+streetStatus);
             * });*/

            completed = true;
            //
            // Update the UI thread by using the UI core dispatcher.
            //
            Debug.WriteLine(nodeNum);
            if (!completed)
            {
                return;
            }
            if (nodeNum == _pathPoint.Count - 1)
            {
                Debug.WriteLine("finish");
                InvokeJsHeading(nodeNum);
                TestClick(nodeNum + 1, wayNum + 1);
            }
            else if (wayNum < _wayPoint.Count - 1 && _wayPoint[wayNum] == _pathPoint[nodeNum])
            {
                if (status == "OK")
                {
                    Debug.WriteLine("touch here");
                    InvokeJsHeading(nodeNum);
                    TestClick(nodeNum + 1, wayNum + 1);
                }
                else
                {
                    await Task.Delay(3000);

                    ShowPath(nodeNum + 1, wayNum + 1);
                }
            }
            else
            {
                await Task.Delay(3000);

                ShowPath(nodeNum + 1, wayNum);
            }

            //  var completed = false;
            //  var delay = TimeSpan.FromSeconds(3);
            //  //string streetStatus="";
            //  var delayTimer = ThreadPoolTimer.CreateTimer
            //  (async source =>
            //{
            //    //
            //    // TODO: Work
            //    //
            //    var x = _pathPoint.ElementAt(nodeNum).X
            //       .ToString(CultureInfo.CurrentCulture);
            //    var y = _pathPoint.ElementAt(nodeNum).Y
            //        .ToString(CultureInfo.CurrentCulture);
            //    //Debug.WriteLine("get point"+tmp);
            //    Debug.WriteLine(x);
            //    Debug.WriteLine(y);
            //    var pathpov =
            //        new PathPov(_pathPoint.ElementAt(nodeNum - 1),
            //            _pathPoint.ElementAt(nodeNum));
            //    var tmpheading = pathpov.GetHeading().ToString();

            //    string statu = await StreetViewMetadata.GetStreetViewStutas(x.ToString(), y.ToString());
            //    Debug.WriteLine(statu);

            //    InvokeJsMove(x, y, tmpheading);


            //    /*await Dispatcher.RunAsync(
            //    CoreDispatcherPriority.High,
            //    async () =>
            //    {
            //        string[] script =
            //        {
            //            "setStreetViewPositon("+x
            //            +","+y
            //            +","+tmpheading
            //            +")"
            //        };
            //        streetStatus = await Webview1.InvokeScriptAsync("eval", script);
            //        Debug.WriteLine("street:"+streetStatus);
            //    });*/

            //    completed = true;
            //}, delay, async source =>
            //  {
            //      //
            //      // Update the UI thread by using the UI core dispatcher.
            //      //
            //      await Dispatcher.RunAsync(
            //          CoreDispatcherPriority.High,
            //          () =>
            //          {
            //              Debug.WriteLine(nodeNum);
            //              if (!completed) return;
            //              if (nodeNum == _pathPoint.Count - 1)
            //              {
            //                  Debug.WriteLine("finish");
            //                  InvokeJsHeading(nodeNum);
            //                  TestClick(nodeNum + 1, wayNum + 1);
            //              }
            //              else if (wayNum < _wayPoint.Count - 1 && _wayPoint[wayNum] ==
            //                       _pathPoint[nodeNum])
            //              {
            //                  Debug.WriteLine("touch here");
            //                  InvokeJsHeading(nodeNum);
            //                  TestClick(nodeNum + 1, wayNum + 1);
            //              }
            //              else
            //              {
            //                  ShowPath(nodeNum + 1, wayNum);
            //              }
            //          });
            //  });
        }