基于ArcGIS Flex API实现动态标绘(1.2)
动态标绘API 1.2,相较前一版本号(点击进入),该版本号新增对基本标绘符号的支持,包含:
单点、多点、折线、手绘线、多边形、手绘多边形、矩形,并提供对应的编辑功能。
例如以下图所看到的,对多点的编辑。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR0lTcGFjZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" width="550" height="350">
下图。用单点表示坦克,多点表示战斗机群。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR0lTcGFjZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" width="550" height="350">
实例代码例如以下:
private var plotDrawTool:PlotDrawTool;
private var plotEditTool:PlotEditTool; private var outline:SimpleLineSymbol = new SimpleLineSymbol("solid", 0xff0000, 1, 1);
private var markerOutline:SimpleLineSymbol = new SimpleLineSymbol("dash", 0x000000, 1, 2);
private var tank:PictureMarkerSymbol = new PictureMarkerSymbol("assets/tank.png");
private var plane:PictureMarkerSymbol = new PictureMarkerSymbol("assets/plane.png");
private var markerSymbol:SimpleMarkerSymbol = new SimpleMarkerSymbol("circle", 25, 0xff0000, 1, 0, 0, 0, markerOutline);
private var multiMarkerSymbol:SimpleMarkerSymbol = new SimpleMarkerSymbol("circle", 25, 0x00ff00, 1, 0, 0, 0, markerOutline);
private var lineSymbol:SimpleLineSymbol = new SimpleLineSymbol("dash", 0x0000ff, 1, 2);
private var fillSymbol:SimpleFillSymbol = new SimpleFillSymbol("solid", 0x00ff00, 0.5, outline); private static const STATE_MOVE_SCALE_ROTATE:int = 0;
private static const STATE_EDIT_CONTROL_POINTS:int = 1; private var editState:int = 0;
private var activePlot:Graphic; private function init():void{
// 实例化绘制工具
this.plotDrawTool = new PlotDrawTool(map);
// 监听 DRAW_END事件,绘制结束后可获得plot
this.plotDrawTool.addEventListener(PlotDrawEvent.DRAW_END, drawEndHandler);
// 实例化编辑工具
this.plotEditTool = new PlotEditTool(map);
} private function drawEndHandler(event:PlotDrawEvent):void{
// 对plot设置渲染符号
var geometry:Geometry = event.plotGraphic.geometry;
if(geometry is Polygon)
event.plotGraphic.symbol = fillSymbol;
else if(geometry is Polyline)
event.plotGraphic.symbol = lineSymbol;
else if(geometry is MapPoint)
event.plotGraphic.symbol = tank;
else if(geometry is Multipoint)
event.plotGraphic.symbol = plane;
// 显示
this.graphicsLayer.add(event.plotGraphic);
// 设置鼠标单击事件响应
event.plotGraphic.addEventListener(MouseEvent.CLICK, graphicClickHandler);
} private function graphicClickHandler(event:MouseEvent):void{
var graphic:Graphic = event.currentTarget as Graphic;
if(graphic == this.activePlot){
if(this.editState == STATE_MOVE_SCALE_ROTATE){
// 开启 移动+编辑控制点 状态
this.plotEditTool.activate(PlotEditTool.MOVE|PlotEditTool.EDIT_CONTROL_POINTS, graphic);
this.editState = STATE_EDIT_CONTROL_POINTS;
}
else{
// 开启 移动+旋转缩放 状态
this.plotEditTool.activate(PlotEditTool.MOVE|PlotEditTool.SCALE_ROTATE, graphic);
this.editState = STATE_MOVE_SCALE_ROTATE;
}
}
else{
this.activePlot = graphic;
this.plotEditTool.activate(PlotEditTool.MOVE|PlotEditTool.EDIT_CONTROL_POINTS, graphic);
this.editState = STATE_EDIT_CONTROL_POINTS;
}
}
演示样例代码下载地址 点击下载
欢迎大家使用、反馈意见。
QQ:21587252 email:gispace@yeah.net
您也能够增加 动态标绘讨论 QQ群 318659439 ,一起讨论详细需求和实现。
基于ArcGIS Flex API实现动态标绘(1.2)的更多相关文章
- 基于ArcGIS Flex API实现动态标绘(1.0)
标绘作为一种数据展示形式,在多个行业都有需求. 基于ArcGIS Flex API(3.6)实现标绘API,当前版本号1.0 alpha,支持经常使用几种标绘符号,包含: 圆弧.曲线.圆形.椭圆.弓形 ...
- 基于ArcGIS Flex API实现动态标绘(1.1)
动态标绘API 1.1版本号.相较前一版本号1.0(点击进入).该版本号提供标绘符号的编辑功能. 编辑功能包含两种编辑状态:编辑控制点.对标绘符号进行旋转.八方向拉伸.平移. 编辑控制点例如以下图所看 ...
- ArcGIS API for Silverlight动态标绘的实现
原文:ArcGIS API for Silverlight动态标绘的实现 1.下载2个dll文件,分别是: ArcGISPlotSilverlightAPI.dll 和 Matrix.dll 其下载地 ...
- 动态标绘演示系统1.4.3(for ArcGIS Flex)
标绘有API文档啦! 在线浏览 ------------------------------------------------------------------------------------ ...
- 动态标绘演示系统1.0(for OpenLayers3)
实现OpenLayers3(http://openlayers.org)版本号的动态标绘API.眼下1.0版本号,仅支持简单符号绘制. 在线体验地址:http://gispace.duapp.com/ ...
- 基于ArcGIS JS API的在线专题地图实现
0 引言 专题地图是突出而深入的表示一种或几种要素或现象,即按照地图主题的要求,集中表示与主题有关内容的地图.专题地图的专题要素多种多样,分类方法也多种多样,根据专题地图表现数据的特点可分为定 ...
- 基于 ArcGIS Silverlight API开发的WebGIS应用程序的部署
部署流程概述 在微软的iis服务器上部署基于ArcGIS Silverlight API的应用程序,主要包括以下几个步骤: 1)(可选)部署GIS服务 如果需要将GIS服务也部署在Web服务器上,则 ...
- ArcGIS Flex API加载大量数据
1.关于大量数据的加载: 直接将所要展示的数据在服务器端发布成一个MapService,在客户端通过ArcGISDynamicMapServiceLayer来加载.这样的话客户端需要展示的仅仅是一张图 ...
- ARCGIS FLEX API加载google地图、百度地图、天地图(转)
http://www.cnblogs.com/chenyuming507950417/ Flex加载google地图.百度地图以及天地图作底图 一 Flex加载Google地图作底图 (1)帮助类G ...
随机推荐
- swift语言点评六-Numbers and Basic Values
Topics Logical Values struct Bool A value type whose instances are either true or false. Numeric Val ...
- 异步调用task
异步主要用来提升程序性能,会增加系统的开销(新建一个线程去执行异步任务). 可应用于耗时长的操作,比如:访问数据库时(应用程序和数据库不在同一台服务器上).服务之间的调用(服务会分散在不同的服务器上) ...
- CSDN 轻松周赛赛题:能否被8整除
轻松周赛赛题:能否被8整除 题目详情 给定一个非负整数,问能否重排它的全部数字,使得重排后的数能被8整除. 输入格式: 多组数据,每组数据是一个非负整数.非负整数的位数不超过10000位. 输出格式 ...
- 个人创业了,做了个网站和App,www.91tianwu.com
大家好! 很久没有写文章了,响应党和政府号召,创业了.此文为了推广我的网站而写,希望有兴趣的看看. 我做了添物网,地址:http://www.91tianwu.com. 主要做购物导航推荐,目前集中在 ...
- JAVA关于byte数组与String转换的问题
1 public class ToString{ public static void main(String[] args){ String aa = "hellow"; byt ...
- 洛谷—— P2701 [USACO5.3]巨大的牛棚Big Barn
https://www.luogu.org/problem/show?pid=2701 题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的 ...
- 在Windows上面安装多个Memcached
在Windows上面安装多个Memcached sc create "memcached Server3" start= auto binPath= "D:\memcac ...
- STM32中assert_param的使用
在STM32的固件库和提供的例程中.到处都能够见到assert_param()的使用. 假设打开不论什么一个例程中的stm32f10x_conf.h文件,就能够看到实际上assert_param是一个 ...
- Dubbo分布式服务框架入门(附project)
要想了解Dubbo是什么,我们不防先了解它有什么用. 使用场景:比方我想开发一个网上商城项目.这个网上商城呢,比較复杂.分为pc端web管理后台.微信端销售公众号,那么我们分成四个项目,pc端站点,微 ...
- nyoj-673-悟空的难题(数组标记)
悟空的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 自从悟空当上了齐天大圣.花果山上的猴子猴孙们便也能够尝到天上的各种仙果神酒,所以猴子猴孙们的体质也得到了非 ...