コード例 #1
0
        public ActionResult Create(Attraction attraction)
        {
            attraction.AttractionType = db.AttractionType.Find(attraction.AttractionType.ID);
            attraction.Country = db.Country.Find(attraction.Country.ID);
            attraction.AvgRating = 0.0;

            //upload photos
            try
            {
                int i = 0;
                foreach (string upload in Request.Files)
                {
                    if (Request.Files[i].ContentLength == 0)
                        continue;

                    string path = AppDomain.CurrentDomain.BaseDirectory + "Content/AttractionImages/";
                    string ext = Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('.'));
                    AttractionImage ai = new AttractionImage { AttractionID = attraction.ID, FileName = generateRandomString(32) + ext };
                    attraction.Images.Add(ai);
                    Request.Files[i].SaveAs(Path.Combine(path, ai.FileName));
                    i++;
                }
            }
            catch (NullReferenceException)
            {
                //no photo
            }
            //end of upload user photo

            db.Attraction.Add(attraction);
            db.SaveChanges();
            return RedirectToAction("Details", new { id = attraction.ID });
        }
コード例 #2
0
 public ActionResult Attractions(int count)
 {
     Random random = new Random();
     for (int i = 0; i < count; ++i)
     {
         int lat = random.Next(10) > 5 ? 1 : -1;
         int lon = random.Next(10) > 5 ? 1 : -1;
         Attraction attraction = new Attraction();
         attraction.Address = new Address();
         attraction.Address.City = db.Place.OrderBy(x => x.ID).Skip(random.Next(db.Place.Count() - 1)).FirstOrDefault().Name;
         attraction.AttractionType = db.AttractionType.OrderBy(x => x.ID).Skip(random.Next(db.AttractionType.Count() - 1)).FirstOrDefault();
         attraction.Coordinates = new Coordinates();
         attraction.Coordinates.Latitude = random.NextDouble() * 90 * lat;
         attraction.Coordinates.Longitude = random.NextDouble() * 180 * lon;
         attraction.Country = db.Country.OrderBy(x => x.ID).Skip(random.Next(db.Country.Count() - 1)).FirstOrDefault();
         attraction.Description = generateRandomText(random.Next(3, 10));
         attraction.Name = "Attraction "+i.ToString();
         db.Attraction.Add(attraction);
         db.SaveChanges();
     }
     return RedirectToAction("Index","Attraction");
 }
コード例 #3
0
        public string getPoints(int id)
        {
            var attractionsLists = db.AttractionsLists.Where(x => x.ListId == id).Select(x => x.AttractionId).ToList();
            var attractions = db.Attraction.Include(c=>c.Coordinates).Where(x => attractionsLists.Contains(x.ID)).ToList();

            Attraction[] atTab = new Attraction[attractions.Count];
            if (attractions.Count == 0)
                return "";
            atTab = attractions.ToArray();
            double[,] distances = new double[atTab.Length, atTab.Length];

            for (int i = 0; i < atTab.Length; i++)
                for (int j = 0; j < atTab.Length; j++)
                {
                    double cosq = Math.Sin(atTab[i].Coordinates.Latitude) * Math.Sin(atTab[j].Coordinates.Latitude) +
                        Math.Cos(atTab[i].Coordinates.Latitude) * Math.Cos(atTab[j].Coordinates.Latitude) * Math.Cos(atTab[i].Coordinates.Longitude - atTab[j].Coordinates.Longitude);
                    double R = 6400;
                    double d = (2 * Math.PI * R * Math.Acos(cosq)) / 360;
                    distances[i, j] = d;
                }
            List<int> all = new List<int>();
            for (int i=0; i<atTab.Length; i++)
                all.Add(i);
            Greedy g = new Greedy(distances, all);
            List<int> tmp = g.CountDistance(0);

            string s = "http://dev.virtualearth.net/REST/v1/Routes?";
            //wp.0=london&wp.1=leeds&avoid=minimizeTolls&key=
            int l=0;
            foreach (int i in tmp)
            {
                s+=l==0?"wp.":"&wp.";
                s+=l+"="+atTab[i].Coordinates.Latitude+","+atTab[i].Coordinates.Longitude;
                l++;
            }
            s += "&routePathOutput=Points&output=json&jsonp=RouteCallback&key=";
            return s;
        }