1

Donc, je charge des fichiers KML sur ma carte google, ils sont affichés en tant que polygones convexes sur la carte.
J'ai aussi l'emplacement de l'utilisateur, fondamentalement je veux savoir si l'utilisateur est situé sur l'un des bords du polygone (qui est un polygone convexe).
et parce que les services de localisation ne sont pas précis à 100%, si l'emplacement est proche (le bord est 15m) - c'est bon :)Vérifiez si Point est situé sur (ou à proximité) d'un contour de polygone convexe

Ma solution est de trouver la fonction y = f (x) qui passe entre 2 sommets, puis vérifiez si l'emplacement de l'utilisateur est inférieur à f (x) + a et au-dessus de f (x) -a. J'ai l'impression qu'il me manque quelque chose et il devrait y avoir une meilleure façon (et plus précise) de résoudre mon problème ou même peut-être une bibliothèque Java pour Android qui s'attaque déjà à cela.

Merci :)

Répondre

0

Vous devez implémenter une fonction qui détermine la distance d'un point à un segment de ligne. Pour ce faire, vous pouvez trouver du code partout sur le Web, par exemple ici: "Shortest distance between a point and a line segment". Parcourez ensuite chaque segment du polygone. Cela fonctionne même si le polygone est non convexe.

Vous pouvez réellement obtenir une meilleure complexité temporelle pour les polygones convexes, mais cela ne vaudrait probablement pas la peine.