Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多边形中的点_Java_Android_Google Maps_Point In Polygon - Fatal编程技术网

Java 多边形中的点

Java 多边形中的点,java,android,google-maps,point-in-polygon,Java,Android,Google Maps,Point In Polygon,我正在开发一个android应用程序。在应用程序中,我将地图与多边形集成在一起。现在我想检查给定的标记是否在多边形内。请帮帮我 以下函数用于检查多边形中的横向长度 pnpoly(顶点、纬度、液化天然气(浮点数)(点纬度)、(浮点数)(点经度))的编号 boolean pnpoly(int-nvert,float-vertx[],float-verty[],float-testx,float-testy) { int i,j; 布尔c=假; 对于(i=0,j=nvert-1;itesty)!=(v

我正在开发一个android应用程序。在应用程序中,我将地图与多边形集成在一起。现在我想检查给定的标记是否在多边形内。请帮帮我

以下函数用于检查多边形中的横向长度

pnpoly(顶点、纬度、液化天然气(浮点数)(点纬度)、(浮点数)(点经度))的编号

boolean pnpoly(int-nvert,float-vertx[],float-verty[],float-testx,float-testy)
{
int i,j;
布尔c=假;
对于(i=0,j=nvert-1;itesty)!=(verty[j]>testy))&&
(testx<(vertx[j]-vertx[i])*(testy-verty[i])/(verty[j]-verty[i])+vertx[i]))
c=正确;
}
返回c;
}
我得到了我问题的答案,下面是代码

**private boolean isPointInPolygon(LatLng tap, ArrayList<LatLng> vertices) {
        int intersectCount = 0;
        for(int j=0; j<vertices.size()-1; j++) {
            if( LineIntersect(tap, vertices.get(j), vertices.get(j+1)) ) {
                intersectCount++;
            }
        }
        return (intersectCount%2) == 1; // odd = inside, even = outside;
    }
    private boolean LineIntersect(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; }
        double m = (aY-bY) / (aX-bX);               
        double bee = (-aX) * m + aY;                // y = mx + b
        double x = (pY - bee) / m;                 
        return x > pX;
    }**
**私有布尔isPointInPolygon(LatLng tap、ArrayList顶点){
int int intersectCount=0;

对于(int j=0;日元和日元>日元)|(A请提供更多详细信息,以及您尝试过的内容。此外,在StackOverflow上有许多类似的问题和答案。您是否查看了这些问题的解决方案?是的,我已检查了所有解决方案。感谢您的回复,我正在输入我的代码以及可能的副本,或者您可以查看此库谢谢大家…………但我得到了解决方案,而且它工作得很好。。。。。。。。。。。
**private boolean isPointInPolygon(LatLng tap, ArrayList<LatLng> vertices) {
        int intersectCount = 0;
        for(int j=0; j<vertices.size()-1; j++) {
            if( LineIntersect(tap, vertices.get(j), vertices.get(j+1)) ) {
                intersectCount++;
            }
        }
        return (intersectCount%2) == 1; // odd = inside, even = outside;
    }
    private boolean LineIntersect(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; }
        double m = (aY-bY) / (aX-bX);               
        double bee = (-aX) * m + aY;                // y = mx + b
        double x = (pY - bee) / m;                 
        return x > pX;
    }**