orderBy

HTML

Quando a distancia do primeiro endereço da empresa 2 for menor que o primeiro endereço da empresa 1, a order tem que ser trocada. <br>
Obs. Vai dando RUN para ver que nada muda, a distancia é um random, somente para o exemplo.
<br>
<div ng-app ng-controller="LoginController">
  <div ng-repeat="parceiro in parceiros | orderBy:enderecos[0]['distancia']">
    <div style="border: 1px solid black;">
      {{parceiro.nome}}
      <div ng-repeat="endereco in parceiro.enderecos">
        -- Rua: {{endereco.rua}} - Numero: {{endereco.numero}} - distância: {{endereco.distancia = distancia(lat, long, 0, 0)}}
      </div>
    </div>
  </div>
  
  
  <br>
  <br>
  <br>
  <br>
  <p>Aqui é só para mostrar que o campo foi criado dentro do objeto.</p>
  
  {{parceiros}}
</div>

JavaScript

function LoginController($scope) {
  $scope.parceiros = [
    {
      id: 1,
      nome: 'Empresa 1',
      enderecos: [
        {
          rua: 'dos bobos',
          numero: '0',
          lat: '-3.000000',
          long: '-3.000000'
        },
        {
          rua: 'dos bobos',
          numero: '230',
          lat: '-3.500000',
          long: '-3.500000'
        }
      ]
    },
        {
      id: 2,
      nome: 'Empresa 2',
      enderecos: [
        {
          rua: 'dos bobos',
          numero: '120',
          lat: '-3.700000',
          long: '-3.700000'
        },
        {
          rua: 'dos bobos',
          numero: '121',
          lat: '-3.200000',
          long: '-3.200000'
        }
      ]
    }
  ];
    
  $scope.distancia = function(lat1, long1, userLat, userLong) {
  	
    return Math.floor((Math.random()*4)+1);
  };
};