/// <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); }
//显示路径 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); // } // }); // }); }