Oto sytuacja:Sprawdź, czy użytkownik znajduje się w pobliżu punktu kontrolnego trasy z GPS
Mam wcześniej ustaloną trasę GPS, którą uruchomi użytkownik. Trasa ma kilka punktów kontrolnych, a użytkownik powinien przejść obok nich (uważać je za punkt kontrolny gry wyścigowej, który uniemożliwia użytkownikowi wykonywanie skrótów). Muszę upewnić się, że użytkownik przechodzi przez wszystkie punkty kontrolne. Chcę określić obszar, który będzie rozpatrywany w promieniu punktu kontrolnego, ale nie chcę, aby był to tylko obszar promieniowy, powinien to być obszar uwzględniający formę ścieżki. Nie rozumiem tego? Ani I. Spójrz na to źle przygotowanego obrazu, aby go lepiej zrozumieć:
czarnej linii reprezentuje zadanego toru, niebieska kula jest checkpoint i niebieski wielokąt jest obszar chcieliśmy. Zielona linia jest bardziej precyzyjnym użytkownikiem, a czerwona linia jest mniej dokładnym użytkownikiem (pijany facet, który może jeździć? Lol). Obie linie powinny znajdować się wewnątrz wielokąta, ale użytkownik, który pominął całkowicie trasę, nie powinien.
Już widziałem gdzieś tutaj funkcję do sprawdzenia, czy użytkownik znajduje się w takim wieloboku, ale muszę wiedzieć, jak obliczyć wielokąt.
Wszelkie sugestie?
EDIT:
Zastanawiam przy użyciu funkcji prosty distanceTo(), aby tylko zwrócić wyimaginowany koło i sprawdzić, czy użytkownik ma. To jest dobre, ponieważ jest tak proste w implementacji i zrozumieniu, i złe, ponieważ aby upewnić się, że najbardziej eratyczny użytkownik przejdzie w punkcie kontrolnym, potrzebowałbym dużego promienia, dzięki czemu właściwy użytkownik wejdzie do obszaru kontrolnego szybciej niż oczekiwano.
Tak, aby lepiej zrozumieć sytuację, dotyczy to aplikacji, która ma być używana w ruchu drogowym (samochód lub autobus), a punkty kontrolne powinny być punktami orientacyjnymi lub miejscami, które dzielą trasę, na przykład gdzieś. w którym zaczyna się lub zatrzymuje korki.
Dlaczego potrzebujesz wielokąta zamiast używać wewnętrznego koła? – SERPRO