public double[] getGPS(String loc, boolean filter) {
		ArrayList<double[]> matches = new ArrayList<double[]>();
		double[] a = {Double.MAX_VALUE,Double.MAX_VALUE,0.0};
		double[] b;
		int count = 0;		
		if(loc != null && !(loc.equals("null")) && !(loc.equals("")))
		{
			loc = loc.toLowerCase();
			if(StringUtils.contains(loc, "urbana"))
			{
					a[0] = 40.109665;
					a[1] = -88.204247;
					return a;
			}
			if(StringUtils.contains(loc,"aleutian"))
			{
					a[0] = 52.096944;
					a[1] = -173.500556;
					return a;
			}
			if(StringUtils.contains(loc,"alaska"))
			{
					a[0] = 64.52;
					a[1] = 152.7;
					return a;
			}
			if(states.contains(loc) && filter){
				return a;
			}
			
			//For every citi that matches, collect the gps coordinates
			for (String key : cities.keySet()){
				if(StringUtils.contains(key.toLowerCase(), loc))
				{
					count++;
					b = cities.get(key);
					matches.add(b);
				}
				else if(StringUtils.contains(key.toLowerCase(),loc.split(",")[0])){
					count++;
					b = cities.get(key);
					matches.add(b);
				}
			}
		}
		
		//Return the city out of all the matches which has highest population
		if (count > 0)
			a[2] += 100.0;
		double maxpop = 0.0;
		for(double[] match : matches){
			if(match[2] > maxpop)
			{
				maxpop = match[2];
				a[0] = match[0];
				a[1] = match[1];
			}
		}
		return a;
	}