예제 #1
0
 public function setAddressAttribute($value)
 {
     // // censor address
     // $censor = new CensorWords;
     // $badwords = $censor->setDictionary(array('es','en-us', 'en-uk'));
     // $caddress = $censor->censorString($value);
     // $address = $caddress['clean'];
     // search coordinates with the provided address
     $Geocoder = new \GoogleMapsGeocoder();
     // $Geocoder->setAddress($address);
     $Geocoder->setAddress($value);
     $response = $Geocoder->geocode();
     // defaults when the coordinates aren't found
     // $this->attributes['address'] = $address;
     $this->attributes['address'] = $value;
     $this->attributes['lat'] = '-34.6036844';
     $this->attributes['long'] = '-58.381559100000004';
     // success, we have coordinates!
     if ($response['status'] == 'OK') {
         $info = array('address' => $response['results'][0]['formatted_address'], 'lat' => $response['results'][0]['geometry']['location']['lat'], 'long' => $response['results'][0]['geometry']['location']['lng']);
         $this->attributes['address'] = $info['address'];
         $this->attributes['lat'] = $info['lat'];
         $this->attributes['long'] = $info['long'];
     }
 }
예제 #2
0
 public function validate($value, Constraint $constraint)
 {
     // On créé un objet GoogleMapsGeocoder prenant en paramètre l'adresse du lieu $adresse
     $Geocoder = new \GoogleMapsGeocoder();
     $Geocoder->setAddress($value);
     // On test la valeur
     $reponse = $Geocoder->geocode();
     if ($reponse['status'] != "OK" && !is_null($value)) {
         $this->context->buildViolation($constraint->message)->addViolation();
     }
 }
 function getLocationByAddressText($addressText)
 {
     //Instancia el objeto que hace los lalamados a Google
     $geocoder = new GoogleMapsGeocoder($addressText);
     $geocoder->setApiKey($this->API_KEY);
     //Realiza el llamado para validar la direcci�n
     $google_results = $geocoder->geocode();
     $response = new LocationAddressModel();
     //Si tiene alguna respuesta
     if (end($google_results['results']) != null) {
         //carga los datos en el modelo
         $data_address = end($google_results['results'])['geometry'];
         if ($data_address['location_type'] != 'APPROXIMATE') {
             $response->success = true;
             $response->latitude = $data_address['location']['lat'];
             $response->longitude = $data_address['location']['lng'];
         } else {
             $response->setError(false, 'No fue encontrada la direccion, intenta con un texto diferente', ErrorCodes::$ERROR_NO_ADDRESS_FOUND);
         }
     } else {
         $response->setError(false, 'No fue encontrada la direccion, intenta con un texto diferente', ErrorCodes::$ERROR_NO_ADDRESS_FOUND);
     }
     return $response;
 }
예제 #4
0
 public function rastreo($numero = NULL)
 {
     if (!$numero) {
         return array('mensaje_error' => 'Falta el parametro "numero"', 'error' => 1);
     }
     $tipo_numero = $this->_valida_numero($numero);
     # Params iniciales
     $params_peticion = array('idioma' => 'es', 'dispatch' => 'doRastreoInternet', 'guias' => $numero);
     if ($tipo_numero == 'guia') {
         $params_peticion['tipoGuia'] = 'ESTAFETA';
     } elseif ($tipo_numero == 'rastreo') {
         $params_peticion['tipoGuia'] = 'REFERENCE';
     } elseif ($tipo_numero == 'invalido') {
         return array('mensaje_error' => 'No es un numero de guia o codigo de rastreo valido', 'error' => 2);
     }
     # Busca dom
     $hunter = new DomHunter(URL_RASTREAR, 1);
     $hunter->arrParamsPeticion = $params_peticion;
     $presas = array();
     $presas[] = array('numero_guia', new KeyValue('mero de gu'));
     $presas[] = array('codigo_rastreo', new KeyValue('digo de rastreo'));
     $presas[] = array('origen', new KeyValue('origen'));
     $presas[] = array('destino', new KeyValue('destino'));
     $presas[] = array('cp_destino', new IdUnico(5, 'num'));
     $presas[] = array('servicio', new KeyValue('entrega garantizada', FALSE));
     $presas[] = array('estatus', new KeyValue('status del servicio'));
     $presas[] = array('fecha_recoleccion', new KeyValue('fecha de recoleccion'));
     $presas[] = array('fecha_programada', new KeyValue('de entrega', TRUE, TRUE));
     $presas[] = array('fecha_entrega', new KeyValue('Fecha y hora de entrega'));
     $presas[] = array('tipo_envio', new KeyValue('tipo de envio'));
     $presas[] = array('peso', new KeyValue('Peso kg'));
     $presas[] = array('peso_volumetrico', new KeyValue('Peso volumétrico kg'));
     $presas[] = array('recibio', new KeyValue('recibi'));
     $presas[] = array('dimensiones', new KeyValue('Dimensiones cm'));
     $columnas = array('fecha', 'lugar_movimiento', 'comentarios');
     $presas[] = array('movimientos', new Tabla(array('ocurrencia' => -1), $columnas, 3));
     $hunter->arrPresas = $presas;
     $hunted = $hunter->hunt();
     if (strpos($hunted['estatus'], 'No hay informaci') !== false) {
         return array('estatus' => $hunted['estatus']);
     } else {
         # Busca coordenadas de origen
         try {
             $ciudad = $hunted['origen'];
             $direccion = $ciudad . ', Mexico';
             $geocoder = new GoogleMapsGeocoder($direccion);
             $response = $geocoder->geocode();
             $latitud = $response['results'][0]['geometry']['location']['lat'];
             $longitud = $response['results'][0]['geometry']['location']['lng'];
             $hunted['origen'] = array('nombre' => $ciudad, 'latitud' => $latitud, 'longitud' => $longitud);
         } catch (Exception $e) {
         }
         # Busca coordenadas de destino
         try {
             $ciudad = $hunted['destino'];
             $cp = $hunted['cp_destino'];
             $direccion = $ciudad . ', Mexico';
             $geocoder = new GoogleMapsGeocoder($direccion);
             $response = $geocoder->geocode();
             $latitud = $response['results'][0]['geometry']['location']['lat'];
             $longitud = $response['results'][0]['geometry']['location']['lng'];
             unset($hunted['cp_destino']);
             $hunted['destino'] = array('nombre' => $ciudad, 'latitud' => $latitud, 'longitud' => $longitud, 'cp_destino' => $cp);
         } catch (Exception $e) {
         }
         # Descomposicion de dimensiones, de string a ancho, alto, largo
         $dimensiones = $hunted['dimensiones'];
         $piezas_dimensiones = explode('x', $dimensiones);
         $alto = $piezas_dimensiones[0];
         $largo = $piezas_dimensiones[1];
         $ancho = $piezas_dimensiones[2];
         $hunted['dimensiones'] = array('alto' => $alto, 'largo' => $largo, 'ancho' => $ancho);
         # Construye historial de movimientos
         $historial = $hunted['movimientos'];
         $movimientos = array();
         foreach ($historial as $evento) {
             $movimiento = array();
             $movimiento['descripcion'] = $evento['lugar_movimiento'];
             $movimiento['fecha'] = $evento['fecha'];
             # Comentado por buggiento https://github.com/ivansabik/dom-hunter/issues/4
             # movimiento['comentarios'] = $evento['comentarios'];
             $movimiento['id'] = self::id_movimiento($movimiento['descripcion']);
             $movimientos[] = $movimiento;
         }
         $hunted['movimientos'] = $movimientos;
         # Firma de recibido
         $presas = array();
         $opciones_navegacion = array('getElementById' => $hunted['numero_guia'] . 'FIR', 'nextSibling' => '', 'find' => 'img');
         $presas[] = array('firma_recibido', new NodoDom(array('navegacion' => $opciones_navegacion), 'src'));
         $hunter->arrPresas = $presas;
         $hunted_firma = $hunter->hunt();
         if (isset($hunted['firma_recibido'])) {
             $hunted['firma_recibido'] = URL_FIRMA . $hunted_firma['firma_recibido'];
         } else {
             $hunted['firma_recibido'] = '';
         }
         # Comprobante de entrega
         $hunted['comprobante_entrega'] = URL_COMPROBANTE . $hunted['numero_guia'];
         return $hunted;
     }
 }
예제 #5
0
 /**
  * Récupère les informations d'un lieu en fonction d'une adresse
  * @param $adresse <i>(string)</i> adresse d'un lieu
  * @return <i>moove\ActiviteBundle\Entity\Lieu</i>
  */
 private function getInfosAdresse($adresse)
 {
     // On créé un objet GoogleMapsGeocoder prenant en paramètre l'adresse du lieu $adresse
     $geocodeLieu = new \GoogleMapsGeocoder($adresse);
     // On enregistre le résultat de la requête faite à GoogleMapsAPI pour récupérer les informations du lieu
     $reponse = $geocodeLieu->geocode();
     // On récupère les infos sur le lieu
     $infosLieu = $reponse['results'][0]['address_components'];
     // On récupère la latitude et longitude sur le lieu
     $latLngLieu = $reponse['results'][0]['geometry']['location'];
     // On créer un nouveau Lieu à partir des informations de Google
     $lieu = new Lieu();
     // On remplis certaine information non disponible via Google
     $lieu->setNom(null)->setComplementAdresse(null)->setLatitude($latLngLieu['lat'])->setLongitude($latLngLieu['lng']);
     foreach ($infosLieu as $value) {
         if (strcmp($value['types'][0], 'street_number') == 0) {
             $lieu->setNumeroRue($value['long_name']);
         } elseif (strcmp($value['types'][0], 'route') == 0) {
             $lieu->setNomRue($value['long_name']);
         } elseif (strcmp($value['types'][0], 'locality') == 0) {
             $lieu->setVille($value['long_name']);
         } elseif (strcmp($value['types'][0], 'postal_code') == 0) {
             $lieu->setCodePostal($value['long_name']);
         }
     }
     return $lieu;
 }