/** * 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')); }