Example #1
0
        public List <ResponseCity> GetScore(RequestCity requestCity)
        {
            mSuggestedCities = new List <ResponseCity>();

            IEnumerable <City> suggestions = sTrie.Retrieve(requestCity.q.ToLower());

            GetScoreInternal(requestCity, suggestions);
            Normalize();

            return(mSuggestedCities);
        }
Example #2
0
        protected virtual void GetScoreInternal(RequestCity requestCity, IEnumerable <City> suggestions)
        {
            foreach (City city in suggestions)
            {
                var suggestedCity = new ResponseCity
                {
                    name      = city.ascii,
                    latitude  = city.lat,
                    longitude = city.@long,
                    score     = GetScoreOneCity(city, requestCity.q, requestCity.latitude, requestCity.longitude)
                };

                mSuggestedCities.Add(suggestedCity);
            }
        }
Example #3
0
        protected override void GetScoreInternal(RequestCity requestCity, IEnumerable <City> suggestions)
        {
            GetPopulationNorm(suggestions, out double min, out double diff);
            foreach (City city in suggestions)
            {
                double popScore      = POP_COEFF * (city.population - min) / diff;
                var    suggestedCity = new ResponseCity
                {
                    id        = city.id,
                    name      = city.ascii + ", " + city.country + " (" + city.tz + ")",
                    latitude  = city.lat,
                    longitude = city.@long,
                    score     = popScore + GetScoreOneCity(city, requestCity.q, requestCity.latitude, requestCity.longitude)
                };

                mSuggestedCities.Add(suggestedCity);
            }
        }
Example #4
0
        // TODO make it prettier
        private RequestCity parseParams()
        {
            var requestParams = ControllerContext.Request.GetQueryNameValuePairs();

            if (requestParams.Count() < 1 ||
                "q" != requestParams.ElementAt(0).Key)
            {
                return(null);
            }

            var requestCity = new RequestCity();

            requestCity.q = requestParams.ElementAt(0).Value;
            if (requestParams.Count() > 1 && Double.TryParse(requestParams.ElementAt(1).Value, out double value))
            {
                if ("lat" == requestParams.ElementAt(1).Key || "latitude" == requestParams.ElementAt(1).Key)
                {
                    requestCity.latitude = Double.Parse(requestParams.ElementAt(1).Value);
                }
                else if ("long" == requestParams.ElementAt(1).Key || "longitude" == requestParams.ElementAt(1).Key)
                {
                    requestCity.latitude = Double.Parse(requestParams.ElementAt(1).Value);
                }
            }
            if (requestParams.Count() > 2 && Double.TryParse(requestParams.ElementAt(2).Value, out value))
            {
                if ("lat" == requestParams.ElementAt(2).Key || "latitude" == requestParams.ElementAt(2).Key)
                {
                    requestCity.latitude = Double.Parse(requestParams.ElementAt(2).Value);
                }
                else if ("long" == requestParams.ElementAt(2).Key || "longitude" == requestParams.ElementAt(2).Key)
                {
                    requestCity.longitude = Double.Parse(requestParams.ElementAt(2).Value);
                }
            }

            return(requestCity);
        }