javascript - 使用arcgis API在esri地图中查找是否在线
问题描述
我正在尝试找出该点是否在线上,如下所示
function identifyFeatures(evt){
var extentGeom = pointToExtent(map,evt.mapPoint,10);
var filteredGraphics = dojo.filter(testLayer.graphics, function(gg) {
if(extentGeom.contains(gg.geometry.getExtent())){
return extentGeom.contains(gg.geometry.getExtent());
} else {
return gg.geometry.getExtent().contains(extentGeom);
}
});
var content = "";
content = "<i>Total Features: " + filteredGraphics.length + "</i>";
map.infoWindow.setContent(content);
map.infoWindow.setTitle("Identify Results");
var anchor = map.getInfoWindowAnchor(evt.screenPoint);
map.infoWindow.show(evt.screenPoint,anchor);
};
我正在使用包含范围的方法并尝试检查单击的点范围是否落在线范围上或线范围是否落在单击的点范围上。但是如果我单击线的中心,那么只有我得到功能。你可以看到代码小提琴
任何人都可以建议我是否有其他方法来检查点是否在线?
解决方案
如果点的范围(用您的extentToPoint()
函数填充)intersects()
与线的几何形状,您应该只过滤图形。
function identifyFeatures(evt){
var extentGeom = pointToExtent(map,evt.mapPoint,10);
var filteredGraphics = dojo.filter(testLayer.graphics, function(gg) {
return extentGeom.intersects(gg.geometry);
});
var content = "<i>Total Features: " + filteredGraphics.length + "</i>";
map.infoWindow.setContent(content);
map.infoWindow.setTitle("Identify Results");
map.infoWindow.show(evt.screenPoint,map.getInfoWindowAnchor(evt.screenPoint));
};
推荐阅读
- android - Android 11 通知抽屉中每个应用的通知限制降至 24 个
- python - How to ensure that TensorFlow saves the average loss across the whole dataset in a training loop written from scratch
- google-cloud-platform - GCP cloudbuild git推送触发器
- android - 我无法让 Flutter 通知图标正常工作
- python - 打开从 .py 文件创建的 exe 文件后是否可以关闭 cmd?
- google-apps-script - GoogleScript - 在 MailApp 中更改“发件人”
- c# - XML 到 SQL 实体框架
- android - CMake库中的公共源文件
- machine-learning - 进行多标签分类的更有效方法?
- python - 导入cv2时,python 3.7,Anaconda 4.9.2出现libgio2.0错误