/// <summary> /// Gets the directions. /// </summary> /// <param name="originAddress">From address.</param> /// <param name="destinationAddress">To address.</param> /// <returns>The directions</returns> public Directions GetDirections(AddressData originAddress, AddressData destinationAddress) { Directions direction = new Directions(); XDocument xdoc = XDocument.Load(String.Format(CultureInfo.InvariantCulture, APIUrlDirections, Uri.EscapeDataString(originAddress.ToString()), Uri.EscapeDataString(destinationAddress.ToString())) + "&key=" + APIKey); var status = (from s in xdoc.Descendants("DirectionsResponse").Descendants("status") select s).FirstOrDefault(); if (status != null && status.Value == "OK") { direction.StatusCode = Directions.Status.OK; var distance = (from d in xdoc.Descendants("DirectionsResponse").Descendants("route").Descendants("leg") .Descendants("distance").Descendants("text") select d).LastOrDefault(); if (distance != null) { direction.Distance = distance.Value; } var duration = (from d in xdoc.Descendants("DirectionsResponse").Descendants("route").Descendants("leg") .Descendants("duration").Descendants("text") select d).LastOrDefault(); if (duration != null) { direction.Duration = duration.Value; } var steps = from s in xdoc.Descendants("DirectionsResponse").Descendants("route").Descendants("leg").Descendants("step") select s; foreach (var step in steps) { Step directionStep = new Step(); directionStep.Instruction = step.Element("html_instructions").Value; directionStep.Distance = step.Descendants("distance").First().Element("text").Value; direction.Steps.Add(directionStep); } return(direction); } else if (status != null && status.Value != "OK") { direction.StatusCode = Directions.Status.FAILED; return(direction); } else { throw new Exception("Unable to get Directions from Google"); } }
/// <summary> /// Gets an array of string addresses that matched a possibly ambiguous address. /// </summary> /// <param name="address">The address.</param> /// <returns></returns> /// <exception cref="System.Net.WebException"></exception> public string[] GetAddressesListFromAddress(AddressData address) { return(GetAddressesListFromAddress(address.ToString())); }
/// <summary> /// Gets the latitude and longitude that belongs to an address. /// </summary> /// <param name="address">The address.</param> /// <returns></returns> public MapPoint GetLatLongFromAddress(AddressData address) { return(GetLatLongFromAddress(address.ToString())); }
/// <summary> /// Gets the directions. /// </summary> /// <param name="originAddress">From address.</param> /// <param name="destinationAddress">To address.</param> /// <returns>The directions</returns> public Directions GetDirections(AddressData originAddress, AddressData destinationAddress) { Directions direction = new Directions(); XDocument xdoc = XDocument.Load(String.Format(APIUrlDirections, originAddress.ToString(), destinationAddress.ToString())); var status = (from s in xdoc.Descendants("DirectionsResponse").Descendants("status") select s).FirstOrDefault(); if (status != null && status.Value == "OK") { direction.StatusCode = Directions.Status.OK; var distance = (from d in xdoc.Descendants("DirectionsResponse").Descendants("route").Descendants("leg") .Descendants("distance").Descendants("text") select d).LastOrDefault(); if (distance != null) { direction.Distance = distance.Value; } var duration = (from d in xdoc.Descendants("DirectionsResponse").Descendants("route").Descendants("leg") .Descendants("duration").Descendants("text") select d).LastOrDefault(); if (duration != null) { direction.Duration = duration.Value; } var steps = from s in xdoc.Descendants("DirectionsResponse").Descendants("route").Descendants("leg").Descendants("step") select s; foreach (var step in steps) { Step directionStep = new Step(); directionStep.Instruction = step.Element("html_instructions").Value; directionStep.Distance = step.Descendants("distance").First().Element("text").Value; direction.Steps.Add(directionStep); } return direction; } else if (status != null && status.Value != "OK") { direction.StatusCode = Directions.Status.FAILED; return direction; } else { throw new Exception("Unable to get Directions from Google"); } }
/// <summary> /// Gets the latitude and longitude that belongs to an address. /// </summary> /// <param name="address">The address.</param> /// <returns></returns> public MapPoint GetLatLongFromAddress(AddressData address) { return GetLatLongFromAddress(address.ToString()); }