ArcGIS RunTime SDK For ios 10.1.1學習筆記(一)HelloMapWorld

ufolr原創,轉載請註明:

轉載自ufolr的博客 原文連接:http://blog.csdn.net/ufolr/article/details/8876176


         由於官方博客的教程是針對2.3版本SDK,對於最新的10.1.1版本並不完全適用,而作爲一個新手,又很難知道如何處理新舊版本使用的差別,所以我寫這片文章一方面方便新手,一方面當作筆記方便自己,本人也是新人所以希望與大家共勉之。其中很多內容借鑑了官網博客的內容。

環境搭建很簡單,首先你需要MacOS10.6以上系統,安裝xcode和ios sdk(xcode4.5後自帶ios sdk),然後安裝ArcGIS RunTime SDK For ios.安裝完成環境搭好了,然後就可以開始HelloMapWorld之旅了。

根據官方博客的內容,我們首先建立一個新的項目並配置好項目。

         啓動 Xcode,新建一個iOS項目,選擇Single View Application(單視圖模板),接下來填寫名稱、機構信息等,其中“Class Prefix”是類的前置標識名稱,“Device”選擇對應的設備,勾上“Use Automatic Reference Counting” 選項可以簡化手動的內存管理、“UseStoryboard”和“include Unit Tests”兩項暫不選擇,避免增加新手的入門負擔。 


Next選擇項目的保存路徑後,“HelloMapWorld”就創建好了,然後對項目進行配置,引入AGS4ios的框架:


一、項目配置

第一步:添加 ArcGIS框架引用,選擇項目Targets,在“Build Setting”裏搜索“Framework Search Paths”,雙擊進行編輯,添加 $(HOME)/Library/SDKs/ArcGIS/iOS/**


第二步:添加其他引用,由於 ArcGIS框架自身也引用很多iOS基礎框架,需要在“Build Phases”的“Link Binary With Libraries”裏添加以下引用:

  •   UIKit.framework

  •   Foundation.framework

  •   CoreGraphics.framework

  •   CoreLocation.framework

  •   QuartzCore.framework

  •   CoreText.framework (v1.8新引入)

  •  libc++.dylib (10.1.1未使用libstdc++)

  •   MediaPlayer.framework (v2.0新引入)

  •   MobileCoreServices.framework (v2.0新引入)

      OpenGLES.framework(10.1 新引入)

  •   libz.dylib (v2.1新引入)

  •   Security.framework (v2.1新引入


第三步:修改編譯標記,ArcGIS框架要正常運行還需要添加編譯標記,在“Build Setting”裏搜索“Other Linker Flags”,雙擊進行編輯,添加:-all_load -ObjC -framework ArcGIS。 


         至此我們需要的基本環境就配置好了,當然如果有需要,你還可以加入AGS提供的資源包“ArcGIS.bundle裏面包含常用的圖片、視圖和語言包資源 。

資源包位於${HOME}/Library/SDKs/ArcGIS/ArcGIS.framework/Versions/Current/Resources 

二、程序設計

1、配置界面 :

          找到“ViewController_iPhone/iPad.xib”(分別針對了iPhoneiPad不同的佈局),在內容窗口中可以看到只有一個空白的View視圖,右下側的工具窗口切換到組件對象,其中列舉了Cocoa Touch庫的全部可視化組件,定位到“View”對象,將其直接拖到內容窗口裏,一個新的子視圖就添加成功了,同時還添加了Constraints(Xcode4.5的新特性,寬高佈局限制).


           選中“Map View”視圖,在右上側的屬性窗口切換到“inspector”項,修改其繼承類爲AGSMapView”。此時子view的名字會自動變更爲Map View ,如果沒有自動變更請手動修改爲“Map View 

*”AGS”標示是ArcGIS命名空間的縮寫,也是ArcGIS for iOS接口的特徵之一。 


Command + s 保存。界面配置就此大功告成下面就開始敲代碼了。

2、添加代碼:

1) 頭文件“ViewController.h”,添加ArcGIS頭文件引用,並聲明一個地圖控件的屬性,代碼如下: 

#import <UIKit/UIKit.h>
//Import the header file for ArcGIS framework
#import <ArcGIS/ArcGIS.h>
@interface TMViewController : UIViewController
@property(nonatomic,strong)IBOutlet AGSMapView *mapView;
@end


*@property關鍵字:公共屬性標記,相當與“get-set”構造,4.0以前的版本中與synthesizes成對使用,4.0之後不再需要synthesizes

*IBOutlet關鍵字:界面 “插座”標記(以前的界面編輯工具Interface Builder,4.0後被集成進了Xcode,“插座”,表示與界面元素連接的屬性對象。與之呼應的還有一個IBAction,表示界面元素的事件響應。 

        不想敲太多這種機械代碼的話,還可以在界面視圖中完成,選中要連接的界面對象,右鍵拖動到代碼窗口,會彈出一個小對話框,輸入屬性名稱mapView,確定後會自動生成這個屬性。 

2) 打開類文件“ViewController.m” ,在viewDidLoad方法中添加如下代碼:

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    //添加代碼
    //基礎底圖,使用的是北京捷泰科技有限公司提供的在線地圖,更多地圖請登陸 ArcGIS Online 中國網 址查詢(http://www.arcgisonline.cn)
    NSString *str_URL = @"http://www.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer";
    NSURL *url_Tiled = [NSURL URLWithString:str_URL];
    AGSTiledMapServiceLayer *tiledLyr = [AGSTiledMapServiceLayer tiledMapServiceLayerWithURL:url_Tiled];
    [self.mapView addMapLayer:tiledLyr withName:@"Tiled Layer"];
    //
    //動態圖層,使用ArcGIS Online的全球人口數據
    NSString *str_URL_1 = @"http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/Map Server";
    NSURL *url_Dynamic = [NSURL URLWithString:str_URL_1];
    AGSDynamicMapServiceLayer *dynamicLyr = [AGSDynamicMapServiceLayer dynamicMapServiceLayerWithURL:url_Dynamic];
    [self.mapView addMapLayer:dynamicLyr withName:@"Population Layer"];//特別注意這裏由於10.1版本中沒有AGSLayerView,去掉官網教程中的UIView *dynamicLyrView =
    //設置動態圖層透明度 dynamicLyrView.alpha = 0.3;
    // //設定地圖初始化顯示範圍爲中國
    AGSEnvelope *chinaEnv = [AGSEnvelope envelopeWithXmin:7800000.00
                                                     ymin:44000.00 xmax:15600000.00 ymax:7500000.00
                                         spatialReference:self.mapView.spatialReference]; [self.mapView zoomToEnvelope:chinaEnv animated:YES];
}

3、綁定界面於代碼:

Xcode 裏綁定界面元素與代碼對象的操作方法很藝術,選中界面視圖的Files Owner,右上側屬性窗口切換到“Connections”項,“Outlets”裏有一個mapView對象,這就是我們在ViewController.h中聲明的地圖控件屬性。拖動其右側的空心小圓圈,牽引到左側界面對象“Map View” 上,綁定成功後,小圓圈就變成實心了的,再次保存。 


至此,所有工作都完成了,保存修改,然後Command + r調試運行程序。你就可以在模擬器中看到你的第一次了: HelloMapWorld。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章