public List <Location> GetRoteDirections(Location start, Location end, GMapV2DirectionMode mode)
        {
            var _ret  = new List <Location>();
            var _data = this.GetDirectionsFromServer(start, end, mode, GMapV2DirectionReturnType.Json);

            if (!_data.Equals(""))
            {
                JObject _result = JObject.Parse(_data);

                var _status = _result["status"];
                var _routes = JArray.Parse(_result["routes"].ToString());

                if (_status.ToString().Equals("OK"))
                {
                    var _legs  = JArray.Parse(_routes[0]["legs"].ToString());
                    var _steps = JArray.Parse(_legs[0]["steps"].ToString());

                    foreach (var _step in _steps)
                    {
                        _ret.Add(this.GetLatLng(JObject.Parse(_step["start_location"].ToString())));
                        var _polyline = JObject.Parse(_step["polyline"].ToString());
                        _ret.AddRange(this.DecodePolylinePoints(_polyline["points"].ToString()));
                        _ret.Add(this.GetLatLng(JObject.Parse(_step["end_location"].ToString())));
                    }
                }
            }

            return(_ret);
        }
        public RootObject GetRootObject(Location start, Location end, GMapV2DirectionMode mode)
        {
            var _data = GetDirectionsFromServer(start, end, mode, GMapV2DirectionReturnType.Json);
            var _ret  = JsonConvert.DeserializeObject <RootObject>(_data);

            return(_ret);
        }
        private string GetDirectionsFromServer(Location start, Location end, GMapV2DirectionMode mode, GMapV2DirectionReturnType typeServer)
        {
            string _mode = "";
            string _type = "";

            switch (mode)
            {
            case GMapV2DirectionMode.Driving:
                _mode = "driving";
                break;

            case GMapV2DirectionMode.Walking:
                _mode = "walking";
                break;
            }

            switch (typeServer)
            {
            case GMapV2DirectionReturnType.Xml:
                _type = "xml";
                break;

            case GMapV2DirectionReturnType.Json:
                _type = "json";
                break;
            }

            var _format = new CultureInfo("en-us").NumberFormat;

            string _url = string.Format("http://maps.googleapis.com/maps/api/directions/{0}?origin={1},{2}&destination={3},{4}&sensor=false&units=metric&mode={5}", _type, start.Latitude.ToString(_format), start.Longitude.ToString(_format), end.Latitude.ToString(_format), end.Longitude.ToString(_format), _mode);

            return(this.GetStringDataFromServer(_url));
        }
        public XmlDocument GetXmlDocument(Location start, Location end, GMapV2DirectionMode mode)
        {
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(this.GetDirectionsFromServer(start, end, mode, GMapV2DirectionReturnType.Xml));
            return(doc);
        }