SilverLightViewer 开发人员指南.docx
- 文档编号:7950381
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:41
- 大小:14.46MB
SilverLightViewer 开发人员指南.docx
《SilverLightViewer 开发人员指南.docx》由会员分享,可在线阅读,更多相关《SilverLightViewer 开发人员指南.docx(41页珍藏版)》请在冰豆网上搜索。
SilverLightViewer开发人员指南
SilverLightViewer
开发人员指南
丁海
二〇一〇年八月
目录
简述2
背景2
术语和定义2
GIS(地理信息系统)2
GPS(全球卫星定位系统)2
RIA(富因特网应用程序)3
Flex3
SilverLight4
开发环境4
必备知识4
SilverLightViewer开发框架5
概述5
系统框架图6
开发人员指南7
WidgetFramework基础7
系统配置文件11
系统常用事件(AppEvent)17
开发自己的Widget25
使用外部参数34
使用自定义图形光标35
附录I:
Widgets介绍35
主控窗口(ViewerControllerWidget)35
HeaderController35
ClassicController36
图层切换(MapSwitcherWidget)38
鹰眼(OverviewMapWidget)39
书签(BookmarkWidget)40
附录II:
常见问题41
使用跨域访问配置文件(clientaccesspolicy.xml)41
简述
本文档用于帮助开发人员使用SilverLightViewer框架,开发基于ArcGISforSilverlight/WPFAPI2.0的RIA地图应用。
背景
ESRI发布了ArcGISSilverLightAPI等快速Web开发包,受到了广大用户及开发商的关注。
但一直以来开发商和用户都只是使用在线的文档及零散的在线例子,开发商或用户准备使用ArcGISSilverLightAPI进行开发的时候,总是感到无从下手。
基于以上原因,本方案旨在为客户提供一个可扩展、移植的SilverLightAPI开发框架,并向用户展示ArcGISSilverLightAPI的功能及魅力。
术语和定义
GIS(地理信息系统)
地理信息系统(GeographicInformationSystem,简称GIS)是建立在地球科学基础上的边缘科学,是以地理空间数据库为基础,在计算机软硬件的支持下,对空间相关资料进行采集、管理、操作、查询分析、模拟、显示和制图输出,并采用地理模型分析方法,适时提供多种空间和动态的地理信息,为地理研究和地理决策服务而建立起来的计算机技术系统。
是融地理学、几何学、计算机科学及各类应用对象为一体的综合性高新技术。
GPS(全球卫星定位系统)
GPS是全球卫星定位系统(GlobalPositioningSystem,GPS)的英文缩写,GPS利用导航卫星进行测时和测距,以构成全球定位系统,能提供个人候的定位、授时、测速功能。
GPS是一种精密的卫星导航系统。
该系统由24颗绕地球旋转的卫星组成,卫星连续不断地发送位置和时间信息。
这些卫星均匀地分布在6个轨道上,每个轨道有4颗卫星。
地面GPS接收机可接收5到12颗卫星信号。
为实现地面定位功能,GPS接收机至少需要接收4个卫星信号,其中3个信号用来计算GPS接收机的纬度、经度和海拔高度,第四个信号提供同步时间校准。
RIA(富因特网应用程序)
RIA是RichInternetApplication的简称,也称富因特网应用程序,是由Macromedia(现Adobe)最先提示的概念,以示与传统Web应用程序相区别。
自从B/S架构迅速流行开来之后,我们就一直面临着这样一个问题:
如何做到当初C/S那样的表示层精确控制以及良好的用户体验?
当然,大量的利用DHTML以及JavaScript我们可以实现接近C/S时代的表示层控制和展现,比如Bindows,但是我们需要付出比C/S时代更多的人力物力才能做到接近于C/S客户端的表现方式,这不是我们想要的。
在我们从当初狂热的B/S浪潮中逐渐冷静下来的时候,我们发现单纯的瘦客户端/胖服务器模式并非是一个万能的模式-世间能量终究是守恒的,有得必有失,我们在获得了B/S带来的种种好处之后,也同样失去了C/S带给我们的帮助,因此RIA(RichInternetApplications)的出现就显得极其自然了。
RIA意味:
不同凡响的Web功能、更好的用户体验、更强大的用户界面、更好的交互性、更先进的开发模型、更强大的多媒体功能、更好的数据管理、更好的程序控制
目前RIA开发的技术主要有,AdobeFlex、Ajax、WPF、OpenLaszlo、GoogleWebToolkit、JavaSWT、XUL、JavaFX、Silverlight。
Flex
随着当今信息技术飞速发展和Internet带宽的增加,传统的文字+图片的方式已经不能满足人们对Web内容的需要。
随着Web2.0的概念越来越深入人心,Flex技术作为RIA技术的领航者已经快速的发展到了第三个版本Flex3.0。
Flex技术是完全基于矢量图形技术的,这样使得用户能够获得更多的用户体验。
只要浏览器可以播放Flash,就可以显示Flex的网站。
由于FlashPlayer的高市场占有率,基于Flex的RIA技术已经逐渐成为Web2.0开发的主要技术手段。
Flex的定位是提供丰富Internet应用的企业级开发框架。
轻便的开发模式和良好的服务端兼容性使得Flex已经成为主流的网站和电子商务的发展方向。
SilverLight
Silverlight是微软推出的一个跨平台跨操作系统的插件,使Web开发者能够在浏览器中建造丰富的媒体体验和RIA应用。
可用于Windows平台上的IE和Firefox浏览器,以及MacOSX平台上的Firefox和Safari浏览器。
Silverlight是一种新的Web呈现技术,能在各种平台上运行。
借助该技术,您将拥有内容丰富、视觉效果绚丽的交互式体验,而且,无论是在浏览器内、在多个设备上还是在桌面操作系统(如AppleMacintosh)中,您都可以获得这种体验。
支持创建3D模型、可以更轻松的现实视频播放和分享的播放器一类的东西,支持搜索引擎。
开发环境
WindowsXp/2003/2008/7
IIS
MicrosoftVisualStudio2010
MicrosoftExpressionBlend4
SilverLight4
Silverlight_4_Toolkit
SilverLightToolsforVisualStudio2010
ArcGISforSilverlight/WPFAPI2.0
SilverLightViewer1.0
必备知识
熟练使用VisualStudio开发SilverLight(C#或VB)
熟悉ArcGISforSilverlight/WPFAPI
SilverLightViewer开发框架
概述
SilverLightViewer开发框架帮助开发人员,快速的开发和部署基于ArcGISforSilverlight/WPFAPI2.0的RIA地图应用。
SilverLightViewer开发框架有以下特点:
1.轻松配置,以满足客户业务需求和要求
2.通过Widget来实现各种功能,提供许多核心的Widget如:
图层管理、鹰眼等
3.轻松扩展,可根据自己的业务需求,轻松的编写或下载widgets
4.Widgets采取按需下载管理模式,最小化服务器网络负载。
5.类似于ArcGISViewerforFlex
系统框架图
开发人员指南
WidgetFramework基础
Widget是被封装在一起的一段或一组孤立的可执行代码,它实现了用户的一种或一组功能或业务逻辑(包括可视化的界面)。
对于面向服务的应用,Widget甚至可以是一个服务(数据、业务流程等)。
用户可以轻松的执行这个Widget。
同时Widget也支持被共享和重用。
IBaseWidget接口(IBaseWidget.cs)
定义了Widget的一系列通用接口,会被WidgetManager调用。
publicinterfaceIBaseWidget
{
intID{get;set;}
voidsetTitle(stringvalue);
voidsetIcon(stringvalue);
stringconfig{get;set;}
ConfigDataconfigData{get;set;}
voidsetState(stringvalue);
Mapmap{get;set;}
voidsetPreload(stringvalue);
voidsetXYPosition(doublex,doubley);
voidsetRelativePosition(doubleleft,doubleright,doubletop,doublebottom,stringhorizontal,stringvertical);
BooleanisDragable{get;set;}
BooleanisResizeable{get;set;}
stringproxyUrl{get;}
voidrun();
}
BaseWidget类(BaseWidget.xaml、BaseWidget.xaml.cs)
Widget的基础类,所有Widget都继承自这个基类。
它实现了IBaseWidget接口和一些通用的方法。
一些通用的方法:
publicvoidshowInfoWindow(Dictionary
publicvoidsetMapAction(stringaction,stringstatus,EventHandler
publicvoidsetMapNavigation(StringnavMethod,Stringstatus);
publicvoidshowError(stringerrorMessage);
一些通用的事件:
publicdelegatevoidWidgetConfigEventHandler(objectsender,AppEvente);(配置文件加载事件代理)
publiceventWidgetConfigEventHandlerWidgetConfigEvent;(配置文件加载事件)
publiceventWidgetConfigEventHandlerWidgetConfigErrorEvent;(配置文件加载失败事件)
注:
所有的Widget必须继承自这个类。
IWidgetPanel接口(IWidgetPanel.cs)
这个接口定义了Widget模板(通用的界面及行为)在BaseWidget中被调用的接口。
publicinterfaceIWidgetPanel
{
intwidgetId{get;set;}
stringwidgetTitle{get;set;}
stringwidgetIcon{get;set;}
voidsetState(stringvalue);
BooleanisDragable{get;set;}
BooleanisResizeable{get;set;}
}
WidgetPanel类(WidgetPanel.xaml、WidgetPanel.xaml.cs)
一个Widget模板。
提供了widget的基本的用户界面布局(面板、窗口、标题栏、图像按钮等)和行为(最大化、最小化、关闭等).通过使用Widget模板,Widget开发人员可以花更多的他们对自己的核心业务需求的开发时间。
开发人员可以自定义自己的widget模板,一定要实现IWidgetPanel接口。
一些通用的方法:
publicvirtualvoidaddTitlebarButton(Stringicon,Stringtip,MouseButtonEventHandlermouseLeftButtonDown);
一些通用的事件:
publiceventEventHandlerWidgetMinimizedEvent;(最小化事件)
publiceventEventHandlerWidgetMaximizedEvent;(最大化事件)
publiceventEventHandlerWidgetClosedEvent;(关闭事件)
Widget界面元素
titleBar
txtTitle
imgIcon
widgetPanel
Content
LayoutRoot
界面元素嵌套关系如下图:
WidgetBar
Widget和WidgetBar
Widget控制条
Widget
Widget:
接受WidgetContorl管理。
WidgetBar:
不受WidgetContorl管理。
系统配置文件
我们可以通过修改配置文件,轻松完成系统界面的定制。
全局配置文件(默认为config.xml)
定义用户的UI界面。
包括title、subtitle、logo、stylesheet、等标签段。
SilverLightViewer应用程序的标题。
(HeaderControllerWidget的左上角显示标题)
SilverLightViewer应用程序的子标题。
(HeaderControllerWidget的标题下方显示)
SilverLightViewer应用程序的Logo。
(HeaderControllerWidget的左上角显示)
SilverLightViewer应用程序的风格描述文件。
Widget的布局方式。
有下面几种布局方式:
horizontal:
横向布局
vertical:
纵向布局(默认)
float:
随意布局,widget可拖动、调整大小
定义Map相关的信息,
initialExtent:
安装时地图显示的区域(XMinYMinXMaxYMax)
fullExtent:
地图显示的最大区域(XMinYMinXMaxYMax)
left:
地图距离最左边的距离
right:
地图距离最右边的距离
top:
地图距离最上边的距离
bottom:
地图距离最下边的距离
还包含下面的标签段:
定义背景地图信息,包含mapservice标签段
定义一个地图服务信息,包含下面的一些属性及值域
Label:
地图服务的标题名
type:
地图服务类型(tiled\dynamic\virtualearth\image)
visible:
地图服务的可见性
token:
token串
alpha:
透明度
icon:
地图服务的图标
style:
图层风格(Road、Aerial、AerialWithLabels)(只适用于virtualearth)
值域:
地图服务的访问地址
定义操作地图信息,包含layer标签段
定义一个操作图层信息,包含下面的一些属性及值域
Label:
图层的标题名
type:
图层的类型(tiled\dynamic\feature)
visible:
图层的可见性
token:
token串
alpha:
透明度
icon:
图层的图标
值域:
图层的访问地址
定义Widgets的信息。
包含多个
定义一个Widget的信息,包含下面的属性及值域
Label:
Widget的标题名
icon:
Widget的图标
type:
Widget的类名(创建Widget时使用)
preload:
启动应用系统时是否自动加载(true/false)
config:
Widget的独有的配置文件。
resdict:
Widget的独有的资源文件。
group:
Widget的分组信息
x:
Widget的X轴绝对位置
y:
Widget的Y轴绝对位置
值域:
Widget所在DLL或Xap包的名称(含路径)
定义Widgetbars的信息。
包含多个
定义一个Widgetbar的信息,包含下面的属性及值域
Label:
Widgetbar的标题名
icon:
Widgetbar的图标
type:
Widgetbar的类名(创建Widget时使用)
config:
Widgetbar的独有的配置文件。
resdict:
Widgetbar的独有的资源文件。
left:
Widgetbar相对于最左边的距离(没有设置时不参与计算)
right:
Widgetbar相对于最右边的距离(没有设置时不参与计算)
top:
Widgetbar相对于最上边的距离(没有设置时不参与计算)
bottom:
Widgetbar相对于最下边的距离(没有设置时不参与计算)
horizontal:
Widgetbar横向计算模式(left(默认):
自左向右,right:
自右向左)
vertical:
Widgetbar纵向计算模式(top(默认):
自上向下,bottom:
自下向上)
值域:
Widget所在DLL或Xap包的名称(含路径)
Widget配置文件(*.xml)
Widget独有的配置文件,定义Widget需要的配置信息,配置文件格式及内容由Widget自己处理(开发人员在WidgetConfigEvent事件中处理)。
ConfigData类
publicclassConfigData
{
publicDictionary
publicDictionary
publicDictionary
publicDictionary
publicDictionary
publicDictionary
}
系统常用事件(AppEvent)
定义了一些列系统常用的事件,包含在AppEvent.cs文件中。
使用监听和发起系统事件必须使用ViewerContainer全局类。
监听事件例子:
ViewerContainer.addEventListener(AppEvent.CONTAINER_INITIALIZED,newViewerEventHandler(containerInitialized));
触发事件例子:
ViewerContainer.dispatchEvent(AppEvent.WIDGET_RUN,newAppEvent(ItemId));
APP_ERROR
应用程序出错事件,在应用程序出错时触发。
AppEvent类的data属性为字符串类型。
触发事件示例:
Stringdata=“出错了!
”;
ViewerContainer.dispatchEvent(AppEvent.APP_ERROR,newAppEvent(data));
CONFIG_LOADED
系统全局配置文件加载成功后,触发事件。
AppEvent类的data属性为ConfigData类型实例。
监听事件示例:
ViewerContainer.addEventListener(AppEvent.CONFIG_LOADED,
newViewerEventHandler(ConfigLoaded));
privatevoidConfigLoaded(objectsender,AppEvente)
{
……
}
MAP_LOADED
地图控件加载成功时触发的事件。
AppEvent类的data属性为ESRI.ArcGIS.Client.Map类型实例。
监听事件示例:
ViewerContainer.addEventListener(AppEvent.MAP_LOADED,
newViewerEventHandler(MapLoaded));
privatevoidMapLoaded(objectsender,AppEvente)
{
map=(Map)e.Data;
}
MAP_RESIZE
用于改变地图控件大小事件。
AppEvent类的data属性为Dictionary
"left":
左边的空白距离
"right":
右边的空白距离
"top":
上边的空白距离
"bottom":
下边的空白距离
触发事件示例:
Dictionary
data.Add("left",0);
data.Add("right",0);
data.Add("top",0);
data.Add("bottom",0);
ViewerContainer.dispatchEvent(AppEvent.MAP_RESIZE,newAppEvent(data));
LAYER_LOADED
基础地图图层加载成功时触发的事件。
AppEvent类的data属性为Null。
监听事件示例:
ViewerContainer.addEventListener(AppEvent.LAYER_LOADED,
newViewerEventHandler(OnlayerLoaded));
privatevoidOnlayerLoaded(objectsender,AppEvente)
{
……
}
MAP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SilverLightViewer 开发人员指南 开发人员 指南