• 1. 2018/10/19WEB GIS开发实践
  • 2. 2018/10/19目录RIA介绍1ArcGIS Server的REST接口2MapServiceLayer3Geometry5GraphicLayer与Graphic4Symbol6地图功能组件7
  • 3. 2018/10/19RIA介绍RIA相比传统Web的优势 RIA的局限性 目前主流RIA技术及特点
  • 4. 2018/10/19RIA相比传统Web的优势表现力丰富 网络效率高 交互能力强 面向操作系统和浏览器透明 沙箱环境提供更可靠的安全性 易于与现有系统集成
  • 5. 2018/10/19目前主流RIA技术及特点Adobe Flex/Flash Microsoft Silverlight Sun JavaFX Curl
  • 6. 2018/10/19ArcGIS Server的REST接口REST的概念 通过REST的接口使用ArcGIS功能
  • 7. 2018/10/19REST的概念资源通过URI来指定和操作 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法. 连接是无状态性的 能够利用Cache机制来提高性能
  • 8. 2018/10/19通过REST的接口使用ArcGIS功能REST服务目录 Java:http://:8399/argis/rest .Net:http:///arcgis/rest
  • 9. 2018/10/19
  • 10. 2018/10/19清空REST的缓存 REST管理界面 http://[:8399]/arcgis/rest/admin
  • 11. 2018/10/19某个地图服务REST URL http://localhost:8399/arcgis/rest/services/AgsSample/World/MapServer
  • 12. 2018/10/19
  • 13. 2018/10/19总结: ArcGIS Server REST接口中,请求服务的URL一般应该是这样的: http://[:]/arcgis/rest/services/<服务>/<服务类型>/<操作>?<参数>
  • 14. 2018/10/19ArcGIS Flex API 基础
  • 15. 2018/10/19ArcGIS Flex API概述ArcGIS在RIA领域的第一个产品开发运行于浏览器中的Web应用或者运行于桌面的AIR应用非常便捷地使用地图功能和REST接口提供的GIS查询及分析功能专注于GIS功能的实现而不重复地创造组件
  • 16. 2018/10/19一些基本概念MapServiceLayer GraphicLayer与Graphic Geometry Symbol
  • 17. 2018/10/19MapServiceLayerMapServiceLayer对应的是ArcGIS发布的地图服务,它们是一对一的关系,每个地图服务在ArcGIS Flex API中都会以一个图层的形式出现。不同种类的地图服务将会对应不同的MapServiceLayer,ArcGIS Flex API中主要有以下几种MapServiceLayer: ArcGISDynamicMapServiceLayerArcGIS Server发布的动态地图服务 ArcGISTiledMapServiceLayer ArcGIS Server发布的切片地图服务 ArcGISImageServiceLayer ArcGIS Image Server发布的影像服务 ArcIMSMapServiceLayer ArcIMS发布的地图服务
  • 18. 保护方法方法返回类型描述addMapListeners()void对Map添加监听事件extentChangeHandler(event:ExtentEvent)void当一个EXTENT_CHANGE事件发生后,这就要求invalidateLayer();hideHandler(event:FlexEvent)void当图层隐藏(可见设置为假),这就要求removeMapListeners()。invalidateLayer()void当图层加载无效时,要执行updateLayer().loadMapImage(loader:Loader)void加载地图图片时要override此方法2018/10/19
  • 19. 方法返回类型描述removeAllChildren()void移除所有图层的字图层removeMapListeners()void移除Map监听事件setLoaded(value:Boolean)void设置是否加载图层showHandler(event:FlexEvent)void当图层显示(可见设置为true),这就要求addMapListeners()和invalidateLayer()。toScreenX(mapX:Number)Number地图X坐标转换为指向一个屏幕上的点。2018/10/19
  • 20. 方法返回类型描述toScreenY(mapY:Number)Number地图Y坐标转换屏幕坐标updateLayer()void子类必须override次方法zoomEndHandler(event:ZoomEvent)void完成地图改变时所触发事件zoomStartHandler(event:ZoomEvent)void开始地图改变时触发事件zoomUpdateHandler(event:ZoomEvent)void更新地图时所触发事件2018/10/19
  • 21. ArcGISDynamicMapServiceLayer公共属性 公共方法 事件2018/10/19
  • 22. 公共属性2018/10/19属性返回类型说明copyrightString 地图服务定义的版权字符串。descriptionString 地图服务定义的地图描述。disableClientCachingBoolean 当值为true时,图片总是从服务器上获取,忽略浏览器的缓存。这将被用于地图服务的数据时常修改的情况。dpiNumber 动态地图服务层的输出dpi。fullExtentExtent最大程度地定义地图服务
  • 23. 属性返回类型描述imageFormatString输出图形格式类型imageTransparencyBoolean是否动态图像的背景是透明的initialExtentExtent初始化的范围上定义地图服务layerDefinitionsArray动态地图服务默认图层layerInfosArray在地图上可用的层服务和默认的图层信息proxyURLStringURL请求通过代理requestTimeoutNumber = -1请求暂停在几秒钟内serviceDescriptionString地图服务描述定义地图服务。2018/10/19
  • 24. 属性返回类型描述spatialReferenceSpatialReference空间参考的地图服务tokenString令牌来访问一个安全的动态ArcGIS服务。unitsString单元层urlStringURL端点的一种服务。visibleLayersArrayCollection可见层设置出口的地图2018/10/19
  • 25. 公共方法属性说明ArcGisDynamicMapServiceLayer(url:String=null,proxyURL:String=null,token:String=null)创建动态地图服务,参数1.指定动态地图服务访问地址。参数2.通过代理服务URL地址,参数3.通过安全令牌访问地图服务defaultVisibleLayers() 清除可见层为定义在visibleLayers层和重置到默认的地图服务。exportMapImage(imageParameters:ImageParameters=null,responder:Iresponder=null) 导出地图从层的默认值getLayerDetails(layerID:Number, responder:Iresponder)获得图层详细信息,参数1.指定要获得哪个图层refresh()刷新,重新绘制图层2018/10/19
  • 26. 事件事件描述complete派遣时下载地图已经完成时触发事件ioError当一个输入/输出派遣时发生错误,下载地图图像。load加载地图成功时触发事件loadError加载地图错误时触发事件mapImageExport当地图派遣出口也就完成了。2018/10/19
  • 27. ArcGISTiledMapServiceLayer属性属性返回类型描述copyrightString地图版权定义地图服务。descriptionString地图描述定义地图服务。displayLevelsArray显示在水平的基础上,LOD.level层。layerInfosArray在地图上可用的层服务和默认的图层信息fullExtentExtent最大范围地定义地图服务。initialExtentExtent初始化的范围上定义地图服务isInScaleRangeBoolean是否定义最大和最下比例尺范围加载地图服务2018/10/19
  • 28. 属性返回类型描述loadedBoolean当为true时,地图加载,图层值和属性值都可以获得mapMap指的是这一层是在地图上maxScaleNmber=0最大比例尺范围minScaleNumber=0最下比例尺范围proxyURLStringURL请求通过代理。requestTimeoutNumber=-1请求暂停在几秒钟内。serviceDescriptionString地图服务描述定义地图服务。spatialReferenceSpatialReference空间参考的地图服务。2018/10/19
  • 29. 属性返回类型描述tileInfoTileInfo切片服务的信息tileServersArray加载URL的端点的名单。tokenString令牌来访问一个安全的瓦片ArcGIS服务。unitsString单元层。urlStringURL端点的一种服务visibleLayersArrayCollection定义可见图层2018/10/19
  • 30. ArcGISTiledMapServiceLayer方法方法描述ArcGISTiledMapServiceLayer(url:String = null, proxyURL:String = null, token:String = null)创建切片地图服务,参数1.指定方法切片地图服务的URL地址。参数2.通过代理URL,参数3.访问地图服务通过安全令牌getLayerDetails(layerID:Number, responder:IResponder):void获得默认的图层信息refresh():void刷新切片地图服务内容2018/10/19
  • 31. ArcGISTiledMapServiceLayer事件事件描述complete派遣时下载地图已经完成时触发事件ioError当一个输入/输出派遣时发生错误,下载地图图像。load加载地图成功时触发事件loadError加载地图错误时触发事件tilesUpdated切片更新时触发事件2018/10/19
  • 32. 2018/10/19GraphicLayer客户端的图层GraphicLayer,用于显示用户在客户端绘制的图形要素的图层,该图层可以包含一个或多个图形要素。 完成客户端的绘制功能,需要在map上定义一个GraphicsLayer,客户端绘制的结果都会添加到GraphicsLayer上。 使用标签定义一个GraphicsLayer对象。。id唯一标识一个GraphicsLayer。
  • 33. 2018/10/19Graphic根据各种情况动态地在客户端显示一些符号化的几何对象——Graphic。 在地图中Graphic就是一个可视化的、可响应鼠标事件的客户端要素。
  • 34. 2018/10/19Graphic有3个很重要的属性: geometry、 Symbol attributes。
  • 35. geometry属性定义的是一个几何对象,它是Graphic的基础,因为Graphic要表达的就是这个几何对象; symbol属性则定义了这个几何对象通过什么符号表现出来; attributes则可以存放一系列与空间信息无关的属性数据。从上面可以发现,Graphic可以被理解成是一个在客户端符号化的要素。关于Graphic的geometry和symbol属性所对应的Geometry类和Symbol类,接下来在这里做一点更详细的说明。 2018/10/19
  • 36. 2018/10/19GeometryMapPoint点Multipoin多点Polyline多段线Polygon多边形Extent边界范围
  • 37. 2018/10/19Symbol Symbol定义了Geometry使用什么符号表现出来。在ArcGIS Flex API中: MarkerSymbol定义点的符号 LineSymbol定义线的符号 FillSymbol定义填充的符号 TextSymbol定义文本符号 InfoSymbol信息符号
  • 38. 2018/10/19SimpleMarkerSymbol简单点符号SimpleLineSymbol简单线符号SimpleFillSymbol简单填充符号 CartographicLineSymbol 制图线符号,可定义端点、折点样式PictureMarkerSymbol图片点符号PictureFillSymbol图片填充符号TextSymbol文字符号InfoSymbol信息提示符号CompositeSymbol复合符号下面列出的是ArcGIS Flex API中提供的常用的Symbol:
  • 39. 2018/10/19SimpleMarkerSymbolStyle属性:画点的样式 Square画正方形的点 Circle画圆形的点 Cross画十字形的点 Diamond画菱形的点 Triangle画三角形的点 X画X的点
  • 40. 2018/10/19SimpleLineSymbol Style属性参数: Dash样式是画 Dashdot样式是画 Dashdotdot样式是画 Dot样式是画 None样式是任何线都没有 Solid样式
  • 41. 2018/10/19SimpleFillSymbolStyle属性: Diagonalcross样式 Backwarddiagonal样式 Cross样式 Forwarddiagonal样式 Horizontal样式 Solid样式 Vertical样式
  • 42. 2018/10/19
  • 43. 2018/10/19
  • 44. 2018/10/19
  • 45. 2018/10/19地图功能组件Map组件 Navigation工具 Draw工具 InfoWindow窗
  • 46. 2018/10/19Map组件ArcGIS Flex API中唯一的可视化组 ArcGIS Flex API中所有的操作和功能都会在Map进行,Map中包含各种Layer: 一种是对应某个地图服务的MapServiceLayer 一种是用以绘制自定义要素的GraphicLayer 添加Map和Layer的代码:
  • 47. 2018/10/19添加地图实例: URL是指定发布的地图服务的地址。 8399:是默认的端口号。
  • 48. Map组件属性属性返回类型说明clickRecenterEnabledTrue/false是否开启按shift键点击地图定位中心的功能crosshairVisibleTrue/false是否在地图的中心显示“+”字doubleClickZoomEnabledTrue/false是否开启双击地图方大的功能keyboardNavigationEnabledTrue/false是否开启键盘进行地图导航放大缩小的功能mapNavigationEnabledTrue/false是否开启地图导航的功能panArrowsVisibleTrue/false是否在地图的四边以及4个角显示移动地图箭头按钮的功能2018/10/19
  • 49. 属性返回类型说明panEnabledTrue/false是否开启拖拽地图移动的功能rubberBandZoomEnabledTrue/false是否开启按shift+拉框放大地图的功能scaleBarvisibleTrue/false是否显示放大缩小功能按钮功能条scrollWheelZoomEnabledTrue/false是否开启鼠标滚轮放大缩小的功能logoVisibleTrue/false是否在地图上显示logo图标2018/10/19
  • 50. 2018/10/19控制地图缩放的zoomSlider、地图比例尺scaleBar以及ESRI的logo都是可以隐藏的。
  • 51. 2018/10/19隐藏实例:
  • 52. 2018/10/19zoomSlider和scaleBar除了可以被隐藏掉,还可以过定制样式来改变外观 以下的CSS代码将Map的zoomSlider移到了右边:
  • 53. 2018/10/19
  • 54. 2018/10/19Navigation工具在ArcGIS API for Flex中提供了地图浏览的工具,通过简单的调用,就能够实现放大、缩小、平移、复位等地图浏览操作。 使用标签定义地图浏览控件:
  • 55. map属性绑定需要进行浏览操作的地图。Navigation对象创建后,使用Navigation的activate方法来激活需要的工具进行浏览。 例如放大操作:activate(Navigation.ZOOM_IN);释放浏览工具,调用Navigation对象的deactivate()函数即可。 2018/10/19
  • 56. Navigation组件方法方法返回类型说明Navigation()none创建navigation组件实例activate(type:String,GrahicLayerMouseEvent:Boolean = false)void激活地图上的导航工具,参数1.导航类型。参数2.是否在图层上鼠标事件deactivate()void释放地图上的导航工具zoomToFullExtent()void缩放到完全范围的地图zoomToNextExtent()void缩放到下一个范围的地图zoomToPrevExtent()void缩放到上一个范围的地图2018/10/19
  • 57. Navigation组件的事件和常数事件和常数说明extentChange影响范围扩大时,地图发生的改变NavigationEvent(type:String)创建Navigation事件PAN漫游ZOOM_IN放大ZOOM_OUT缩小2018/10/19
  • 58. 例如:2018/10/19
  • 59. 2018/10/19
  • 60. 2018/10/19
  • 61. 2018/10/19 Navigation中前一视图、后一视图、全图等功能和工具条按钮的绑定 前一视图、后一视图的按钮并不是一直可用
  • 62. 2018/10/19Draw工具Draw工具提供了在客户端绘制各种几何对象的功能 用一个ToggleButtonBar去绑定Draw工具的功能
  • 63. Draw属性属性返回类型说明fillSymbolSymbol画多边形的符号graphicsLayerGraphicsLayer在图层上画的图形lineSymbolSymbol画线的符号mapMap地图上的工具栏是联系在一起的markerSymbolSymbol画点的符号respectDrawingVertexOrderBoolean当被设置为false,几何修正是拓扑正确的2018/10/19
  • 64. Draw方法方法返回类型说明Draw(map:Map= null)创建Draw实例activate(drawType:String,graphicsLayerMouseEvent:Boolean = false)void 激活地图上Draw工具,参数1.画图类型,参数2.是否触发鼠标事件deactivate()void释放地图上Draw工具2018/10/19
  • 65. Draw事件事件说明drawEnd当在地图上结束画图时,触发drawEnd事件drawStart当在地图上开始画图时,触发drawStart事件2018/10/19
  • 66. Draw常数常数返回类型描述EXTENTString画矩形FREEHAND_POLYGONString得出了徒手画多边形的形状FREEHAND_POLLINEString得出了徒手画线的形状LINEString画线MAPPOINTString画点MULTIPOINTString画多点POLYGONString画折线POLYLINEString画线2018/10/19
  • 67. DrawEvent事件属性、方法、常数返回类型描述属性 graphicGraphic在图层上画图形方法DrawEvent(type:String,graphic:Graphic = null)画图事件,参数1.画图的类型,参数2.要画图的样式常数DRAW_ENDString定义的值类型的特性drawEnd事件对象常数DRAW_STARTString定义的值类型的特性drawStart事件对象2018/10/19
  • 68. 例如代码 2018/10/19
  • 69. 2018/10/19
  • 70. 多点 直线 多线 手绘多线 多边形 手绘多边形 矩形 2018/10/19
  • 71. 2018/10/19
  • 72. 2018/10/19
  • 73. 2018/10/19InfoWindow窗口InfoWindow窗口主要提供在Map上弹出信息提示的功能 定义一个Map的时候,Map会生成一个自带的InfoWindow并放置在自己的infoWindow属性中 下面我们在地图上弹出一个InfoWindow,并在其中放上一个图片:
  • 74. InfoWindow属性属性返回类型描述anchorXNumberX地点以像素为单位。anchorYNumberY地点以像素为单位。closeButtonVisibleBoolean是否显示的关闭按钮的右上方contentUIComponent信息窗口的内容labelVisibleBoolean是否显示标签在左上角2018/10/19
  • 75. InfoWindow方法、事件方法、事件返回类型描述Hide()void隐藏信息窗口Show(mapPoint:MapPoint)void显示信息窗口,参数1.地图坐标事件close当关闭Infowindow窗口时触发事件2018/10/19
  • 76. 实例代码var image:Image = new Image(); image.source = "http://www.esrichina-bj.cn/images/in_flashRig.jpg"; map.infoWindow.content = image; map.infoWindow.show(new MapPoint(116, 40));2018/10/19
  • 77. 2018/10/19实例:•InfoWindow使用的重点在于其content属性,它是InfoWindow窗口中的信息内容,它对应一个DisplayObject的对象,言下之意任何Flex中的可视组件都可以放置于其中。
  • 78. 2018/10/19从上面的内容,我们知道了如何使用一个Map来获得和显示ArcGIS Server发布的服务,然后使用Navigation工具来进行导航,用Draw工具在客户端绘制几何对象,用InfoWindow来显示提示信息。
  • 79. 2018/10/19习题 熟练掌握地图功能组件,并完成相应的实例? 结合地图功能组件实现对地图的基本操作?