PointlnPolygon函数不处理JSON数组中的多个对象 var polyLat=new Array(); polyLat[0]=10.194027; polyLat[1]=10.200000; polyLat[2]=10.200000; polyLat[3]=10.226975; polyLat[4]=10.243501; polyLat[5]=10.254458; polyLat[6]=10.304448; polyLat[7]=10.269654; polyLat[8]=10.161533; polyLat[9]=10.059987; polyLat[10]=10.002248; polyLat[11]=9.920747; polyLat[12]=9.885241; polyLat[13]=9.854925; polyLat[14]=9.853784; polyLat[15]=9.835443; polyLat[16]=9.899107; polyLat[17]=9.948692; polyLat[18]=9.993088; polyLat[19]=10.029430; polyLat[20]=10.046396; polyLat[21]=10.063923; polyLat[22]=10.081425; polyLat[23]=10.072854; polyLat[24]=9.992266; polyLat[25]=9.972824; polyLat[26]=10.010875; polyLat[27]=10.141595; polyLat[28]=10.194027//重复第一个点以闭合多边形 变量polySides=(polyLat.length)-1//多边形中的点数 //多边形的垂直经度坐标 var polyLng=新数组(); polyLng[0]=76.201205; polyLng[1]=76.266667; polyLng[2]=76.316667; polyLng[3]=76.375022; polyLng[4]=76.394118; polyLng[5]=76.401347; polyLng[6]=76.626291; polyLng[7]=76.687660; polyLng[8]=76.767483; polyLng[9]=76.775730; polyLng[10]=76.778940; polyLng[11]=76.681244; polyLng[12]=76.631163; polyLng[13]=76.584336; polyLng[14]=76.493901; polyLng[15]=76.411473; polyLng[16]=76.368070; polyLng[17]=76.379645; polyLng[18]=76.397007; polyLng[19]=76.385622; polyLng[20]=76.365176; polyLng[21]=76.362383; polyLng[22]=76.317492; polyLng[23]=76.281544; polyLng[24]=76.267905; polyLng[25]=76.244195; polyLng[26]=76.215773; polyLng[27]=76.178283; polyLng[28]=76.201205//重复第一个点以闭合多边形 //边界框坐标 var maxLat=Math.max.apply(null,polyLat); var minLat=Math.min.apply(null,polyLat); var maxLng=Math.max.apply(null,polyLng); var minLng=Math.min.apply(null,polyLng); setInterval(函数(){ob();},10000); 函数ob() { $.post('outboundupd.jsp', { mx_lat:maxLat, MNU lat:minLat, mx_液化天然气:最大液化天然气, mn_lng:minLng, ply_-sds:聚脂 }, 功能(响应、状态、xhr) { 绘图数据(响应); }); } 函数plotdata(响应) { var-k; var x; 变量y; var-mob; var jsonArray=JSON.parse(response.trim()); var oblen=jsonArray.length; var-obj; 对于(k=0;k

PointlnPolygon函数不处理JSON数组中的多个对象 var polyLat=new Array(); polyLat[0]=10.194027; polyLat[1]=10.200000; polyLat[2]=10.200000; polyLat[3]=10.226975; polyLat[4]=10.243501; polyLat[5]=10.254458; polyLat[6]=10.304448; polyLat[7]=10.269654; polyLat[8]=10.161533; polyLat[9]=10.059987; polyLat[10]=10.002248; polyLat[11]=9.920747; polyLat[12]=9.885241; polyLat[13]=9.854925; polyLat[14]=9.853784; polyLat[15]=9.835443; polyLat[16]=9.899107; polyLat[17]=9.948692; polyLat[18]=9.993088; polyLat[19]=10.029430; polyLat[20]=10.046396; polyLat[21]=10.063923; polyLat[22]=10.081425; polyLat[23]=10.072854; polyLat[24]=9.992266; polyLat[25]=9.972824; polyLat[26]=10.010875; polyLat[27]=10.141595; polyLat[28]=10.194027//重复第一个点以闭合多边形 变量polySides=(polyLat.length)-1//多边形中的点数 //多边形的垂直经度坐标 var polyLng=新数组(); polyLng[0]=76.201205; polyLng[1]=76.266667; polyLng[2]=76.316667; polyLng[3]=76.375022; polyLng[4]=76.394118; polyLng[5]=76.401347; polyLng[6]=76.626291; polyLng[7]=76.687660; polyLng[8]=76.767483; polyLng[9]=76.775730; polyLng[10]=76.778940; polyLng[11]=76.681244; polyLng[12]=76.631163; polyLng[13]=76.584336; polyLng[14]=76.493901; polyLng[15]=76.411473; polyLng[16]=76.368070; polyLng[17]=76.379645; polyLng[18]=76.397007; polyLng[19]=76.385622; polyLng[20]=76.365176; polyLng[21]=76.362383; polyLng[22]=76.317492; polyLng[23]=76.281544; polyLng[24]=76.267905; polyLng[25]=76.244195; polyLng[26]=76.215773; polyLng[27]=76.178283; polyLng[28]=76.201205//重复第一个点以闭合多边形 //边界框坐标 var maxLat=Math.max.apply(null,polyLat); var minLat=Math.min.apply(null,polyLat); var maxLng=Math.max.apply(null,polyLng); var minLng=Math.min.apply(null,polyLng); setInterval(函数(){ob();},10000); 函数ob() { $.post('outboundupd.jsp', { mx_lat:maxLat, MNU lat:minLat, mx_液化天然气:最大液化天然气, mn_lng:minLng, ply_-sds:聚脂 }, 功能(响应、状态、xhr) { 绘图数据(响应); }); } 函数plotdata(响应) { var-k; var x; 变量y; var-mob; var jsonArray=JSON.parse(response.trim()); var oblen=jsonArray.length; var-obj; 对于(k=0;k,json,math,for-loop,google-maps-api-3,geometry,Json,Math,For Loop,Google Maps Api 3,Geometry,您需要在for()循环中使用pointInPolygon()。它只检查JSON数组的最后一个值 var polyLat = new Array(); polyLat[0]=10.194027; polyLat[1]=10.200000; polyLat[2]=10.200000; polyLat[3]=10.226975; polyLat[4]=10.243501; polyLat[5]=10.254458; polyLat[6]=10.304448; polyLat[7]=10.269654;

您需要在
for()
循环中使用
pointInPolygon()
。它只检查JSON数组的最后一个值

var polyLat = new Array();
polyLat[0]=10.194027;
polyLat[1]=10.200000;
polyLat[2]=10.200000;
polyLat[3]=10.226975;
polyLat[4]=10.243501;
polyLat[5]=10.254458;
polyLat[6]=10.304448;
polyLat[7]=10.269654;
polyLat[8]=10.161533;
polyLat[9]=10.059987;
polyLat[10]=10.002248;
polyLat[11]=9.920747;
polyLat[12]=9.885241;
polyLat[13]=9.854925;
polyLat[14]=9.853784;
polyLat[15]=9.835443;
polyLat[16]=9.899107;
polyLat[17]=9.948692;
polyLat[18]=9.993088;
polyLat[19]=10.029430;
polyLat[20]=10.046396;
polyLat[21]=10.063923;
polyLat[22]=10.081425;
polyLat[23]=10.072854;
polyLat[24]=9.992266; 
polyLat[25]=9.972824;
polyLat[26]=10.010875;
polyLat[27]=10.141595;
polyLat[28]=10.194027;//First point repeated to close polygon
var polySides = (polyLat.length)-1;//number of points in polygon
//vertical Longitude coordinates of polygon 
var polyLng =  new Array();
polyLng[0] =76.201205;
polyLng[1] =76.266667;
polyLng[2] =76.316667;
polyLng[3] =76.375022;
polyLng[4] =76.394118;
polyLng[5] =76.401347;
polyLng[6] =76.626291;
polyLng[7] =76.687660;
polyLng[8] =76.767483;
polyLng[9] =76.775730;
polyLng[10] =76.778940;
polyLng[11] =76.681244;
polyLng[12] =76.631163;
polyLng[13] =76.584336;
polyLng[14] =76.493901;
polyLng[15] =76.411473;
polyLng[16] =76.368070;
polyLng[17] =76.379645;
polyLng[18] =76.397007; 
polyLng[19] =76.385622;
polyLng[20] =76.365176;
polyLng[21] =76.362383;
polyLng[22] =76.317492;
polyLng[23] =76.281544;
polyLng[24] =76.267905;
polyLng[25] =76.244195;
polyLng[26] =76.215773;
polyLng[27] =76.178283; 
polyLng[28] =76.201205;//First point repeated to close polygon
//Coordinates for bounding box
var maxLat = Math.max.apply(null,polyLat);  
var minLat = Math.min.apply(null,polyLat);
var maxLng = Math.max.apply(null,polyLng);
var minLng = Math.min.apply(null,polyLng);


setInterval(function(){ob();},10000);

function ob()

{

$.post('outboundupd.jsp',
        {
    mx_lat:maxLat,
    mn_lat:minLat,
    mx_lng:maxLng,
    mn_lng:minLng,
    ply_sds:polySides
        },
        function(response,status,xhr)
        {

            plotdata(response);

});

}
    function plotdata(response)
    {
        var k;
        var x;
        var y;
        var mob;
        var jsonArray=JSON.parse(response.trim());
        var oblen= jsonArray.length; 
        var obj;
        for(k=0;k<oblen;k++)
        {
            obj=jsonArray[k];
            pcode= obj.Pcode;
            nplate= obj.N_plate;
            driver= obj.Driver;
            mob= obj.MobileNu;
            x= obj.Latitude;
            y= obj.Longitude;
            time= obj.Time;
            console.log(obj);
        }



        var j = polySides-1 ;
          oddNodes = 0;
          for (i=0; i<polySides; i++) {
            if (polyLng[i]<y && polyLng[j]>=y  ||  polyLng[j]<y && polyLng[i]>=y) {
                if (polyLat[i]+(y-polyLng[i])/(polyLng[j]-polyLng[i])*(polyLat[j]-polyLat[i])<x)  {
                    oddNodes=!oddNodes; 
                }
            }
           j=i; }




            if(oddNodes!=true)
            {

                $.post('obsouth.jsp',
                        {

                    pcd:pcode,
                    npt:nplate,
                    drv:driver,
                    mobl:mob,
                    lat:x,
                    lon:y,
                    tm:time

                        },
                        function(response,status,xhr)
                        {
                            response.trim();


                });

            }

          return oddNodes;

    }

用于(k=0;kAny不使用几何体库的特殊原因?我也尝试过这种方法,但当PointLnPolgon在for循环外检查最后一个值时,它给出了第一个值。你能帮我编写代码吗?我真的受够了。我明白了。我把return语句放错了forloop内。而问题现在已解决。再次感谢您,因为这是您的代码:)
for(k=0;k<oblen;k++)
    {
        obj=jsonArray[k];
        pcode= obj.Pcode;
        nplate= obj.N_plate;
        driver= obj.Driver;
        mob= obj.MobileNu;
        x= obj.Latitude;
        y= obj.Longitude;
        time= obj.Time;
        console.log(obj);
        //pointInPolygon  HERE
    }