2010-06-01 14 views
5

Mam listę współrzędnych w bazie danych oznaczonej jako POI. Dla miasta może być> 100 rekordów.Zrobić coś, gdy telefon osiągnie zestaw lokalizacji?

Chciałbym otrzymywać powiadomienia, gdy telefon znajdzie się w zasięgu 150 metrów od jednej z lokalizacji. Współrzędne lokalizacji również mają błąd/promień, zwykle od 10 do 100 metrów. Ponieważ nie jest mi dobrze dodać każdą lokalizację (może być setki) dla wyzwalacza, w jaki sposób mogę zoptymalizować kod aktywacyjny?

Czy mam również opcję usunięcia powiadomienia z poprzedniej konfiguracji z kolejki?

Odpowiedz

2

Możesz przechowywać UM-y w inteligentnym Hash-Table używając współrzędnych do obliczenia unikalnego skrótu. Za każdym razem, gdy nadchodzi aktualizacja lokalizacji, dokonuje się wyszukiwania w haszdzie, aby sprawdzić, czy w pobliżu bieżącej lokalizacji znajdują się POI. To przeszukiwanie powinno zająć tylko O ​​(1), ponieważ jest to hash-lookup.

Pożądany zakres powinien być brany pod uwagę podczas obliczania skrótów i przechowywania POI.

Po prostu pomysł!

poważaniem, mefiX

+0

Z tego co wiem w Androidzie, ustawiasz wyzwalacz powiadomień w taki sposób, że mówisz systemowi, żeby "zadzwonił do mnie, gdy telefon osiągnie współrzędne x, y". Mówisz już coord. Mógłbym skonfigurować powiadomienia dla wszystkich moich klientów, ale prawdopodobnie nie działałoby to dobrze z setkami rekordów. Słuchanie aktualizacji lokalizacji może być procesem wyczerpywania baterii, a zatem wymaga uruchomienia aplikacji. – Pentium10

+0

Zestaw SDK dla systemu Android ma metodę 'addProximityAlert', która może być używana do tego celu. – Pentium10

0

Jest aplikacja o nazwie Locale, które mogą przełączać różne zdarzenia na podstawie lokalizacji GPS lub dostępnej sieci WiFi lub komórka-ID stacji, itp

Posiada również interfejs wtyczek . Przydatne może być zbadanie tej aplikacji i, być może, napisanie dla niej wtyczki.

+0

Wiem o istnieniu Locale, chcę zrobić coś bardzo podobnego, ale w innym celu. Nie mogę używać wtyczki Locale do sdk. – Pentium10

0

Ten problem przypomina grafikę w grach wideo. Nie ma potrzeby ładowania punktów, które znajdują się poza zakresem ruchu. Wrzuciłem mapę do siatki, ustawiam wyzwalacze dla 8 bloków siatki adiewy, a następnie dla każdego POI w bieżącym bloku siatki. Po osiągnięciu nowego bloku siatki wyzwalacze są aktualizowane. Prawdopodobnie mądrze byłoby nakładać się na bloki siatki, biorąc pod uwagę zakres błędów.

Powiązane problemy