如图所示
箭头方向代表海流方向,箭头大小代表流速大小。其中海流方向以正北方向为0度,顺时针起算。但如果是风场就不一样。风的方向与我们的普遍认知刚好相反,箭头指向来风的方向。想想也有道理,我们常说喝西北风,是吹向西北方向的风还是从大西北刮过来的风?当然是从大西北过来的啊。每当我们肚子饿得受不了的时候,就可以跑到外面,迎着西北方向张大嘴巴可矣。有分教:
言归正传,本文例子,根据雷达测量的海流数据绘制,数据包括经纬度、流向、流速4个数值。
绘制思路:
1、用SimpleMarkerSymbol 结合 svg path 绘制箭头
2、根据海流流向旋转箭头
3、根据海流流速设置箭头大小
其中,
1、用SimpleMarkerSymbol 结合 svg path 绘制箭头
var _sr4326 = new SpatialReference({wkid: 4326 });
var _cbg = new Color([255, 255, 255, 0.0]);
var _cbd = new Color([0, 0, 0, 1]);
function arrow(target){var d = getDirection(target.deg);var s = getSize(target.speed);var symbol = new SimpleMarkerSymbol({"style": "esriSMSPath","color": _cbg,"angle": d, "size": s,"path": "M 10 40 l 23 -40 l 0 100 m 0 -100 l 23 40 z","outline": {style: "esriSLSSolid",color: _cbd,width: 2}});var point = new Point(target.lng, target.lat,_sr4326);var g = new Graphic(point, symbol);setTip(target,g);return g;
}
function setTip(t,g){var st = "";for (var a in t) {g.attr(a, t[a]);st += a + ": " + t[a] + "
";}g.infoTemplate = new InfoTemplate("信息", st);
}
2、根据海流流向旋转箭头
function getDirection(direction){
return (isNaN(direction) == true) ? 0 : direction * -1;
}
3、根据海流流速设置箭头大小
function getSize(speed){var level = Math.ceil(speed * 10);return level * 2 + 4;
}
参考文章:
制作风或水流速流向图
arcgis for js 3.X利用symbol设置svgpath绘制符号