在进行地图开发过程中,经常遇到有一个面状的范围和一个点集,我们需要把点集中在或者不在这个范围内部的点给找出来,通过努力我寻找到了一种方法,下面进行介绍。
1.首先介绍一下Array.prototype
属性表示 Array
构造函数的原型,并允许向所有Array对象添加新的属性和方法,而我们在这里构建一个新的方法。
Array.prototype.pip = function(x, y) {
var i, j, c = false;
for(i=0,j=this.length-1;i<this.length;j=i++) {
if( ((this[i][1]>y) != (this[j][1]>y)) &&
(x<(this[j][0]-this[i][0]) * (y-this[i][1]) / (this[j][1]-this[i][1]) + this[i][0]) ) {
c = !c;
}
}
return c;
}
2.进行方法的调用,其思路就是讲每个想要进行比较的点的坐标作为上述方法中x,y参数传递过去,调用很简单
//dddArray是一个由面状区域得到的二维的边界数组
if(dddArray.pip(longitude, latitude)){
//在这里可以做点什么,具体看你的需求
}