2011-05-16 24 views

Respuesta

18

Usando el código JavaScript de Google Maps V3 API:

Es necesario hacer referencia a esto:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> 

Haga lo siguiente: =

var zip = <yourzipcode>; 
    var lat; 
    var lng; 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({ 'address': zip }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      geocoder.geocode({'latLng': results[0].geometry.location}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       if (results[1]) { 
        var loc = getCityState(results); 
       } 
      } 
     }); 
     } 
    }); 

function getCityState(results) 
    { 
     var a = results[0].address_components; 
     var city, state; 
     for(i = 0; i < a.length; ++i) 
     { 
      var t = a[i].types; 
      if(compIsType(t, 'administrative_area_level_1')) 
       state = a[i].long_name; //store the state 
      else if(compIsType(t, 'locality')) 
       city = a[i].long_name; //store the city 
     } 
     return (city + ', ' + state) 
    } 

function compIsType(t, s) { 
     for(z = 0; z < t.length; ++z) 
      if(t[z] == s) 
      return true; 
     return false; 
    } 

Todo esto devuelve una cadena que contiene la ciudad y el estado en este formato, pero puede ajustarlo a sus necesidades.

+0

cuáles son las otras referencias que tengo que incluir. Se produce un error como error: google.maps no está definido Archivo de origen: http: //localhost/SWP/JavaScript/JqueryScriptSource.js para esta línea: var geocoder = new google.maps.Geocoder(); – user695663

+0

Tienes que hacer referencia a los mapas de Google api v3 – slandau

+1

que se agregaron anteriormente en la edición – slandau

2

encontrado un artículo en Css-tricks.com, la funcionalidad se implementa utilizando Ziptastic http://css-tricks.com/using-ziptastic/

$.ajax({ 
url: "http://zip.elevenbasetwo.com", 
cache: false, 
dataType: "json", 
type: "GET", 
data: "zip=" + el.val(), 
success: function(result, success) { 

$(".fancy-form div > div").slideDown(); /* Show the fields */ 

$("#city").val(result.city); /* Fill the data */ 
$("#state").val(result.state); 

$(".zip-error").hide(); /* In case they failed once before */ 

$("#address-line-1").focus(); /* Put cursor where they need it */ 

}, 
error: function(result, success) { 

$(".zip-error").show(); /* Ruh row */ 

} 

}); 
+0

Esto ya no funciona debido a problemas cruzados de origen ... – Ruchi

+0

@Ruchi No lo he intentado, pero creo que puedes usar "jsonp" para solucionar el problema de origen cruzado. –

0

Se agradecen todas las respuestas, si no desea profundizar en la complejidad del código, aquí hay una solución para usted.

primer paso:.

descarga última versión del código postal país archivo de Excel y localizar ese archivo de Excel en la carpeta raíz (Puede descargarlo aquí)
https://data.gov.in/catalog/all-india-pincode-pirectory#web_catalog_tabs_block_10)

Segundo paso:

Llamar a la función ajax donde está su formulario

<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script type=”text/javascript”><br> 
jQuery(document).ready(function(){ 
jQuery(‘.postcode‘).blur(function(){ //.postcode class of zipcode text field 
var s = jQuery(this).val(); 
jQuery.ajax({ 
type: ‘POST’, 
url:“http://www.sample.com/postcode.php“, //file which read zip code excel  file 
dataType: “json”, //is used for return multiple values 
data: { ‘s’ : s }, 
success: function(data){ 
try { 
jQuery(“.state“).val(data.state); //region-class of state text field 
jQuery(“.city“).val(data.dist);//city-class of city text filed 
} catch (e) { 
alert(e.Message); 
} 
}, 
error:function (xhr, status, err){ 
alert(“status=” + xhr.responseText + “, error=” + err); 
} 
}); 
}); 
}); 
</script> 

Esta función Ajax llamará “http://www.sample.com/postcode.php” Archivo

En Archivo de postcode.php tenemos que leer el archivo de excel y el estado y el valor de la ciudad

postcode.php

<?php 
extract ($_POST); 
$s=$_POST[‘s’]; //get value from ajax 
$filename=”zip.csv“; //zipcode csv file(must reside in same folder) 
$f = fopen($filename, “r”); 
while ($row = fgetcsv($f)) 
{ 
if ($row[1] == $s) //1 mean number of column of zipcode 
{ 
    $district=$row[3]; //3- Number of city column 
    $state=$row[4]; //4-Number of state column 
    break; 
} 
} 
fclose($f); 
echo json_encode(
array(“dist” => $district, 
“state” => $state, 
“zip” => $s) 
); //Pass those details by json 
?> 

Eso es volver Todos, disfruta

Cuestiones relacionadas