FeatureLayer总体上可分为两类,一类是由ArcGIS Server发布的服务构建的FeatureLayer;另一类是由客户端json、graphics等构建的FeatureLayer。
对第一类FeatureLayer进行查询时,通过FeatureLayer.queryFeatures()方法即可完成,详细的查询方式在官网的demo和API里都有。
对第二类FeatureLayer进行查询时,只能通过FeatureLayer在渲染时生成的FeatureLayerView进行查询,而且不是可以对任意属性进行查询的,只能对geometry、spatialRelationship、objectIds进行查询。
获取FeaturelayerView的方法:
view.whenLayerView(villageLayer).then(function(layerView){
featureLayerView=layerView;
});
查询的方式:
var query=new Query();
query.objectIds=[1,2];
query.geometry=graphic.geometry.extent;
query.spatialRelationship = "intersects";
featureLayerView.queryFeatures(query).then(function(results){
console.log(results)
})
其实这里有个很大的坑,就是如果你查询设置错误了,ArcGIS API for JS是不会报错的,只会直接跳过查询后的回调,所以调试起来是很不方便的。