Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/03/2014, 13:45
tuuutooo
 
Fecha de Ingreso: septiembre-2008
Mensajes: 72
Antigüedad: 15 años, 7 meses
Puntos: 0
Información Problemas con codificación geografíca

Hola amigos, quisiera ver la posibilidad que me puedan ayudar con este tema: Tengo un php que a través de él quiero obtener la latitud y longitud de una dirección

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Documento sin título</title>
  5. </head>
  6.  
  7. <form action="agreagar.php" method="post" enctype="multipart/form-data" class="form-horizontal" id="frmAdd">
  8.   <div class="control-group">
  9.     <label class="control-label" for="cboGrupos">Clientes</label>
  10.                                                         <div class="controls controls-row">
  11. <select name="cboClientes" class="select2-select-00 span6" id="cboClientes">
  12.                                                                 <?
  13.                                                                     $sqlC="select id_cliente, nombre from clientes order by id_cliente";
  14.                                                                     $resultC=pg_query($conn, $sqlC);
  15.                                                                     if($rowC=pg_fetch_array($resultC)){
  16.                                                                         do{
  17.                                                                             echo "<option value=\"".$rowC['id_cliente']."\">".$rowC['nombre']."</option>";
  18.                                                                         }while($rowC=pg_fetch_array($resultC));
  19.                                                                     }
  20.                                                                 ?>
  21.                                                           </select>
  22.                                                       </div>
  23.   </div>
  24.                                                     <div class="control-group">
  25.                                                         <label for="txtMensaje" class="control-label">Ubicación</label>
  26.                                                         <div class="controls">
  27.                                                             <input name="txtMensaje" type="text" class="span6" id="txtMensaje" value="<?=$pdata['txtMensaje'];?>">
  28.                                                         </div>                                                        
  29.                                                     </div>
  30.   <div class="control-group">
  31.                                                         <label for="txtCalle" class="control-label">Dirección</label>
  32.                                                         <div class="controls">
  33.                                                             <input name="txtCalle" type="text" class="span6" id="txtCalle" value="<?=$pdata['txtCalle'];?>" maxlength="400">
  34.                                                             <p class="help-block"><code id="lenCalle">Maximo caracteres 400 caracteres.</code></p>
  35.                                                         </div>                                                        
  36.                                                     </div>
  37.                                                     <div class="control-group">
  38.                                                       <label class="control-label" for="cboGrupos">Comuna</label>
  39.                                                         <div class="controls controls-row">
  40.                                                             <select name="cboComunas" class="select2-select-00 span6" id="cboComunas">
  41.                                                                 <?
  42.                                                                     $sqlCm="select id_comuna, comuna from comunas";
  43.                                                                     $resultCm=pg_query($conn, $sqlCm);
  44.                                                                     if($rowCm=pg_fetch_array($resultCm)){
  45.                                                                         do{
  46.                                                                             echo "<option value=\"".$rowCm['id_comuna']."\">".$rowCm['comuna']."</option>";
  47.                                                                         }while($rowCm=pg_fetch_array($resultCm));
  48.                                                                     }
  49.                                                                 ?>
  50.                                                             </select>
  51.                                                                                                                
  52.                                                         </div>
  53.   </div>
  54.                                       <div class="form-actions">
  55.                                                         <button type="button" class="btn btn-primary">Guardar</button>
  56.                                                         <button class="btn" type="reset"  id="btnCancel">Limpiar</button>
  57.                                                         <div id="progressbar" class="progress active progress-striped span3" style="display:none">
  58.                                                                 <div class="bar" style="width: 67%; "></div>
  59.                                         </div>
  60.   </div>
  61. </form>
  62. </body>
  63. </html>

Ese formulario hace referencia a agregar.php, donde recibo las variables por post, en mi base de datos solo estoy guardando los campos cliente, ubicación (no es la dirección), comuna

Código PHP:
Ver original
  1. <?
  2. include("session.php");
  3. include("include/conn.php");
  4.  
  5. $do_commit=true;
  6. $data=$_POST;
  7.  
  8.  
  9. if(!$cboClientes=pg_escape_string(strtolower($data['cboClientes']))){
  10.     $do_commit=false;
  11.     $errmesg.="Debes seleccionar un Cliente.<br>";
  12. }
  13.  
  14. if(!$txtMensaje=pg_escape_string($data['txtMensaje'])){
  15.     $do_commit=false;
  16.     $errmesg.="Debes ingresar tu ubicación.<br>";
  17. }
  18.  
  19. if(!$cboComunas=pg_escape_string(strtolower($data['cboComunas']))){
  20.     $do_commit=false;
  21.     $errmesg.="Debes seleccionar una Comuna.<br>";
  22. }
  23.  
  24. $sql1="select id_comuna, comuna from comunas where id_comuna=$cboComunas";
  25. $result1=pg_query($conn, $sql1);
  26. if($row1=pg_fetch_array($result1)){
  27.     $nom_comuna=$row1['comuna'] ;
  28. }
  29.  
  30. $txtCalle=pg_escape_string($data['txtCalle']);
  31.  
  32. $address = $txtCalle;;
  33. $addressCompleta = $txtCalle." ". $nom_comuna." ". 'Chile';
  34. $resultado = file_get_contents(sprintf('http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=%s', urlencode($address)));
  35. $resultado = json_decode($resultado, TRUE);
  36.  
  37. $lat = $resultado['results'][0]['geometry']['location']['lat'];
  38. $lon = $resultado['results'][0]['geometry']['location']['lng'];
  39.  
  40. $latlon = "$lat,$lon";
  41.  
  42. if($do_commit){
  43.     $sql2="insert into faros.faros_cliente (cliente_id, ubicacion, latlon, comuna_id) values ($cboClientes, '$txtMensaje', '$latlon', $cboComunas)";
  44.     $result2=pg_query($conn, $sql2);
  45.     if(pg_affected_rows($result2)==0){
  46.         $do_commit=false;
  47.         $errmesg.="Error Inesperado.<br>";
  48.     }else{
  49.         $sql3="select LASTVAL();";
  50.         $result3=pg_query($conn, $sql3);
  51.         if($row3=pg_fetch_array($result3)){
  52.             $local=$row3[0];
  53.         }else{
  54.             $do_commit=false;
  55.             $errmesg.="Error Inesperado.<br>";
  56.         }
  57.     }
  58. }
  59.  
  60.  
  61.  
  62. if($do_commit){
  63.     pg_exec("COMMIT");
  64.     header("location: php2.php");
  65.     exit();
  66. }
  67. if(!$do_commit){
  68.     pg_exec("ROLLBACK");
  69.     $_SESSION['pdata']=$_POST;
  70.     $_SESSION['errmesg']=$errmesg;
  71.     header("location: php1.php");
  72.     exit();
  73. }
  74. ?>

HASTA AQUI NO TENGO NINGUN PROBLEMA, puedo ver por consola los resultados que he enviado, por ejemplo en dirección imprime: Tobalaba 1411, providencia, Chile.

La dificultad la tengo ahora, cuando quiero editar el php, hago llegar todos los datos, pero en la dirección me da un problema: me llega de la siguiente forma: Tobalaba 1400 - 1500.

Código PHP:
Ver original
  1. <?
  2. include("session.php");
  3. include("include/conn.php");
  4.  
  5. if(array_key_exists("pdata", $_SESSION)){
  6.     $pdata=$_SESSION['pdata'];
  7. }
  8. unset($_SESSION['pdata']);
  9.  
  10. $idC=$_GET['idC'];
  11.  
  12. $sql="select id_faroclie, identificador, fc.faro_id, nombre as cliente, ubicacion, descripcion, cm.comuna, cm.id_comuna, latlon from cliente as cf, foco as f, clientes_f as c, comunas as cm where c.id_cliente=fc.cliente_id and f.id_faro=fc.faro_id and cm.id_comuna=fc.comuna_id and id_faroclie=$idC";
  13. $result=pg_query($conn, $sql);
  14. if(!$row=pg_fetch_array($result)){
  15. }
  16.  
  17. $pdata['idC']=$row['id_faroclie'];
  18. $pdata['cboGrupos']=$row['faro_id'];
  19. $pdata['txtMensaje']=$row['ubicacion'];
  20. $pdata['txtDescripcion']=$row['descripcion'];
  21. $pdata['cboComunas']=$row['id_comuna'];
  22. $pdata['latlon']=$row['latlon'];
  23.  
  24. $coordenadas=explode(",", $pdata['latlon']);
  25. $txtCalle=getAddress($coordenadas[0], $coordenadas[1]);
  26.  
  27. $direccionCorta=explode(",", $txtCalle);
  28.  
  29. function getAddress($lat, $lon){
  30.    $url  = "http://maps.googleapis.com/maps/api/geocode/json?latlng=".
  31.             $lat.",".$lon."&sensor=false";
  32.    $json = @file_get_contents($url);
  33.    $data = json_decode($json);
  34.    $status = $data->status;
  35.    $address = '';
  36.    $types =$data->street_address;
  37.    if($status == "OK"){
  38.       $address = $data->results[0]->formatted_address;
  39.     }
  40.    return $address;
  41.   }
  42.  
  43.  
  44. ?>

Es posible que en la dirección que editaré solo me llegue la dirección como yo la inserte y no un rango de esta?

Si me pueden ayudar se los agradecería un monton.

Muchas Gracias