//使用ol3实现绘制箭头方向和大小
var arrowLayer = null;
//箭头样式
var lineArrowStyle = function (feature, resolution) {
var geometry = feature.getGeometry();
var styles = [
new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#ff0000',
2
})
})
];
geometry.forEachSegment(function (start, end) {
var dx = end[0] - start[0];
var dy = end[1] - start[1];
var rotation = Math.atan2(dy, dx);
// arrows
styles.push(new ol.style.Style({
geometry: new ol.geom.Point(end),
image: new ol.style.Icon({
src: 'arrow_red.png',
anchor: [0.75, 0.5],
rotateWithView: false,
rotation: -rotation
})
}));
});
return styles;
}
//获取X坐标的增量
var getX = function (l, degree) {
var x = l * Math.cos(degree);
return x;
}
//获取Y坐标的增量
var getY = function (l, degree) {
var y = l * Math.sin(degree);
return y;
}
//获取等像素的箭头位置点坐标
var getArrowCoords = function (start, r, pl) {
var x0 = start[0];
var y0 = start[1];
var radian = 2 * 3.14 / 360 * r;//计算需要使用弧度而不是角度
var scale = map.getView.getResolution();
var x1 = x0 +.getX(pl * scale, radian);
var y1 = y0 + getY(pl * scale, radian);
return [x1, y1];
}
var drawLineArraw = function () {
if (!arrowLayer) {
arrowLayer = new ol.layer.Vector({
style: lineArrowStyle
});
arrowLayer.setMap(map);
}
arrowLayer.setSource(null);
var geoSource = new ol.source.Vector({
features: []
});
var geos = [];
var pStart = ol.proj.transform([121.58594, 45.20874], "EPSG:4326", "EPSG:3857");
var d = 360 / 100;
var n = 0;
for (var i = 0; i < 1000000; i += 100000) {
for (var j = 0; j < 1000000; j += 100000) {
var r = d * (n++);
var start = [pStart[0] + i, pStart[1] + j];
var p = Math.round(Math.random() * 50);
var end = getArrowCoords(start, r, p);
var line = new ol.geom.LineString([start, end]);
geos.push(line);
}
}
geoSource.addFeatures(geos);
arrowLayer.setSource(geoSource);
map.getView.on("change:resolution", function (evt) {
drawLineArraw();
}, this);
}
专业从事基于C#,WinForm ,WPF,Silverlight,WCF以及MS Sql Server 2000/2005/2008/2012 Oracle 9i/10g/11g数据库系统的ERP,CRM,企业进销存等各种数据库管理系统开发。Asp.net,Asp.net mvc,Webservice,WCF, Webapi等服务程序开发。
基于Oracle MySQL MSSql postgresql各种数据库的管理系统数据同步服务。以及基于MapXtreme, Arcgis Engine ,以及基于Arcgis for silverlight/Javascript的WebGIS等相关的GIS系统二次开发。基于Windows 10 Mobile的移动端开发方案。针对各种系统的二次开发维护,并提供相关开发的技术性支持,如程序BUG解决,应用系统架构,技术难题攻克等相关技术服务。
联系方式: QQ :80163278(devgis) 邮箱:devgis@qq.com