arcgis api for Flex画贝赛尔曲线

         最近在研究用arcgis api for Flex客户端动态画曲线的问题。虽然花了不少时间,最终等值线还是没有预期效果那样画在地图之上,但还是有不少收获。画等值线过程中,需要利用贝赛尔曲线函数来画平滑曲线。网上找了很多资料,都是在用flash环境中的curveTo()方法来画,但是好像这样画出来的曲线是不能在gis图层中显示的,即只能在flash.display.Graphics下的graphics才能使用这个方法,ags中的graphics是不是使用这个方法的。要么本人还没有找到转换方法,要么就根本不能用在gis图层。在网上找到了一篇关于在ags图层中画军标的文章,从这篇文件中得到启示。

先看效果 :





	
		
	
    
		0&&k pos_y)
						{
							bottom_pos_x=pre_pos_x - ((bb * cos_number) < 0 ? (-bb * cos_number) : (bb * cos_number));
							bottom_pos_y=pre_pos_y - ((bb * sin_number) < 0 ? (-bb * sin_number) : (bb * sin_number));
						}
						else if (pre_pos_x >= pos_x && pre_pos_y >= pos_y)
						{
							bottom_pos_x=pre_pos_x - ((bb * cos_number) < 0 ? (-bb * cos_number) : (bb * cos_number));
							bottom_pos_y=pre_pos_y + ((bb * sin_number) < 0 ? (-bb * sin_number) : (bb * sin_number));
						}
						else if (pre_pos_x >= pos_x && pre_pos_y <= pos_y)
						{
							bottom_pos_x=pre_pos_x + ((bb * cos_number) < 0 ? (-bb * cos_number) : (bb * cos_number));
							bottom_pos_y=pre_pos_y + ((bb * sin_number) < 0 ? (-bb * sin_number) : (bb * sin_number));
						}
						var bottom_point:MapPoint=new MapPoint(bottom_pos_x, bottom_pos_y);
						bottomcurepoints.push(bottom_point);
					}
				}
				var rings:Array=new Array();
				rings.push(bottomcurepoints);
				return rings;
			}
		]]>
	
	
		
			
		
	

这样就可以画出一条平滑的贝赛尔曲线了。这是直接利用贝赛尔曲线公式,而没有利用flash.display.Graphics.curveTo()方法,虽然简单了点,但效果还不错。


你可能感兴趣的:(ArcGIS,API,GIS,Flex,贝赛尔曲线)