/**
  * Sets the geometry location type.
  *
  * @param string $locationType The geometry location type.
  *
  * @throws \Ivory\GoogleMap\Exception\GeocodingException If the location type is not valid.
  */
 public function setLocationType($locationType)
 {
     if (!in_array($locationType, GeocoderLocationType::getGeocoderLocationTypes())) {
         throw GeocodingException::invalidGeocoderLocationType();
     }
     $this->locationType = $locationType;
 }
 /**
  * Sets the geocoder results status.
  *
  * @param string $status The geocoder result status.
  *
  * @throws \Ivory\GoogleMap\Exception\GeocodingException If the status is not valid.
  */
 public function setStatus($status)
 {
     if (!in_array($status, GeocoderStatus::getGeocoderStatus())) {
         throw GeocodingException::invalidGeocoderResponseStatus();
     }
     $this->status = $status;
 }
 /**
  * {@inheritdoc}
  *
  * @throws \Ivory\GoogleMap\Exception\GeocodingException If the request is not valid.
  */
 public function getGeocodedData($request)
 {
     if (is_string($request)) {
         $geocoderRequest = new GeocoderRequest();
         $geocoderRequest->setAddress($request);
     } elseif ($request instanceof GeocoderRequest) {
         $geocoderRequest = $request;
     } else {
         throw GeocodingException::invalidGeocoderProviderRequestArguments();
     }
     if (!$geocoderRequest->isValid()) {
         throw GeocodingException::invalidGeocoderProviderRequest();
     }
     $url = $this->generateUrl($geocoderRequest);
     $response = $this->getAdapter()->getContent($url);
     if ($response === null) {
         throw GeocodingException::invalidServiceResult();
     }
     $normalizedResponse = $this->parse($response);
     return $this->buildGeocoderResponse($normalizedResponse);
 }
 /**
  * Adds a type to the geocoder result.
  *
  * @param string $type The type to add.
  *
  * @throws \Ivory\GoogleMap\Exception\GeocodingException If the type is not valid.
  */
 public function addType($type)
 {
     if (!is_string($type)) {
         throw GeocodingException::invalidGeocoderResultType();
     }
     $this->types[] = $type;
 }
 /**
  * Sets the geocoder request sensor.
  *
  * @param boolean $sensor TRUE if the geocoder request has a sensor else FALSE.
  *
  * @throws \Ivory\GoogleMap\Exception\GeocodingRequest If the sensor flag is not valid.
  */
 public function setSensor($sensor)
 {
     if (!is_bool($sensor)) {
         throw GeocodingException::invalidGeocoderRequestSensor();
     }
     $this->sensor = $sensor;
 }