一份耕耘一份收获,相信我们可以做得越来越好,眼界越来越高!在上一篇关于开发ArcGIS for iOS如何搭建环境之后,接下来做的事情是具体的来加载地图包到我们的设备中,这里我采用的是使用离线地图包,关于如何制作地图包这一块,可以参看http://resources.arcgis.com/en/help/main/10.2/index.html#//00660000045q000000 ,不过这一块最好请专业人士! 好了,言归正传,本篇博客主要介绍如何将已经生成好了的离线地图文件(.tpk--basemap;.geodatabase)加载到项目中运行起来的其中一种方法。
主要分成两块:
1、如何加载.tpk文件
2、如何加载.geodatabase文件
这两个文件都是将之放入.bundle文件中,当然也有一种方法是不放在bundle文件中,但是试验了一下工程没能成功的找到文件,故此,这里我们采用这样的方式。
1、如何加载切片图.tpk文件以显示
把文件包放在一个bundle 文件中,之后将生成的这个包拖放倒工程中,然后再在代码中可以提供完整的包路径,具体如下所示:
代码:
<pre name="code" class="objc">NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyBundle.bundle/WildlifeHabitat.tpk"];
AGSGDBGeodatabase *gdb = [AGSGDBGeodatabase alloc]initWithPath:path error:(NSError *error);
2、加载.geodatabase文件(假定该文件的文件名为:WildlifeHabitat.geodatabase)
同样和上边加载.geodatabase的方法类似,补充一点的是,该处说明的.geodatabase文件是通过ArcGIS for Desktop生成的。具体的步骤为:
1>使用相应的类来打开geodatabase,该类有一些方法可以允许在geodatabase文件中列出特征列表和属性值
AGSLocalTiledLayer* layer = [AGSLocalTiledLayer localTiledLayerWithPath:path];[self.mapView addMapLayer:layer withName:@"base Tiled Layer"];
2>为了从一个geodatabase文件来创建特征层(feature layer),首先,使用geodatabase来接收一个特征列表;其次,从一个特征表创建一个特征层
@property (strong,nonatomic) AGSGDBFeatureTable *localFeatureTable;
@property (strong,nonatomic) AGSFeatureTableLayer *localFeatureTableLayer;
self.localFeatureTable = [[geodatabase featureTables] objectAtIndex:0];
<pre name="code" class="objc"><span style="font-family: Arial, Helvetica, sans-serif;">self.</span><span style="font-family: Arial, Helvetica, sans-serif;">localFeatureTableLayer = [[AGSFeatureTableLayer alloc] initWithFeatureTable:localFeatureTable];</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="objc">[self.mapView addMapLayer:self.localFeatureTableLayer withName:@"feature Layer"];
完成了以上步骤就实现了将两个离线地图文件给加载到项目文件中
AGSLocalTiledLayer* layer = [AGSLocalTiledLayer localTiledLayerWithPath:path];
[self.mapView addMapLayer:layer withName:@"base Tiled Layer"];