I have a junction feature class A, a feature-linked annotation B and a leader line feature class C. Now, I have implemented a attribute rule on B to auto-create leader line on C but failed. "Failed to create Connection......" is prompted after creating new point.
Below is the code of attribute rule:
var anno_geom = Geometry($feature)
var parent_gid = $feature.FeatureGlobalID
var anno_gid = $feature.GlobalID
if (IsEmpty(parent_gid))
return parent_gid
parent_gid = Upper(parent_gid)
anno_gid = Upper(anno_gid)
var parent_fc = FeatureSetByName($datastore, "A",["GLOBALID","PS"],false)
var line_fc = FeatureSetByName($datastore, "C",["GLOBALID","ANNOGLOBALID","PS"],false)
var parent_rec = Filter(parent_fc, "GLOBALID = @parent_gid")
var line_rec = Filter(line_fc, "ANNOGLOBALID = @anno_gid")
var parent = First(parent_rec)
var parent_geom = Geometry(parent)
if (IsEmpty(parent_geom))
return null
var parent_ps = parent.PS
var parent_ext = Extent(parent_geom)
var anno_ext = Extent(anno_geom)
var endX = anno_ext['xMin']
var endY = anno_ext['yMin']
var startx = parent_ext['xMax']
var starty = parent_ext['yMax']
var maxLength = 1;
console(startx)
console(starty)
var leaderline = Polyline({
paths:[
[
[startX,startY,0],
[endX, endY,0]
]
],
hasZ: true,
"spatialReference": Geometry($feature)["spatialReference"]
})
var att = {
"PS": parent_ps
}
var line = First(line_rec)
if (IsEmpty(line)) {
return {
"result":{
"geometry":anno_geom,
"attributes": att
},
"edit": [{
"className": "C",
"adds": [{
"attributes": {
"AnnoGlobalID": anno_gid,
"PS": parent_ps
},
"geometry": leaderline
}]
}]
}
}
else {
var linegid = line.GlobalID
return {
"result":{
"geometry":anno_geom,
"attributes": att
},
"edit": [{
"className": "C",
"updates": [{
"globalID": linegid,
"attributes": {
"AnnoGlobalID": anno_gid,
"PS": parent_ps
},
"geometry": leaderline
}]
}]
}
}