我有一个应用程序,用户可以在地图上绘制一个形状来指示潜在的土地利用,他们还可以绘制一个形状来指示“无变化”区域,我们希望在该区域中指示没有开发计划。
基本上,他们可以创建一个形状来指示一个工业区,然后他们可以绘制一个重叠的形状来基本上切掉那个工业区,并将该区指定为非开发区。
这是我的代码:
function cutOutNoChangeZone () {
var geometries = land_use_planning.graphics,
geometries_to_be_cut,
geoService = new esri.tasks.GeometryService("http://gis.website.com/ArcGIS/rest/services/Geometry/GeometryServer");
for (var i = 0, len = geometries.length; i < len; i++) {
var geometry = geometries[i];
if (geometry.planning_type === 'no_change') {
// cut ALL polygons that are under the no change zone
geometries_to_be_cut = geometries.slice(0, i);
// NEXT LINE THROWS ERROR
geoService.cut(geometries_to_be_cut, geometry);
}
}
}
它在控制台中引发错误:
TypeError:无法读取未定义的属性“toJson”
它来自init.js
js.arcgis.com 服务器上缩小的 ArcGIS 3.9 文件。我已经使用toJson
方法调试了 for 循环以检查几何是否是有效的几何。我试图按照这个 esri 论坛上的示例进行操作,它显示了类似的功能:https ://geonet.esri.com/thread/63777 。
另请注意,我仅在两种形状上进行测试:一种是工业形状,另一种是重叠的“不变”。 geometries_to_be_cut
是单个几何体的数组,并且geometry
是“不变”几何体。
看起来这应该是一个简单的功能。我不确定我哪里出错了,并认为有人可能对此有所了解。