天天看点

使用ArcGIS Mobile SDK 9.3 开发移动设备应用-高级篇

【概述】概述如何通过ArcGIS Server 9.3提供的Mobile SDK开发移动设备应用。

【环境】 Windows XP SP3,ArcGIS Server 9.3,Visual Studio 2008,Windows Mobile 6 Professional SDK

预生成地图缓存

我们已经知道,ArcGIS Mobile支持离线和在线两种应用。我们可以选择让ArcGIS Mobile应用在首次请求的时候保存地图缓存,也可以在此之前(部署应用之前),预先生成缓存,跟应用一起发布。是不是有点像原来的单机设备应用?

好,让我们把ArcCatalog打开,启动ArcToolbox工具箱:

使用ArcGIS Mobile SDK 9.3 开发移动设备应用-高级篇

在工具箱中,找到“Mobile Tools”。ArcToolbox专门为Mobile应用提供了两个工具。其中“Generate Mobile Service Cache”就是用以生成Mobile地图服务的缓存。

使用ArcGIS Mobile SDK 9.3 开发移动设备应用-高级篇
使用ArcGIS Mobile SDK 9.3 开发移动设备应用-高级篇

点击确认,经过处理,在指定目录生成了缓存。我们可以比较一下,这些缓存和在移动设备上通过 MobileService对象生成的缓存是一样的。换句话说,在部署的时候将这些缓存部署到缓存目录以后,MobileService可以直接打开它,无需与服务器进行任何交互。

Mobile Basemap

这是Mobile的特殊数据,目的在于通过对地图数据进行高度压缩,使之在移动设备上的性能更加优化。Basemap与我们前面使用的Mobile地图服务数据不同,Basemap是不提供用户进行操作的,它将在程序运行时首先被渲染,其他所有的Mobile地图都将在它之上绘制——简单地说,它应该被称为底图。

创建Mobile Basemap很简单,我们从ArcToolbox中点击“Create Mobile Basemap”,根据提示操作即可。一个mxd文档对应一个navmap文件,每个图层也都有相应的对应文件。

使用ArcGIS Mobile SDK 9.3 开发移动设备应用-高级篇

在ArcGIS Mobile中,有个专门的命名空间“ESRI.ArcGIS.Mobile.SdcData”,这个命名空间包括了所有对Basemap进行操作的类。事实上,Mobile Basemap对应的数据叫做SDC base map data。

Basemap的使用非常简单:

try

{

ESRI.ArcGIS.Mobile.SdcData.SdcMapLayer sdcMapLayer = new ESRI.ArcGIS.Mobile.SdcData.SdcMapLayer(@"/Storage Card/bj_basemap/bj.navmap");

map.MapLayers.Add(sdcMapLayer);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

看一下效果。我们把整个北京地图生成了Basemap预先部署到移动设备上,而仅仅将建筑物图层发布成地图服务,如图,Basemap自动衬在底部,想一下,对于某些应用,你会不会有一种把所有不经常变化的内容全部生成Basemap的冲动?

哦,还需要说明一下,Basemap和其他Mobile 地图服务的空间参考需要是一致的。

使用ArcGIS Mobile SDK 9.3 开发移动设备应用-高级篇

开发移动桌面程序

说是移动桌面程序,跟不移动的桌面程序有区别么?所以,这一部分需要说的内容实在太少了,在移动设备上开发调试都可以过来了,桌面程序还有困难么?

当然,还是有一点点小地方需要注意。比如新建工程,一定不要采用默认设置.Net Framework为3.5版本。

使用ArcGIS Mobile SDK 9.3 开发移动设备应用-高级篇

常见问题

以下是Develop Help中提到的一些常见问题:

1. ArcGIS 9.3 的Mobile SDK 是否使用ArcGIS 9.2 发布的 Mobile Service

很遗憾,不能……

2. 我能用 Visual Studio 2003 开发ArcGIS Mobile 应用吗?

不能,ArcGIS 9.3 Mobile SDK需要.Net Compact Framework 2.0支持。

3. 我生成了Mobile 应用,但是为什么我看不到地图?

出现这个问题,如果你使用了地图缓存,检查你的缓存路径是否正确。如果是从服务器获取数据,那么检查你的 Mobile 地图服务是否正常工作。同时,确认你的Map控件的Datasource属性中的MobileService对象设置正确。

4. 为什么ArcGIS Mobile toolbox 没被添加到Visual Studio 2008 工程中来?

ArcGIS 9.3 Mobile SDK不能和.Net (Compact) Framework 3.5兼容,这是Visual Studio 2008的默认设置,注意在新建工程的时候选择正确的.Net Framework。

5. 如何获得开发ArcGIS Mobile 应用的最新信息?

http://edn.esri.com/index.cfm?fa=mobile.gateway

【结语】好了,到这里,ArcGIS Mobile SDK 9.3的整体内容已经基本介绍完成。ArcGIS Mobile作为ArcGIS Server的一部分发布,其与ArcGIS Server也的确是紧密相连。当然,事实上在某些条件下,ArcGIS Mobile还是可以脱离ArcGIS Server跑起来的。希望本文能给你开发移动GIS应用带来一点帮助!