Posts Tagged geolocalizacion
Criticando de aquí y de allá - geocriticas.com
Escrito por diego en GeoCríticas el Julio 13th, 2009
Al fin doy la bienvenida a
, es un lugar en el que se puede comentar, opinar o criticar sobre algún sitio en el que hemos estado, esa crítica quedaría sobre los mapas de Google Maps. Lo mejor es que se puede criticar de todo, de todo aquello que hemos visitado, y es que pueden ser muchos los sitios en los que nos movemos: un cine, una playa, un museo, un banco, un súper, una gasolinera, una tienda, un polideportivo, un gimnasio, un hotel, un taller, una universidad, también sitios públicos como calles, aceras, ayuntamientos, oficinas públicas etc, etc. De todos ellos podemos hablar sobre cualquier razón por la que no era tan bueno como pensábamos antes de ir, o al contrario, que sea tan bueno que se lo recomiendo a todo el mundo. Así que te permite estar informado de lo que nos podemos encontrar antes de ir a un taller de coches, por ejemplo. A grandes rasgos esto sería
y la verdad es que es muy fácil de utilizar y sobre todo rápido a la hora de dejar una crítica.
De momento es una versión de lanzamiento (beta) se irá mejorando conforme la marcha. Cuando entramos nos encontramos con la página principal donde aparecen las críticas sobre el mapa y en la parte de abajo las últimas críticas agrupadas por las más puntuadas, las más valoradas. las más vistas y los últimos comentarios (ver captura 1); están tanto por región como por país se sabe según la dirección IP del usuario que informa de su ubicación en el mapa sólo con el hecho de haber entrado.
Vamos a ver para dejar una crítica en unos pasos (ver captura 2):
- Buscamos el lugar en el mapa y arrastramos un pin sobre el sitio. Tiene buscador con poner la ciudad, calle y número lleva al sitio directamente.
- Seleccionamos la categoría: cine, playa, museo, banco, un súper, una gasolinera, una tienda, un polideportivo, un gimnasio, un hotel, un taller, una universidad, sitios públicos como carreteras, calles, etc.
- Criticamos sobre “lo bueno” y “lo malo”
- Subimos una foto.
- Está la opción de enlazar un vídeo que tengamos subido en YouTube.
MySQL Adaptación de procedimiento almacenado para obtener puntos por latitud/longitud geolocalizados en un mapa dentro de un radio
Escrito por diego en Informática el Julio 6th, 2009
Situación:
Partimos que tenemos una tabla con datos cada uno de los registros contiene una localización latitud y longitud, y queremos ubicarlos en un mapa, y que además estén todos ellos dentro de un área determinada a partir de un punto inicial (alrededor). Por ejemplo en Madrid tenemos los siguientes puntos:
Entonces sabiendo las coordenadas del punto que está en el centro del recuadro negro queremos obtener los pines que hay dentro de esa área, para ello hago una consulta a la tabla que contiene las coordenadas de los pines rojo.
Código:
– Fuente original: http://www.mysqlfulltextsearch.com/geo_search.pdf
DELIMITER $$
-- @param radio El radio va en kilómetros
DROP PROCEDURE IF EXISTS `nombre_nuestra_basedatos`.`geoPuntosRadio`$$
CREATE DEFINER=`nombre_nuestra_basedatos`@`%`
PROCEDURE `geoPuntosRadio`(IN latuser double, IN longuser double, IN radio int)
BEGIN
declare lon1 float; declare lon2 float;
declare lat1 float; declare lat2 float;
-- calcular latitud/longitud del rectángulo:
set lon1 = longuser-radio/abs(cos(radians(latuser))*69);
set lon2 = longuser+radio/abs(cos(radians(latuser))*69);
set lat1 = latuser-(radio/69);
set lat2 = latuser+(radio/69);
-- Consulta con el resultado y distancia en km:
SELECT *,
6378.137 * 2 * ASIN(SQRT( POWER(SIN((latuser - c.latitud)
* pi()/180 / 2), 2) +
COS(latuser * pi()/180) * COS(c.latitud * pi()/180) *
POWER(SIN((longuser - c.longitud) * pi()/180 / 2), 2) )) as distancia
FROM nuestra_tabla c
WHERE c.longitud between lon1 and lon2
and c.latitud between lat1 and lat2
having distancia < radio ORDER BY distancia limit 10;
END$$
DELIMITER ;
Para obtener los datos dado que es un procedimiento almacenado en la base de datos usamos la llamada al procedimiento. Le pasamos las coordenadas del centro latitud/longitud y el radio que se desea cubrir en kilómetros.
call geoPuntosRadio(37.8,-0.8, 100) //latitud, longitud, radio (km)
Reconocimientos:
Este post a sido una adaptación de la obra titulada Geo (proximity) Search with MySQL por Alexander Rubin (consultor senior en MySQL), donde hace una introducción al cálculo de distancias en la Tierra mediante coordenadas y lo extrapola a MySQL. La obra original obtiene las coordenadas de usuarios guardadas en tablas.





