I believe $location is somewhat of a proxy to the browser's location object (helps with testability among other things). If you don't want that dependency I would take the solution from How do I parse a URL query parameters, in Javascript? just write a service to do it for you:
var app = angular.module('myApp', []);
app.factory('myCustomLocation', [function(){
return {
search: function(){
var query = location.search.substr(1);
var data = query.split("&");
var result = {};
for(var i=0; i<data.length; i++) {
var item = data[i].split("=");
result[item[0]] = item[1];
}
return result;
}
}
}]);