实验准备:
1.一个多边形图层(可以是FeatureLayer、GraphicLayer或任意包含polygon的Graphic[])
2.一个点图层(同上,包含的geomery类型应为point)
实验目的:判断多边形图层中,每一个多边形中包含多少个点图层中的点
实现步骤及思路:
1.将多边形图层中的每个多边形graphic对象遍历
dojo.forEach(featureLayer.graphics, function (graphic){
...
}
2.提取graphic对象中的geometry对象
var polygon = graphic.geometry;
3.再遍历每一个点graphic并提取点geometry(同上)
4.判断点在多边形内(单个点单个多边形判断)
if (polygon.contains(point)){
...
}
具体代码
var featureLayer=new FeatureLayer(url);//多边形图层
var featureSet=new FeatureSet();//用于承接点的graphic对象
var a=[];//用来记录对应id的多边形内点的个数,应先将a[]初始化再使用
dojo.forEach(featureLayer.graphics, function (graphic) {//循环遍历每一个多边形graphic对象
var polygon = graphic.geometry;//polygon为geometry对象,用来提取出graphic对象中的geometry对象
dojo.forEach(featureSet.features, function (feature) {//再遍历循环每一个点graphic对象
var point = feature.geometry;//point对象
if (polygon.contains(point)) {//判断点是否在多边形内,返回值为Boolean
a[graphic.attributes.FID]++;//用于记录对应fid的多边形内有多少个点
}
});