/**
  * @param string $type
  * @param Array $response
  * @return \Meup\Bundle\GeoLocationBundle\Model\LocationInterface
  * @throws \Exception
  */
 protected function populate($type, $response)
 {
     if ($response['info']['statuscode'] != '0' || count($response['results'][0]['locations']) === 0) {
         throw new \Exception('No results found.');
     }
     return $this->hydrator->hydrate($response['results'], $type);
 }
 /**
  * @param string $type
  * @param Array $response
  * @return \Meup\Bundle\GeoLocationBundle\Model\LocationInterface
  * @throws \Exception
  */
 protected function populate($type, $response)
 {
     if ($response['response']['GeoObjectCollection']['metaDataProperty']['GeocoderResponseMetaData']['found'] == '0') {
         throw new \Exception('No results found.');
     }
     return $this->hydrator->hydrate($response['response']['GeoObjectCollection']['featureMember'][0], $type);
 }
 /**
  * @param string $type
  * @param Array $response
  *
  * @return \Meup\Bundle\GeoLocationBundle\Model\LocationInterface
  */
 protected function populate($type, $response)
 {
     if ($response['status'] != 'OK') {
         throw new \Exception('No results found.');
     }
     return $this->hydrator->hydrate($response['results'], $type);
 }
 /**
  * @param string $type
  * @param Array $response
  *
  * @return \Meup\Bundle\GeoLocationBundle\Model\LocationInterface
  */
 protected function populate($type, $response)
 {
     if (empty($response)) {
         throw new \Exception('No results found.');
     }
     return $this->hydrator->hydrate($response, $type);
 }
 /**
  * @param string $type
  * @param Array $response
  * @return \Meup\Bundle\GeoLocationBundle\Model\LocationInterface
  * @throws \Exception
  */
 protected function populate($type, $response)
 {
     if (count($response['Response']['View']) == 0 || array_key_exists('Result', $response['Response']['View'][0]) === false) {
         throw new \Exception('No results found.');
     }
     // if relevance too low, consided like No Result Found.
     if ($response['Response']['View'][0]['Result'][0]['Relevance'] <= 0.5) {
         throw new \Exception('No results found.');
     }
     return $this->hydrator->hydrate($response['Response']['View'], $type);
 }
 /**
  * {@inheritDoc}
  *
  * @link http://msdn.microsoft.com/en-us/library/ff701710.aspx
  */
 public function getAddress(CoordinatesInterface $coordinates)
 {
     $address = $this->hydrator->hydrate($this->client->get(sprintf('%s%d,%d?o=json&key=%s', $this->api_endpoint, $coordinates->getLatitude(), $coordinates->getLongitude(), $this->api_key))->send()->json(), Hydrator::TYPE_ADDRESS);
     $this->logger->debug('Locate address by coordinates', array('provider' => 'bing', 'address' => $address->getFullAddress(), 'latitude' => $coordinates->getLatitude(), 'longitude' => $coordinates->getLongitude()));
     return $address;
 }