1

因此,我正在將KML文件加載到我的谷歌地圖,它們在地圖上顯示爲凸多邊形。
我也有用戶的位置,基本上我想知道,如果用戶位於多邊形的邊緣之一(這是一個凸多邊形)。
因爲位置服務不是100%準確的,如果位置很近(邊緣是15米遠) - 這很好:)檢查點是否位於(或靠近)凸多邊形邊緣

我的解決方案是找到函數y = f(x) 2個頂點,然後檢查用戶位置是否低於f(x)+ a且高於f(x)-a。

我覺得我錯過了一些東西,應該有更好(更準確)的方式來解決我的問題,甚至可能是一個已經解決這個問題的Android的Java庫。

謝謝:)

回答

0

您應該執行決定一個線段從一個點的距離的函數。您可以在網絡上找到代碼,例如:「Shortest distance between a point and a line segment」。 然後遍歷多邊形的每個片段。即使多邊形不是凸面,它也可以工作。

實際上,您可以爲凸多邊形實現更好的時間複雜度,但這可能不值得實施。

相關問題