Sei sulla pagina 1di 7

Rodrigo / Gil

Les anexo el archivo de Excel con las direcciones de los ATMs que no estn asociados a una sucursal y de los
que hay que obtener su Latitud y Longitud.

Les anexo la documentacin y ejemplos donde a partir de una direccin se pueden obtener 1 o ms
resultados con respecto a la direccin.
La funcin que se usa es
geocoder.geocode( { 'address': address}, function(results, status)

dnde address es la direccin, results son las coincidencias y status es la validacin de la operacin

Los resultados los regresa en una estructura que puede analizarse para determinar la priorizacin
de los resultados, es decir
o Si la direccin es exacta regresar solo un registro que coincidir con la direccin enviada
o Si no hay coincidencia exacta tendramos que validar la colonia del ATM dentro de las
coincidencias que nos regresa para saber cul es el punto que debemos elegir
o Si no se puede tener coincidencia por la Direccin o la Colonia, el ltimo criterio de
seleccin para ubicar el ATM ser el Cdigo Postal

La validacin del estatus de la bsqueda es con la funcin:
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);


Este ejemplo est basado en lo que necesitamos, prubenlo con
Prol. Paseo de la Reforma 500

https://developers.google.com/maps/documentation/javascript/examples/geocoding-
simple?hl=es





Esta es la liga con la informacin sobre la geocodificacin y de la que les muestro una parte
ms abajo.
https://developers.google.com/maps/documentation/javascript/geocoding?hl=es


Es importante conseguir una llave para el uso del API
https://developers.google.com/maps/licensing?hl=es

La versin libre solo nos permite hacer 2,500 consultas por da asociadas a la llave e IP

Cualquier duda por favor bsquenme y lo revisamos.

Muchas Gracias.


Respuestas de codificacin geogrfica
Para el servicio de asignacin de identificadores geogrficos se necesita un mtodo de devolucin
de llamada que se ejecute al recuperar los resultados del geocoder. Esta devolucin de llamada
debe transmitir dos parmetros que alojen resultados (results) y un cdigo de estado (status), en
ese orden. Puesto que el geocoder puede devolver ms de una entrada, el objeto
literal GeocoderResults es un conjunto.
Resultados de codificacin geogrfica
El objeto literal GeocoderResults representa un nico resultado de codificacin geogrfica y
presenta la siguiente forma:
results[]: {
types[]: string,
formatted_address: string,
address_components[]: {
short_name: string,
long_name: string,
types[]: string
},
geometry: {
location: LatLng,
location_type: GeocoderLocationType
viewport: LatLngBounds,
bounds: LatLngBounds
}
}
A continuacin, se explican estos campos.
types[] es un conjunto que indica de qu tipo son los resultados obtenidos. Este conjunto
incluye una o ms etiquetas que identifican el tipo de elemento que se ha obtenido en el
resultado. Por ejemplo, un cdigo geogrfico de "Chicago" devuelve "locality", lo que indica
que "Chicago" es una ciudad y adems devuelve "political", lo que significa que es una entidad
poltica.
formatted_address es una cadena que contiene la direccin interpretable por humanos de la
ubicacin. Esta direccin suele corresponder con la "direccin postal", que a veces difiere de
un pas a otro (ten en cuenta que algunos pases, como Gran Bretaa, no permiten la
distribucin de direcciones postales reales debido a restricciones de la licencia). Esta suele
estar formada por uno o varios componentes de la direccin. Por ejemplo, la direccin "111
8th Avenue, New York, NY" contiene componentes independientes para "111 8th Avenue"
(una direccin postal), "New York" (la ciudad) y "NY" (el estado de EE.UU.). Los componentes
de la direccin se describen ms abajo. Para obtener ms informacin sobre los diferentes
tipos, consulta la seccin Tipos de componentes de la direccin que encontrars a
continuacin.
address_component[] es un conjunto que incluye los diferentes componentes de la direccin,
tal como se ha explicado anteriormente.
geometry contiene la siguiente informacin:
o location contiene el valor de latitud y longitud codificado de forma geogrfica. Ten en cuenta
que este valor se devuelve como un objeto LatLng, no como una cadena con formato.
o location_type almacena datos adicionales sobre la ubicacin especificada. Actualmente, se
admiten los siguientes valores:
google.maps.GeocoderLocationType.ROOFTOP indica que el resultado obtenido refleja un
cdigo geogrfico preciso.
google.maps.GeocoderLocationType.RANGE_INTERPOLATED indica que el resultado obtenido
refleja una aproximacin (normalmente en una carretera) interpolada entre dos puntos
precisos (por ejemplo, intersecciones). Los resultados interpolados se suelen obtener cuando
los cdigos geogrficos de la parte superior no estn disponibles para una direccin postal.
google.maps.GeocoderLocationType.GEOMETRIC_CENTER indica que el resultado obtenido
corresponde al centro geomtrico de un resultado del tipo polilnea (por ejemplo, una calle) o
polgono (una regin).
google.maps.GeocoderLocationType.APPROXIMATE indica que el resultado obtenido es
aproximado.




o viewport almacena la ventana grfica recomendada para el resultado obtenido.
o bounds (se devuelve de forma opcional) almacena los lmites de latitud y de longitud
(LatLngBounds) que pueden contener por completo el resultado obtenido. Ten en cuenta que
estos lmites pueden no coincidir con la ventana grfica recomendada (por ejemplo, San
Francisco incluye Los Farallones, que tcnicamente forman parte de la ciudad pero no se
muestran en la ventana grfica).
El geocoder devuelve las direcciones con la configuracin de idioma preferida del navegador, o en
el idioma especificado al cargar el cdigo JavaScript del API mediante el parmetro language. (para
obtener ms informacin, consulta la seccin Localizacin).
Tipos de componentes de la direccin
El conjunto types[] del resultado obtenido indica el tipo de direccin. Estos tipos tambin pueden
aparecer dentro de los conjuntos address_components[] para indicar el tipo del componente de la
direccin en concreto. Las direcciones del geocoder pueden tener diversos tipos (los tipos se
pueden considerar "etiquetas"). Por ejemplo, muchas ciudades pueden estar etiquetadas con los
tipos political y locality.
A continuacin, se indican los tipos de direcciones que admite y muestra el geocoder de HTTP.
street_address indica una direccin postal precisa.
route indica una carretera identificada (por ejemplo, "US 101").
intersection indica una interseccin importante, normalmente de dos carreteras importantes.
political indica una entidad poltica. Este tipo suele indicar un rea poligonal de alguna
administracin civil.
country indica la entidad poltica nacional y normalmente, es el tipo de mayor escala que
devuelve el geocoder.
administrative_area_level_1 indica una entidad poltica de primer nivel por debajo del
nacional. En Estados Unidos, las entidades que corresponden a este nivel administrativo son
los estados. No todos los pases cuentan con este nivel administrativo.
administrative_area_level_2 indica una entidad poltica de segundo nivel por debajo del
nacional. En Estados Unidos, las entidades que corresponden a este nivel administrativo son
los condados. No todos los pases cuentan con este nivel administrativo.
administrative_area_level_3 indica una entidad poltica de tercer nivel por debajo del
nacional. Este tipo indica una divisin administrativa de menor tamao. No todos los pases
cuentan con este nivel administrativo.
colloquial_area indica un nombre alternativo usado con frecuencia para designar la entidad.
locality indica una entidad poltica equivalente al municipio.
sublocality indica una entidad poltica de primer nivel por debajo del municipal.
neighborhood indica un barrio identificado.
premise indica una ubicacin identificada. Normalmente se trata de un edificio o de un
complejo de edificios con un nombre comn.
subpremise indica una entidad de primer nivel por debajo del de ubicacin identificada.
Normalmente se trata de un edificio individual dentro de un complejo de edificios con un
nombre comn.
postal_code indica un cdigo postal utilizado para enviar correo postal dentro del pas.
natural_feature indica un paraje natural destacado.
airport indica un aeropuerto.
park indica un parque identificado.
A continuacin, se indican otros posibles tipos de componentes de direccin.
post_box indica un apartado postal especfico.
street_number indica la calle y el nmero exacto del edificio.
floor indica la planta del edificio.
room indica la puerta dentro del edificio.
Cdigos de estado
El cdigo status puede devolver uno de los siguientes valores:
google.maps.GeocoderStatus.OK indica que la codificacin geogrfica se ha realizado
correctamente.
google.maps.GeocoderStatus.ZERO_RESULTS indica que la codificacin geogrfica se ha
realizado correctamente pero no ha devuelto ningn resultado. Esto puede ocurrir si en la
codificacin geogrfica se incluye una direccin (address) inexistente o un valor latng en una
ubicacin remota.
google.maps.GeocoderStatus.OVER_QUERY_LIMIT indica que se ha excedido el cupo de
solicitudes.
google.maps.GeocoderStatus.REQUEST_DENIED indica que se ha denegado la solicitud por
algn motivo.
google.maps.GeocoderStatus.INVALID_REQUEST normalmente indica que no se ha
especificado la solicitud (address o latLng).
En el siguiente ejemplo se codifica de forma geogrfica una direccin y se coloca un marcador en
los valores de latitud y de longitud obtenidos. Ten en cuenta que el controlador se transmite como
una funcin literal annima.


var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}

function codeAddress() {
var address = document.getElementById("address").value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}

<body onload="initialize()">
<div id="map_canvas" style="width: 320px; height: 480px;"></div>
<div>
<input id="address" type="textbox" value="Sydney, NSW">
<input type="button" value="Encode" onclick="codeAddress()">
</div>
</body>
Ver ejemplo (geocoding-simple.html)







La funcin para el clculo de la distancia entre dos puntos la tenemos en javascript y en PL
por lo que una vez obtenidos los puntos la podemos utilizar para calcular cual es la
sucursal ms cercana al ATM, esto lo podemos revisar el lunes, bsicamente es convertir
los grados a radianes para calcular distancias lineales.
function calculator() {
alert("COMIENZA CALCULO");
var degtorad = 0.01745329;
var radtodeg = 57.29577951;
//var lat1h = document.pasa.lat1.value; 19.459979, -99.221422
//var lat2h = document.pasa.lat2.value; 19.429944, -99.19707
//var long1h = document.pasa.long1.value;
//var long2h = document.pasa.long2.value;

var lat1h = 19.529421
var lat2h = 19.429944

//lat1h = getElementById(sucLatitud).value;

var long1h = -99.156387
var long2h = -99.19707

//long1h = getElementById(sucLongitud).value;

var lat1 = parseFloat(lat1h);
var lat2 = parseFloat(lat2h);
var long1 = parseFloat(long1h);
var long2 = parseFloat(long2h);
//alert("1");
var dlong = (long1 - long2);
var dvalue = (Math.sin(lat1 * degtorad) * Math.sin(lat2 * degtorad))
+ (Math.cos(lat1 * degtorad) * Math.cos(lat2 * degtorad)
* Math.cos(dlong * degtorad));
//alert("2");
var dd = Math.acos(dvalue) * radtodeg;
var miles = (dd * 69.16);
miles = (miles * 100)/100;
var km = (dd * 111.302);
km = (km * 100)/100;
alert("RESULTADO EN KILOMETROS: "+ km);
//alert(km);
alert("RESULTADO EN MILLAS: " + miles);
//alert(miles);


document.pasa.result.value = FormatNumber(miles, 2);
document.pasa.result2.value = FormatNumber(km, 2);

}

Potrebbero piacerti anche