2010-06-01 11 views
5

Tengo una lista de coordenadas en la base de datos identificada como POI. Para una ciudad podría ser> 100 registros.¿Hace algo cuando el teléfono llega a un conjunto de ubicación?

Me gustaría recibir una notificación cuando el teléfono se encuentre en un alcance de 150 metros de una de las ubicaciones. Las coordenadas de ubicación también tienen un error/radio, generalmente de 10 a 100 metros. Como no me parece bien agregar cada ubicación (podría haber cientos) para un desencadenante, ¿cómo puedo optimizar el código de activación?

También tengo opciones para eliminar una notificación de configuración previa de la cola?

Respuesta

2

Puede almacenar sus PDI en algún tipo de Hash-Table inteligente usando las coordenadas para calcular un hash único. Cada vez que llega una actualización de ubicación, realice una búsqueda en su tabla hash para ver si hay PDI cerca de la ubicación actual. Esta búsqueda solo debe tomar O (1), ya que es una búsqueda hash.

El rango deseado debe tenerse en cuenta al calcular los valores hash y almacenar los POI.

¡Solo una idea!

Saludos cordiales, Mefix

+0

Hasta donde yo sé en Android, configura el disparador de notificaciones de tal manera que le dice al sistema 'que me avise cuando el teléfono llegue a coordenadas x, y' Usted ya le dice a las coords. Podría configurar notificaciones para todos mis puntos, pero eso probablemente no funcionaría bien con cientos de registros. Escuchar las actualizaciones de ubicación puede ser un proceso de agotamiento de la batería y, por lo tanto, requiere que la aplicación se esté ejecutando. – Pentium10

+0

Android SDK tiene un método 'addProximityAlert' que se puede usar para este propósito exacto. – Pentium10

0

Hay una aplicación llamada Locale, que puede alternar diferentes eventos en función de su ubicación GPS o disponibles a la red Wi-Fi o celular-ID de la estación, etc

También cuenta con una interfaz de plugins . Podría ser útil que examines esa aplicación y, tal vez, escribas un complemento para ella.

+0

Sé acerca de la existencia de Locale, quiero hacer algo muy similar pero con un propósito diferente. No puedo usar el plugin sdk de Locale. – Pentium10

0

Este problema me recuerda a los gráficos en los videojuegos. No es necesario cargar los puntos que están fuera del rango de movimiento. Descomponía el mapa en una cuadrícula, establecía desencadenantes para los 8 cuadrantes de cuadrícula adjecent y luego para cada uno de los puntos de interés dentro del bloque de cuadrícula actual. Cuando se llega a un nuevo bloque de cuadrícula, los activadores se actualizan. Probablemente sería inteligente superponer los bloques de la red teniendo en cuenta el rango de error.

Cuestiones relacionadas