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
}