/**
  * Add a geocoder result
  *
  * @todo Parse result to update geocoded properties
  * @param Ivory\GoogleMapBundle\Model\Services\Result\GeocoderResult $result 
  */
 public function addResult(GeocoderResult $result)
 {
     if (is_null($this->latitude)) {
         $this->latitude = $result->getGeometry()->getLocation()->getLatitude();
         $this->longitude = $result->getGeometry()->getLocation()->getLongitude();
         foreach ($result->getAddressComponents() as $addressComponent) {
             foreach ($addressComponent->getTypes() as $type) {
                 switch ($type) {
                     case 'postal_code':
                         $this->zipcode = $addressComponent->getLongName();
                         break;
                     case 'locality':
                         $this->city = $addressComponent->getLongName();
                         break;
                     case 'administrative_area_level_1':
                         $this->region = $addressComponent->getLongName();
                         break;
                     case 'country':
                         $this->country = $addressComponent->getLongName();
                         break;
                     default:
                         break;
                 }
             }
         }
     }
     $this->results[] = $result;
 }
 /**
  * Checks the address components getter & setter
  */
 public function testAddressComponents()
 {
     $addressComponentsTest = array(new GeocoderAddressComponent('longname1', 'shortname1', array('type1', 'type2')), new GeocoderAddressComponent('longname2', 'shortname2', array('type3', 'type4')));
     self::$geocoderResult->setAddressComponents($addressComponentsTest);
     $addressComponents = self::$geocoderResult->getAddressComponents();
     $this->assertEquals($addressComponents[0]->getLongName(), 'longname1');
     $this->assertEquals($addressComponents[0]->getShortName(), 'shortname1');
     $this->assertEquals($addressComponents[0]->getTypes(), array('type1', 'type2'));
     $this->assertEquals($addressComponents[1]->getLongName(), 'longname2');
     $this->assertEquals($addressComponents[1]->getShortName(), 'shortname2');
     $this->assertEquals($addressComponents[1]->getTypes(), array('type3', 'type4'));
     self::$geocoderResult->addAddressComponent(new GeocoderAddressComponent('longname3', 'shortname3', array('type5', 'type6')));
     $addressComponents = self::$geocoderResult->getAddressComponents();
     $this->assertEquals($addressComponents[2]->getLongName(), 'longname3');
     $this->assertEquals($addressComponents[2]->getShortName(), 'shortname3');
     $this->assertEquals($addressComponents[2]->getTypes(), array('type5', 'type6'));
 }