ArcGIS API for Windows Phone开发实例(1):准备工作

  本文有三部分内容。注:以后的文章中以WP作为Windows Phone的简写。

一、Windows Phone开发需要哪些知识?

  先来看一下WP的整体结构:

clip_image002

  最底下是通用的基础类库,可以当做是.NET Framework中保留了核心功能的简化版CLR;最上层是WP特有的类库,提供给开发者与手机相关的功能,比如说屏幕控制,摄像头控制,获取位置等等。
  中间这层是WP为我们提供的两套开发框架:Silverlight或XNA。也就是说,你可以利用Silverlight技术或者XNA技术来开发运行在WP上的应用程序。大致地,在WP上,Silverlight适合编写大多数应用程序,XNA适合编写游戏程序。XNA是微软提供的一套游戏开发环境,它有多强大,看看XBOX有多成功就知道了,感兴趣的同学可以深入研究。Silverlight是微软抢占RIA市场的有力武器之一,也是以后微软.NET Framework中主打开发技术之一——WPF——的子集。作为.NET开发人员,如果还不熟悉的话,有必要赶紧熟悉一下。关于它的介绍很多,可以参考我之前写的这篇,或者自己搜索。
  要强调的一点是,你在别处写的Silverlight或XNA程序基本不需要或只需要进行少量的更改(比如屏幕尺寸调整或使用WP的硬件功能),便可顺利运行在WP上,这是微软统一的开发平台给我们带来的好处。
  这次,我们只关心Silverlight,它就是开发WP程序所需的知识。

二、ArcGIS API for Silverlight/WPF和ArcGIS API for Windows Phone的异同?

  在比较Esri的这几个客户端API之前,我们需要看一看Windows Phone上使用的Silverlight技术和普通的Silverlight技术有什么区别。目前是WP的第一个版本,也就是Windows Phone 7,它所使用的Silverlight开发技术是基于3版本的,在WP开发中你基本可以使用Silverlight 3的所有特性,还包括WP特有的触控功能。具体可参考这两篇文章:Features Supported in Silverlight for Windows PhoneDifferences Between Silverlight and Silverlight for Windows Phone。需要强调的一点是,Silverlight 4的新特性在WP上基本无法使用,对此我们只能表示遗憾。但可以期待在以后的WP版本中,Silverlight版本能够与其他平台统一起来。
  那么Esri的这三个API(最新的2.2beta版本中已将Silverlight和WPF两个API分开)就比较好理解了。ArcGIS API for Silverlight,ArcGIS API for WPF,ArcGIS API for Windows Phone三者的功能,架构,包括源代码完全一致,只是编译的目标平台不同。对于Esri的这三个API,你只需熟悉其中之一,就可以在其他两个平台上进行开发。
  所以,如果你没有学过ArcGIS API for Silverlight的话也没有关系,会了Windows Phone API,你也就学会了Silverlight API。

三、我们要完成的工作

  在上一篇文章中,我们已经了解到,最终我们需要完成这么一个WP上的应用程序:连锁超市的老板出差在外,在机场候机的过程中想查看一下自己的几家店面最近的营业情况。传统的统计报表只能通过电子邮件发送给老板,他需要不停的查看自己的邮箱;而里面的内容既不直观也不易懂。将报表数据发布成地图服务,这样即可在任何时间任何地点访问业务数据,也可通过地图的方式充分挖掘数据的潜在价值。老板通过windows phone7上的地图应用,对自己店面近来营业情况一目了然,利用应用所提供的分析功能,即使在千里之外也能随时对自己的生意轻松经营。
  好了,要了解的预备知识已经梳理完毕。有人可能说,都看了这么多了,还没进入动手阶段?我是希望大家每时每刻都知道我们在做什么,为什么要这么做,知其然也知其所以然。就跟听别人的PPT一样,对于我们不熟悉的内容,如果前面两页他交代不清楚,可能整个PPT就是在浪费我们的时间。凡事皆如此。

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>