La implementación de una búsqueda de direcciones con Google API de codificación geográfica (o similar) [cerrada]

StackOverflow https://stackoverflow.com/questions/4390872

  •  10-10-2019
  •  | 
  •  

Pregunta

Me gustaría añadir una característica de mi sitio web donde un cliente puede introducir su código postal, y automtaically mira hacia arriba su dirección, ya sea con codificación geográfica de Google o un código abierto / Bing equivalente.

Alguien tiene ningún código de ejemplo o conoce una guía de buenas en el que puedo hacer esto?

Si se hace uso de jQuery aún mejor:)

Muchas gracias de antemano

Darren

¿Fue útil?

Solución

¿Está usted después de la parte de asignación única, o es lo que realmente desea capturar la dirección del cliente?

Si usted es después de que la dirección completa, entonces el Royal Mail PAF es lo que necesita. Echar un vistazo a nuestra compañía, CraftyClicks -. Revendemos los datos del PAF a un costo muy razonable

Google API le dará sólo la ubicación y un mapa.

Saludos, Adam

Otros consejos

El uso de getJSON y de jQuery API de Google - http://codepen.io/seanjacob/pen/wfcHB

$('#submit').click(function(){  

  //Get Postcode
  var number = $('#number').val();
  var postcode = $('#postcode').val().toUpperCase();;

  //Get latitude & longitude
  $.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' + postcode + '&key=[[YOUR_API_KEY]]', function(data) {

    var lat = data.results[0].geometry.location.lat;
    var lng = data.results[0].geometry.location.lng;

    //Get address    
    $.getJSON('https://maps.googleapis.com/maps/api/geocode/json?latlng=' + lat + ',' + lng + '&key=[[YOUR_API_KEY]]', function(data) {              
      var address = data.results[0].address_components;              
      var street = address[1].long_name;
      var town = address[2].long_name;
      var county = address[3].long_name;                        

      //Insert
      $('#text').text(number + ', ' + street + ', ' + town + ', ' + county + ', ' + postcode);

    });
  });
});

A menos que utilice la API de Google Maps for Business, está limitado a 2.500 solicitudes de geolocalización por día. Desde este script es hacer dos solicitudes por corrida, que es 1.250 ups mirada código postal del día.

En realidad estoy trabajando en una aplicación de Google Maps que utiliza geocodificación en este momento ... Es mi primera, así que he estado confiando en gran medida de la API de Google Maps. Aquí están los enlaces a ayudarle a empezar:

http://code.google.com/apis/maps/ / javascript / basics.html documentación -. Un punto básico de partida para la API en general

Look en la columna izquierda para el tutorial, geocodificación (o el enlace de geocodificación a mitad de camino a través del tutorial), y muestras de código.

Todo esto me llevó a donde necesitaba para empezar.

Buena suerte!

Lelando

Gracias por su respuesta seanjacob la que me llevó a profundizar un poco más. Los resultados devueltos en address_components no son siempre los mismos tipos, es decir, índice 1 no siempre mantenga pulsado el nombre de la calle, lo que es mejor para comprobar el valor devuelto en address_components [n] .types [0] para determinar el tipo de campo de dirección se contiene.

Tenga en cuenta también que ahora debe hacer la llamada a la API de Google a través de https y se necesita especificar su clave de API.

Aquí está la secuencia de comandos:

function getAddress() {
//Get Postcode
var number = $('#HouseNumber').val();
var postcode = $('#PostCode').val().toUpperCase();;
var address_1 = '';
var address_2 = '';
var town = '';
var county = '';
var pcode = '';
var region = '';
var country = '';
//Get Address
$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' + postcode + '&sensor=false&key=[YOUR API KEY IN HERE]', function (data) {

    // Format/Find Address Fields
    var address = data.results[0].address_components;
    // Loop through each of the address components to set the correct address field
    $.each(address, function () {
        var address_type = this.types[0];
        switch (address_type) {
            case 'route':
                address_1 = number + ' ' + this.long_name;
                break;
            case 'locality':
                address_2 = this.long_name;
                break;
            case 'postal_town':
                town = this.long_name;
                break;
            case 'administrative_area_level_2':
                county = this.long_name;
                break;
            case 'administrative_area_level_1':
                region = this.long_name;
                break;
            case 'country':
                country = this.long_name;
                break;
        }
    });
    // Sometimes the county is set to the postal town so set to empty if that is the case
    if (county === town) {
        county = '';
    }
    // Display the results
    $('#address_1').text(address_1);
    $('#address_2').text(address_2);
    $('#town').text(town);
    $('#county').text(county);
    $('#postcode').text(postcode);
    $('#region').text(region);
    $('#country').text(country);
});

}

Y aquí está la página de llamar a la función

<div class="form-horizontal">
<div class="form-group">
    <div class="col-md-2 control-label"><label for="HouseNumber">House No.</label></div>
    <div class="col-md-10">
        <input type="text" id="HouseNumber" name="HouseNumber" />
    </div>
</div>
<div class="form-group">
    <div class="col-md-2 control-label"><label for="PostCode">Post Code</label></div>
    <div class="col-md-10">
        <input type="text" id="PostCode" name="PostCode" />
    </div>
</div>
<div class="form-group">
    <div class="row">
        <div class="col-md-4 acc-centre">&nbsp;</div>
        <div class="col-md-4 acc-centre"><input type="button" class="btn btn-primary btn-lg" value="Lookup" onclick="getAddress()"></div>
        <div class="col-md-4 acc-centre">&nbsp;</div>
    </div>
    <div class="row">
        <div class="col-md-12 acc-centre">
            <span id="address_1"></span><br />
            <span id="address_2"></span><br />
            <span id="town"></span><br />
            <span id="county"></span><br />
            <span id="postcode"></span><br />
            <span id="region"></span><br />
            <span id="country"></span><br />
        </div>
    </div>
</div>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top