private void pointVirtual(SharpGIS.AR.Controls.ARPanel panel, double myLatitude, double myLongtitude, CountryDetails country) { double virtualLong = 0; double virtualLa = 0; double hisLatitude = country.lat; double hisLongtitude = country.lon; string countryName = country.CountryLongName; if (myLongtitude != hisLongtitude && myLongtitude + hisLongtitude != 180 && myLongtitude + hisLongtitude != -180) { if (myLongtitude > 0) { if (hisLongtitude > 0) { if (myLongtitude - hisLongtitude > 0) { virtualLong = (hisLongtitude - myLongtitude) / 2; //west if (myLatitude - hisLatitude != 90 && myLatitude - hisLatitude != -90) { if (myLatitude > 0) { if (hisLatitude > 0) { virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { if (myLatitude - hisLatitude < 90) { virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { virtualLa = 180 + myLatitude - hisLatitude;//west // virtualLa = 180 - myLatitude + hisLatitude;//east } } } else { if (hisLatitude > 0) { if (myLatitude - hisLatitude > -90) { virtualLa = 270 - myLatitude + hisLatitude;//west //virtualLa = 90 - hisLatitude + myLatitude;//east } else { virtualLa = 360 + myLatitude - hisLatitude;//west // virtualLa = hisLatitude - myLatitude;//east } } else { virtualLa = 270 - myLatitude + hisLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } } } else { virtualLa = -90; } } else { virtualLong = (myLongtitude - hisLongtitude) / 2; //east if (myLatitude - hisLatitude != 90 && myLatitude - hisLatitude != -90) { if (myLatitude > 0) { if (hisLatitude > 0) { // virtualLa = 270 + hisLatitude - myLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } else { if (myLatitude - hisLatitude < 90) { // virtualLa = 270 + hisLatitude - myLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } else { // virtualLa = 180 + myLatitude - hisLatitude;//west virtualLa = 180 - myLatitude + hisLatitude;//east } } } else { if (hisLatitude > 0) { if (myLatitude - hisLatitude > -90) { // virtualLa = 270 - myLatitude + hisLatitude;//west virtualLa = 90 - hisLatitude + myLatitude;//east } else { // virtualLa = 360 + myLatitude - hisLatitude;//west virtualLa = hisLatitude - myLatitude;//east } } else { // virtualLa = 270 - myLatitude + hisLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } } } else { virtualLa = -90; } } } else { if (180 + hisLongtitude - myLongtitude > 0) { virtualLong = (hisLongtitude - myLongtitude) / 2; //west if (myLatitude - hisLatitude != 90 && myLatitude - hisLatitude != -90) { if (myLatitude > 0) { if (hisLatitude > 0) { virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { if (myLatitude - hisLatitude < 90) { virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { virtualLa = 180 + myLatitude - hisLatitude;//west // virtualLa = 180 - myLatitude + hisLatitude;//east } } } else { if (hisLatitude > 0) { if (myLatitude - hisLatitude > -90) { virtualLa = 270 - myLatitude + hisLatitude;//west //virtualLa = 90 - hisLatitude + myLatitude;//east } else { virtualLa = 360 + myLatitude - hisLatitude;//west // virtualLa = hisLatitude - myLatitude;//east } } else { virtualLa = 270 - myLatitude + hisLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } } } else { virtualLa = -90; } } else { virtualLong = (myLongtitude + hisLongtitude - 180) / 2; //east if (myLatitude - hisLatitude != 90 && myLatitude - hisLatitude != -90) { if (myLatitude > 0) { if (hisLatitude > 0) { // virtualLa = 270 + hisLatitude - myLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } else { if (myLatitude - hisLatitude < 90) { // virtualLa = 270 + hisLatitude - myLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } else { // virtualLa = 180 + myLatitude - hisLatitude;//west virtualLa = 180 - myLatitude + hisLatitude;//east } } } else { if (hisLatitude > 0) { if (myLatitude - hisLatitude > -90) { // virtualLa = 270 - myLatitude + hisLatitude;//west virtualLa = 90 - hisLatitude + myLatitude;//east } else { // virtualLa = 360 + myLatitude - hisLatitude;//west virtualLa = hisLatitude - myLatitude;//east } } else { // virtualLa = 270 - myLatitude + hisLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } } } else { virtualLa = -90; } } } } else { if (hisLongtitude > 0) { if (hisLongtitude - myLongtitude - 180 < 0) { virtualLong = (myLongtitude - hisLongtitude) / 2; //east if (myLatitude - hisLatitude != 90 && myLatitude - hisLatitude != -90) { if (myLatitude > 0) { if (hisLatitude > 0) { // virtualLa = 270 + hisLatitude - myLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } else { if (myLatitude - hisLatitude < 90) { // virtualLa = 270 + hisLatitude - myLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } else { // virtualLa = 180 + myLatitude - hisLatitude;//west virtualLa = 180 - myLatitude + hisLatitude;//east } } } else { if (hisLatitude > 0) { if (myLatitude - hisLatitude > -90) { // virtualLa = 270 - myLatitude + hisLatitude;//west virtualLa = 90 - hisLatitude + myLatitude;//east } else { // virtualLa = 360 + myLatitude - hisLatitude;//west virtualLa = hisLatitude - myLatitude;//east } } else { // virtualLa = 270 - myLatitude + hisLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } } } else { virtualLa = -90; } } else { virtualLong = (hisLongtitude - myLongtitude - 360) / 2; //west if (myLatitude - hisLatitude != 90 && myLatitude - hisLatitude != -90) { if (myLatitude > 0) { if (hisLatitude > 0) { virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { if (myLatitude - hisLatitude < 90) { virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { virtualLa = 180 + myLatitude - hisLatitude;//west // virtualLa = 180 - myLatitude + hisLatitude;//east } } } else { if (hisLatitude > 0) { if (myLatitude - hisLatitude > -90) { virtualLa = 270 - myLatitude + hisLatitude;//west //virtualLa = 90 - hisLatitude + myLatitude;//east } else { virtualLa = 360 + myLatitude - hisLatitude;//west // virtualLa = hisLatitude - myLatitude;//east } } else { virtualLa = 270 - myLatitude + hisLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } } } else { virtualLa = -90; } } } else { if (myLongtitude - hisLongtitude > 0) { virtualLong = (hisLongtitude - myLongtitude) / 2; //west if (myLatitude - hisLatitude != 90 && myLatitude - hisLatitude != -90) { if (myLatitude > 0) { if (hisLatitude > 0) { virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { if (myLatitude - hisLatitude < 90) { virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { virtualLa = 180 + myLatitude - hisLatitude;//west // virtualLa = 180 - myLatitude + hisLatitude;//east } } } else { if (hisLatitude > 0) { if (myLatitude - hisLatitude > -90) { virtualLa = 270 - myLatitude + hisLatitude;//west //virtualLa = 90 - hisLatitude + myLatitude;//east } else { virtualLa = 360 + myLatitude - hisLatitude;//west // virtualLa = hisLatitude - myLatitude;//east } } else { virtualLa = 270 - myLatitude + hisLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } } } else { virtualLa = -90; } } else { virtualLong = (myLongtitude - hisLongtitude) / 2; //east if (myLatitude - hisLatitude != 90 && myLatitude - hisLatitude != -90) { if (myLatitude > 0) { if (hisLatitude > 0) { // virtualLa = 270 + hisLatitude - myLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } else { if (myLatitude - hisLatitude < 90) { // virtualLa = 270 + hisLatitude - myLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } else { // virtualLa = 180 + myLatitude - hisLatitude;//west virtualLa = 180 - myLatitude + hisLatitude;//east } } } else { if (hisLatitude > 0) { if (myLatitude - hisLatitude > -90) { // virtualLa = 270 - myLatitude + hisLatitude;//west virtualLa = 90 - hisLatitude + myLatitude;//east } else { // virtualLa = 360 + myLatitude - hisLatitude;//west virtualLa = hisLatitude - myLatitude;//east } } else { // virtualLa = 270 - myLatitude + hisLatitude;//west virtualLa = 90 + myLatitude - hisLatitude;//east } } } else { virtualLa = -90; } } } } } else { if (myLatitude - hisLatitude != 90 && myLatitude - hisLatitude != -90) { if (myLatitude > 0) { if (hisLatitude > 0) { if (hisLatitude - myLatitude > 0) { virtualLa = 0; virtualLong = myLatitude - hisLatitude; } else { virtualLa = 180; virtualLong = myLatitude - hisLatitude; } // virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { if (myLatitude - hisLatitude < 90) { virtualLa = 180; virtualLong = hisLatitude - myLatitude; // virtualLa = 270 + hisLatitude - myLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } else { virtualLa = 0; virtualLong = myLatitude - hisLatitude - 180; // virtualLa = 180 + myLatitude - hisLatitude;//west // virtualLa = 180 - myLatitude + hisLatitude;//east } } } else { if (hisLatitude > 0) { if (myLatitude - hisLatitude > -90) { virtualLa = 0; virtualLong = myLatitude - hisLatitude; // virtualLa = 270 - myLatitude + hisLatitude;//west //virtualLa = 90 - hisLatitude + myLatitude;//east } else { virtualLa = 180; virtualLong = hisLatitude - myLatitude - 180; // virtualLa = 360 + myLatitude - hisLatitude;//west // virtualLa = hisLatitude - myLatitude;//east } } else { if (myLatitude - hisLatitude < 0) { virtualLa = 0; virtualLong = myLatitude - hisLatitude; } else { virtualLa = 180; virtualLong = myLatitude - hisLatitude; } // virtualLa = 270 - myLatitude + hisLatitude;//west // virtualLa = 90 + myLatitude - hisLatitude;//east } } } else { virtualLa = -90; virtualLong = 0; } } /* if (myLongtitude - hisLongtitude < 0) { if (myLongtitude - hisLongtitude > -180) { virtualLong = (myLongtitude - hisLongtitude) / 2; virtualLa = 90 + myLatitude - hisLatitude; } else { virtualLong = (hisLongtitude - myLongtitude - 360) / 2; virtualLa = 90 - myLatitude + hisLatitude; } } else { if (myLongtitude - hisLongtitude < 180) { virtualLong = (hisLongtitude - myLongtitude) / 2; virtualLa = 90 + myLatitude - hisLatitude; } else { virtualLong = (myLongtitude - hisLongtitude - 360) / 2; virtualLa = 90 - myLatitude + hisLatitude; } } TextBlock countryNameText = new TextBlock() { Text = countryName }; SharpGIS.AR.Controls.ARPanel.SetDirection(countryNameText, new Point(0, 30)); panel.Children.Add(countryNameText); TextBlock countryNameText1 = new TextBlock() { Text = countryName }; SharpGIS.AR.Controls.ARPanel.SetDirection(countryNameText1, new Point(-10, 200)); panel.Children.Add(countryNameText1); TextBlock countryNameText2 = new TextBlock() { Text = countryName }; SharpGIS.AR.Controls.ARPanel.SetDirection(countryNameText2, new Point(-80, 90)); panel.Children.Add(countryNameText2); TextBlock countryNameText3 = new TextBlock() { Text = countryName }; SharpGIS.AR.Controls.ARPanel.SetDirection(countryNameText3, new Point(-30, 330)); panel.Children.Add(countryNameText3); */ Button countryNameBTN = new Button(); countryNameBTN.Content = countryName; countryNameBTN.Tag = countryName + "/" + hisLatitude.ToString() + "/" + hisLongtitude.ToString(); countryNameBTN.Foreground = new SolidColorBrush(Colors.Red); //countryNameBTN.Click += countryNameBTN_Click; countryNameBTN.Click += (a, b) => { App.selectedCountryDetails = country; Button clickedBtn = (Button)a; string[] information = clickedBtn.Tag.ToString().Split('/'); var queryData = string.Format("?c={0}&lat={1}&lon={2}", information[0], information[1], information[2]); NavigationService.Navigate(new Uri("/SelectedCountryDetail.xaml" + queryData, UriKind.Relative)); }; countryNameBTN.BorderBrush = new SolidColorBrush(Colors.Transparent); countryNameBTN.BorderThickness = new Thickness(0); SharpGIS.AR.Controls.ARPanel.SetDirection(countryNameBTN, new Point(virtualLong, virtualLa)); panel.Children.Add(countryNameBTN); }
//gives you a country data which hasn't been displayed before private CountryDetails[] GetQuestionData() { bool uniqueFound = false; CountryDetails[] uniqueQuestion = new CountryDetails[5]; int countryListItemIndex = 0; while (uniqueFound == false) { foreach (CountryDetails country in App.allCoutries) { if (!questionAlreadyAsked.Contains(country.CountryLongName.ToString())) { uniqueFound = true; uniqueQuestion[0] = country; questionAlreadyAsked.Add(country.CountryLongName.ToString()); countryListItemIndex++; break; } else { uniqueQuestion[0] = null; } } } int totalElements = App.allCoutries.Count; bool allGuessesFound = false; List<int> alreadyChosen = new List<int>(); int tempCounter = 1; while (allGuessesFound == false) { Random rand = new Random(); int temp = rand.Next(0, totalElements - 1); if (alreadyChosen.Contains(temp) == false && temp != countryListItemIndex) { alreadyChosen.Add(temp); uniqueQuestion[tempCounter] = App.allCoutries.ElementAt(temp); tempCounter++; } if (tempCounter > 4) allGuessesFound = true; } return uniqueQuestion; }