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