Beispiel #1
0
        private Location getDistanceFromAPI(string source, string destination)
        {
            string url = @"https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" +
                         source + "&destinations=" + destination + "&key=AIzaSyAwLbz_DgWGXlxplEN6A0nm0wKrbCd60Kc";
            // "&mode=driving&sensor=false&language=en-EN&units=imperial";


            HttpWebRequest request        = (HttpWebRequest)WebRequest.Create(url);
            WebResponse    response       = request.GetResponse();
            Stream         dataStream     = response.GetResponseStream();
            StreamReader   sreader        = new StreamReader(dataStream);
            string         responsereader = sreader.ReadToEnd();

            response.Close();

            XmlDocument xmldoc = new XmlDocument();

            xmldoc.LoadXml(responsereader);

            decimal dis = new decimal();

            if (xmldoc.GetElementsByTagName("status")[0].ChildNodes[0].InnerText == "OK")
            {
                XmlNodeList distance = xmldoc.GetElementsByTagName("distance");
                // dis= Convert.ToDouble(distance[0].ChildNodes[1].InnerText.Replace(" km", ""));
                dis = Convert.ToDecimal(distance[0].ChildNodes[1].InnerText.Replace(" km", ""));
            }
            //  using (LocationEntities2 db = new LocationEntities2())
            {
                LocationEntities2 db       = new LocationEntities2();
                Location          location = new Location();
                location.counter     = 1;
                location.Target      = source;
                location.Destination = destination;
                location.Distance    = dis;

                Location lo = db.Location.Add(location);
                db.SaveChanges();
                return(lo);
            }

            //return 0;
            //https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Jerusalem,DC&destinations=Tel+Aviv,NY&key=AIzaSyAwLbz_DgWGXlxplEN6A0nm0wKrbCd60Kc
            //throw new NotImplementedException();
        }
Beispiel #2
0
        public JObject getDistance(string source, string destination)
        {
            // using (LocationEntities2 db = new LocationEntities2())
            {
                LocationEntities2 db  = new LocationEntities2();
                Location          loc = db.Location.FirstOrDefault(l => l.Target == source && l.Destination == destination);
                if (loc == null)
                {
                    loc = getDistanceFromAPI(source, destination);
                }
                else
                {
                    loc.counter += 1;
                    db.SaveChanges();
                }

                JObject jObject = new JObject();
                jObject["Distance"] = loc.Distance;
                jObject["Counter"]  = loc.counter;
                return(jObject);
            }
        }