2010-06-01 31 views
5

Ho un elenco di coordinate nel database identificato come PDI. Per una città potrebbe essere> 100 record.Fai qualcosa quando il telefono raggiunge un set di posizione?

Vorrei ricevere una notifica quando il telefono arriva a 150 metri di distanza da una posizione. Anche le coordinate di posizione hanno un errore/raggio, generalmente da 10 a 100 metri. Dal momento che non trovo opportuno aggiungere ogni posizione (potrebbe essere centinaia) per un trigger, come posso ottimizzare il codice di attivazione?

Inoltre, sono disponibili opzioni per rimuovere una notifica di configurazione precedente dalla coda?

risposta

2

È possibile memorizzare i POI in una sorta di tabella hash intelligente utilizzando le coordinate per calcolare un hash univoco. Ogni volta che arriva un aggiornamento di posizione, fai una ricerca nella tua tabella hash per vedere se ci sono POI vicino alla posizione corrente. Questa ricerca dovrebbe richiedere solo O (1), poiché si tratta di una ricerca hash.

L'intervallo desiderato deve essere preso in considerazione quando si calcolano gli hash e si memorizzano i POI.

Solo un'idea!

Cordiali saluti, Mefix

+0

Per quanto ne so in Android, si imposta il trigger di notifica in modo tale che si dica al sistema di "ronzarmi quando il telefono raggiunge in coord x, y" già dici ai coords. Potrei impostare le notifiche per tutti i miei pois, ma probabilmente non funzionerebbe bene con centinaia di record. L'ascolto degli aggiornamenti di posizione potrebbe essere un processo di esaurimento della batteria e pertanto richiede l'esecuzione dell'app. – Pentium10

+0

Android SDK ha un metodo 'addProximityAlert' che può essere utilizzato per questo scopo esatto. – Pentium10

0

C'è un'applicazione di nome Locale, che può alternare vari eventi in base alla posizione GPS o disponibile rete Wifi o cella-stazione di id, ecc

Essa ha anche un'interfaccia plug-in . Potrebbe essere utile per te esaminare quell'app e, forse, scrivere un plugin per questo.

+0

Conosco l'esistenza di Locale, voglio fare qualcosa di molto simile ma per scopi diversi. Non posso usare il plug-in del plug-in delle impostazioni locali. – Pentium10

0

Questo problema mi ricorda la grafica nei videogiochi. Non è necessario caricare i punti che sono al di fuori del raggio di movimento. Vorrei suddividere la mappa in una griglia, impostare i trigger per gli 8 blocchi di griglia adiacenti e quindi per ciascuno dei POI all'interno del blocco di griglia corrente. Quando viene raggiunto un nuovo blocco di griglia, i trigger vengono aggiornati. Sarebbe probabilmente intelligente sovrapporre i blocchi della griglia considerando l'intervallo di errore.

Problemi correlati