async void SearchResult(object sender, RoutedEventArgs e, ObservableCollection <PointLatLngImg> Points)
        {
            LoadingVisiblity = Visibility.Visible;

            await Task.Run(() =>
            {
                long start = DateTimeConvert.ToTotalSeconds(true, StartDay, StartHour, StartMinute);
                long end   = DateTimeConvert.ToTotalSeconds(false, EndDay, EndHour, EndMinute);

                try
                {
                    List <TrackInfo> TrackInfos = new List <TrackInfo>();
                    if (SnapPersonInfo != null)
                    {
                        TrackInfos = AsyncSelectTrack(SnapPersonInfo.SnapId, SnapPersonInfo.PhotoByteArray, start, end).Result;
                        //thirft.QueryTrackPlayback(SnapPersonInfo.SnapId, SnapPersonInfo.PhotoByteArray, start, end);
                    }
                    else
                    {
                        comServer.SocketOpter.ExceptionMsgFromSTAThread("请添加照片");
                    }

                    this.LoadData(TrackInfos);//async

                    foreach (TrackInfo item in TrackInfos)
                    {
                        PointLatLngImg ipoint = new PointLatLngImg();
                        if (!string.IsNullOrEmpty(item.Latitude) && !string.IsNullOrEmpty(item.Longitude))
                        {
                            ipoint.Point = new GMap.NET.PointLatLng(Convert.ToDouble(item.Latitude), Convert.ToDouble(item.Longitude));
                        }
                        ipoint.Img                = ImageConvert.ToBitmapImage(SnapPersonInfo.PhotoByteArray);
                        ipoint.ImgVisibility      = Visibility.Visible;
                        ipoint.ImgframeVisibility = Visibility.Visible;
                        Points.Add(ipoint);
                    }

                    if (TrackInfos.Count > 0)
                    {
                        this.MainMap.IsDisplayPolyline = true;
                        this.MainMap.Points            = Points;

                        if (MainMap.Points.Count > 0)
                        {
                            MainMap.CurrentPosition = MainMap.Points[MainMap.Points.Count - 1].Point;
                        }
                        else
                        {
                            MainMap.CurrentPosition = new GMap.NET.PointLatLng(GlobalCache.Latitude, GlobalCache.Longitude);
                        }
                    }
                    else
                    {
                        this.MainMap.IsDisplayPolyline = true;
                        this.MainMap.Points            = new ObservableCollection <PointLatLngImg>();
                    }
                }
                catch (Exception ex)
                {
                    Logger <MainTraceAnalysisView> .Log.Error("SearchResult", ex);
                }
                finally
                {
                    LoadingVisiblity = Visibility.Collapsed;
                }
            });
        }