Beispiel #1
0
        /// <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());
 }