private void LocationTo(string obj) { try { if (DDModeRex.IsMatch(SearctString)) { var langlat = SearctString.Split(','); Latitude = double.Parse(langlat[0]); Longitude = double.Parse(langlat[1]); if (langlat.Length == 3) { Altitude = double.Parse(langlat[2]); } else { Altitude = double.NaN; } FlayTo(); } if (DMSModeRex.IsMatch(SearctString)) { if (Match()) { FlayTo(); } } } catch (Exception e) { Console.WriteLine(e); } }
private bool Match() { var find = new Regex("((\\d+\\.)?\\d+)[°'\"M\\s+]"); var m = find.Match(SearctString); var result = new List <double>(); while (m.Success) { for (var i = 1; i <= 1; i++) { var g = m.Groups[i]; Debug.WriteLine("Group" + i + "='" + g + "'"); var cc = g.Captures; for (var j = 0; j < cc.Count; j++) { var c = cc[j]; Debug.WriteLine("Capture" + j + "='" + c + "', Position=" + c.Index); double convert; if (double.TryParse(c.ToString(), out convert)) { result.Add(convert); } } } m = m.NextMatch(); } if (result.Count == 6) { Latitude = result[0] + (result[1] + result[2] / 60) / 60; Longitude = result[3] + (result[4] + result[5] / 60) / 60; Latitude = SearctString.Contains("N") ? Latitude : -Latitude; Longitude = SearctString.Contains("E") ? _longitude : -Longitude; Altitude = double.NaN; return(true); } if (result.Count == 7) { Latitude = result[0] + (result[1] + result[2] / 60) / 60; Longitude = result[3] + (result[4] + result[5] / 60) / 60; Latitude = SearctString.Contains("N") ? Latitude : -Latitude; Longitude = SearctString.Contains("E") ? _longitude : -Longitude; Altitude = result[6]; return(true); } return(false); }