Forget cartographic lines. Here's what I use. Seems to work really well. The great thing is that since it's a text symbol, you can angle it.
//text symbol//
var arrow = function(pt1,pt2){
return new esri.symbol.TextSymbol({
text : "�?�",
angle: setAngle(pt1, pt2),
type: "esriTS",
color: new dojo.Color([0,0,255,0.5]),
font: {
size: 13,
style: 'normal',
type: 'font',
variant: "normal",
weight: "normal",
family: "Lucida Grande Console"
}
});
};
//grab points//
//loop over the points on your line//
for(var x in "[linename]".geometry.paths[0]){
var pt1 = "[linename]".geometry.paths[0];
var pt2 = "[linename]".geometry.paths[0][x-1];
var point = new esri.geometry.Point(pt1);
var arrowGraphic = new esri.Graphic(point, arrow(pt1,pt2));
//angle function//
var setAngle = function (p1, p2){
var rise = p2[1] - p1[1];
var run = p2[0] - p1[0];
var angle = ((180/Math.PI) * Math.atan2(run, rise))
return angle-180;
}
Hope this helps.