/**
  * Geef alle terreinobjecten die horen tot een huisnummer.
  *
  * Opgelet! In tegenstelling tot de Crab1Gateway geeft deze functie alleen maar de identificatorTerreinobject en de aardTerreinobjectCode terug.
  * <code>
  *  //Crab1
  *  $terreinObjecten = $crab->listTerreinobjectenByHuisnummerId ( 1,1);
  *  foreach ( $terreinObjecten as $terreinObject) {
  *      echo "X: " . $terreinObject['centerX'] . " ,Y: " . $terreinObject['centerY'];
  *  }
  *  //Crab2
  *  $terreinObjecten = $crab->listTerreinobjectenByHuisnummerId ( 1,1 );
  *  foreach ( $terreinObjecten as $terreinObject) {
  *      $infoTerreinObject = $crab->getTerreinobjectByIdentificatorTerreinobject ( $terreinObject['identificatorTerreinobject']);
  *      echo "X: " . $infoTerreinObject['centerX'] . " ,Y: " . $infoTerreinObject['centerY'];
  *  }
  * </code>
  * @param integer huisnummerId
  * @param integer sorteerVeld Zie de KVDgis_Crab2Gateway::TERREIN_SORT_ constanten
  * @return array Een associatieve array met de volgende sleutels:
  * <ul>
  *  <li>identificatorTerreinobject: De identificator van het terreinobject.</li>
  *  <li>aardTerreinobjectCode: De aard van het terreinobject.</li>
  * </ul>
  * @throws InvalidArgumentException Indien er op een ongeldig sorteerVeld wordt gesorteerd.
  */
 public function listTerreinobjectenByHuisnummerId($huisnummerId, $sorteerVeld = self::TERREIN_SORT_ID)
 {
     if ($sorteerVeld < 1 || $sorteerVeld > 2) {
         throw new InvalidArgumentException("De parameter sorteerVeld van de functie listTerreinobjectenByHuisnummerId moet tussen 1 en 2 liggen!");
     }
     $params = new StdClass();
     $functionParameters = func_get_args();
     $result = $this->_cache->cacheGet($this->getCacheName(__FUNCTION__), $functionParameters);
     if ($result != false) {
         return unserialize($result);
     }
     $params = new StdClass();
     $params->HuisnummerId = (int) $huisnummerId;
     $params->SorteerVeld = (int) $sorteerVeld;
     $paramsWrapper = new SoapParam($params, "ListTerreinObjectenByHuisnummerId");
     try {
         $result = $this->_client->ListTerreinobjectenByHuisnummerId($paramsWrapper);
     } catch (Exception $e) {
         throw new RuntimeException('Kan de lijst met terreinobjecten niet laden wegens: ' . $e->getMessage());
     }
     $terreinobjecten = array();
     if (isset($result->ListTerreinobjectenByHuisnummerIdResult->TerreinobjectItem)) {
         foreach ($result->ListTerreinobjectenByHuisnummerIdResult->TerreinobjectItem as $terreinobject) {
             $terreinobjectArray = array();
             $terreinobjectArray['identificatorTerreinobject'] = $terreinobject->IdentificatorTerreinobject;
             $terreinobjectArray['aardTerreinobjectCode'] = (int) $terreinobject->AardTerreinobject;
             $terreinobjecten[] = $terreinobjectArray;
         }
     }
     $this->_cache->cachePut($this->getCacheName(__FUNCTION__), $functionParameters, serialize($terreinobjecten));
     return $terreinobjecten;
 }