¿Cómo usar Angular $ location para establecer mi nueva ubicación de URL cambiando dinámicamente sus parámetros clave-valor?

Digamos que tengo un punto final REST que acepta una serie de facetas para consultar datos. Aquí hay algunos ejemplos:

example.com/search?type=Doctor&location=Boston,MA&radius=2  
example.com/search?type=Facility&location=Wayne,NJ&radius=3&gender=f  
example.com/search?type=Doctor&location=Patterson,NJ

Mi módulo acepta el objeto de consulta para realizar la búsqueda:

console.log(query);
{
  type:'Doctor',
  location:'Boston,MA',
  radius:'2'
}

$scope.getSearch = function(query){
  var search = $search.search(query);
  search.getResults(function(results){
    $scope.results = results;
  });
}

Estas facetas se pasan a través de un modelo local en un formulario web:

 <input type="text" ng-model="query.location"/>
 <input type="text" ng-model="query.radius"/>
 <button type="button" ng-click="getSearch(query)">Search</button>

En la exitosa devolución de llamada de lagetResults función, estoy tratando de agregar los parámetros de consulta a la URL como en los ejemplos anteriores:

$scope.getSearch = function(query){
  var search = $search.search(query);
  search.getResults(function(results){
    $scope.results = results;
    search.appendQueryToURL(query);
  });
}

¿Cómo agrego dinámicamente los parámetros de URL en AngularJS?

Respuestas a la pregunta(3)

Su respuesta a la pregunta