Jak wykryć i zapisać moment w którym określony punkt mieści się w naszym zakresie ?

0

Chcę zrealizować takie zadanie, że jest sobie mapa google na której mam zaznaczone punkty. Te punkty to jakieś przystanki tzw stacje. Jadąc rowerem możemy się tam zatrzymać na tyle na ile chcemy i ruszyć dalej. Urządzenie GPS pobiera dane i wysyła do bazy swoje dane gdzie się znajduje to wiadomo o co chodzi.

Chodzi teraz o to by wykryć czy punkt w jakim znajduje się użytkownik jest w zasięgu naszego promienia. Czyli jeżeli rowerzysta wjedzie w dany obszar to system zapisze że już on się tam znajduje. Ale jak za 5 sekund znowu przyjdą dane to żeby system nie zapisywał znowu że już tam jest bo nie chcę żeby się to powtarzało. Dopiero gdy użytkownik wyjedzie ze strefy to żeby się zapisało że opuścił strefę i jeśli wjechałby ponownie to znowu żeby się zapisało że jest w danej strefie. Nie ma ograniczeń co do ilości odwiedzania tej samej strefy. Na koniec byłaby wyświetlana lista dla danych rowerzystów w jakich punktach byli i ile czasu tam spędzili.

Pytanie jak najlepiej to zrealizować ?
Dać jakieś pola z czasem jak Start_zone, End_zone, ID_zone

0

Tak będzie najprościej. Wystarczy że pamiętasz "ostatnią" strefę w której user był i jeśli nowa strefa jest taka sama to nic nie robisz, a jeśli jest inna to zapisujesz event.

0

autor napisał że jest możliwość ponownego odwiedzenia tej samej strefy. Problem może być z faktem gdy użytkownik znajduje się na granicy strefy bądź porusza się przy tej granicy- system mógłby wielokrotnie uznawać wjazd do strefy. Aby tego uniknac robisz punkt będący centrum strefy, oraz dwa obszary, jeden o promieniu powiedzmy 500m, drugi o promieniu 800m. W momencie wjazdu w strefe 500 uznajesz odwiedziny, w momencie wyjazdu poza 800 uznajesz opuszczenie strefy

0

Obecnie zrobiłem tak, że system pobiera punkt gdzie znajduje się rower. Wtedy sprawdzamy obecny punkt roweru z punktami z listy i patrzymy czy ma mniej niż 100 metrów. Jeśli ma to dodajemy do bazy razem z datą DATE_IN i ID punktu z tabeli punktów. Następnie znowu sprawdzamy pozycję roweru i czy jakiś punkt jest mniejszy niż 100 metrów. Jeśli jest to sprawdzamy czy taki punkt jest już może w bazie bez wypełnionej daty DATE_OUT. Jeśli tak jest to oznacza, że to ten sam punkt i nie uzupełniamy nic. Natomiast jak dany rower nie znajduje się w żadnym z punktów to sprawdzamy czy dla danego roweru mamy jakiekolwiek punkty bez daty DATE_OUT jeśli tak to uzupełniamy te datę. Ten sposób działa chociaż pewnie nie jest jeszcze dopracowany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1