android – 识别点是否在多边形中

android – 识别点是否在多边形中,第1张

概述根据我的要求,我在下面的图片中绘制的谷歌地图上绘制多边形(使用地图v2) 现在,当用户输入特定的多边形时,我需要显示警报. 如何识别我的当前位置是否在多边形中. (需要优化的方式,不排出电池) 提前致谢. 刚刚尝试的Ray Casting算法可以识别多边形中的点.这是完美的. 参考http://en.wikipedia.org/wiki/Point_in_polygon论文的射线铸造 privat 根据我的要求,我在下面的图片中绘制的谷歌地图上绘制多边形(使用地图v2)

现在,当用户输入特定的多边形时,我需要显示警报.

如何识别我的当前位置是否在多边形中.
(需要优化的方式,不排出电池)

提前致谢.

解决方法 刚刚尝试的Ray Casting算法可以识别多边形中的点.这是完美的.

参考http://en.wikipedia.org/wiki/Point_in_polygon论文的射线铸造

private boolean isPointInpolygon(LatLng tap,ArrayList<LatLng> vertices) {        int intersectCount = 0;        for (int j = 0; j < vertices.size() - 1; j++) {            if (rayCastIntersect(tap,vertices.get(j),vertices.get(j + 1))) {                intersectCount++;            }        }        return ((intersectCount % 2) == 1); // odd = insIDe,even = outsIDe;    }    private boolean rayCastIntersect(LatLng tap,LatLng vertA,LatLng vertB) {        double aY = vertA.latitude;        double bY = vertB.latitude;        double aX = vertA.longitude;        double bX = vertB.longitude;        double pY = tap.latitude;        double pX = tap.longitude;        if ((aY > pY && bY > pY) || (aY < pY && bY < pY)                || (aX < pX && bX < pX)) {            return false; // a and b can't both be above or below pt.y,and a or                            // b must be east of pt.x        }        double m = (aY - bY) / (aX - bX); // Rise over run        double bee = (-aX) * m + aY; // y = mx + b        double x = (pY - bee) / m; // algebra is neat!        return x > pX;    }
总结

以上是内存溢出为你收集整理的android – 识别点是否在多边形中全部内容,希望文章能够帮你解决android – 识别点是否在多边形中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1131231.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存