1

Also lade ich KML-Dateien in meine Google Map, sie werden als konvexe Polygone auf der Karte angezeigt.
Ich habe auch die Benutzerposition, im Grunde möchte ich wissen, ob der Benutzer an einer der Kanten des Polygons (das ist ein konvexes Polygon) befindet.
und weil die Ortungsdienste nicht zu 100% korrekt sind, wenn die Lage in der Nähe ist (der Rand ist 15m) - das ist gut :)Überprüfen Sie, ob der Punkt auf (oder in der Nähe von) konvexen Polygonkanten liegt.

Meine Lösung ist die Funktion y = f (x), die vergeht zwischen dem, 2 Scheitelpunkte, dann prüfen, ob der Benutzerstandort unter f (x) + a und über f (x) -a liegt.

Ich fühle mich wie ich etwas vermisse und es sollte eine bessere (und genauere) Möglichkeit, mein Problem zu lösen oder sogar eine Java-Bibliothek für Android, die bereits angehen.

Thanks :)

Antwort

0

Sie sollten eine Funktion implementieren, die den Abstand von einem Punkt zu einem Liniensegment bestimmt. Sie können Code überall im Netz dafür finden, z. B. hier: "Shortest distance between a point and a line segment." Dann über jedes Segment des Polygons iterieren. Dies funktioniert auch, wenn das Polygon nichtkonvex ist.

Sie können tatsächlich eine bessere Zeitkomplexität für konvexe Polygone erreichen, aber wahrscheinlich wäre das die Implementierung nicht wert.

Verwandte Themen