zoukankan      html  css  js  c++  java
  • ArcGIS Runtime SDK for iOS开发系列教程(2)——MapViewDemo解析

          安装完ArcGIS Runtime SDK for iOS后,系统会自带一个支持ArcGIS Runtime SDK的项目MapViewDemo。路径为:${HOME}/Library/SDKs/ArcGIS/Samples/MapViewDemo

          打开MapViewDemo文件夹下的MapViewDemo.xcodeproj项目文件,可以在Xcode中看到项目文件结构如图

                                                                                     图1 MapViewDemo文件结构

    下面我们来介绍下MapViewDemo中文件结构

    1.ArcGIS.bundle(包)是一个内部结构按照标准规则组织的ArcGIS资源目录(使用方法如:ArcGIS.bundle/GpsDisplay.png)。解压后可以看到以下资源:

                                                                                    图2 ArcGIS.bundle包含的资源

    其中Resources目录是应用程序本地化的一些设置

                                                                            图3 ArcGIS.bundle中用于应用程序本地化的资源

          其实,iOS的应用也都是通过bundle进行封装的,只不过对应的bundle类型为Application而已。Finder会把这个bundle当做一个文件显示给我们,因为这个bundle自身也是一个package,而Mac系统会把所有的package当做一个文件显示给用户,从而防止用户误操作导致程序文件损坏或丢失。

    2.Classes文件夹,用来存放我们编写的代码,包括所有的Objective-C类,也可以通过创建子文件夹进行分类。该demo中包含两个类:MapViewDemoViewController(视图控制类)和MapViewDemoAppDelegate(应用程序代理类)。

          在每一个IOS应用程序都有一个实现UIApplicationDelegate协议的AppDelegate类,用来通过从iOS接收消息的方式来跟踪应用程序的状态变化。如,在开始的时候就运行– applicationDidFinishLaunching方法,在结束的时候运行– applicationWillTerminate方法。它还可以让你确定什么时候接电话,或者什么时候内存将满等。

    3.Other Sources文件夹,用来存放Objective—C类之外的源代码文件。通常,它包含了MapViewDemo_Prefix.pch和main.m文件。

          *.pch文件表示预编译头文件(precompiled header),包含了项目中所使用的来自外部框架的一组头文件。Xcode会预编译包含在此文件中的头文件,以减少项目编译时间。

          main.m文件包含应用程序的main()方法,一般不需要修改。

    4.Resources文件夹,用来存放应用程序的非代码文件。如:应用程序图标文件、图片资源、声音影片资源、文本文件等。

          由于IOS应用程序在自己的沙盒中运行,因此需要将应用程序所需的文件资源保存在此处。

          MapViewDemoViewController.xib文件是应用程序的界面视图文件,可以使用Interface Builder(用于应用程序界面设计的工具)进行编辑,如拖放控件等。

          MainWindow.xib是应用程序界面构建的主文件,默认不需要修改。

          MapViewDemo-Info.plist包含应用程序相关配置信息的属性列表。

          Resources-iPad是构建iPad设备应用界面所需的文件。

    5.Frameworks,是应用程序需要使用到的框架或者库文件。可以包含代码、图像、声音文件等资源,5中框出来的框架和库就是MapViewDemo这个项目需要用的框架和库文件。

          其中*.a为静态库、*.dylib为动态库。

          该文件夹下添加的任何框架和库都将连链接到应用程序中,并且代码将能够使用包含在该框架或者库中的对象、函数和资源。

    6.Products,存放项目编译时生成的应用程序。

          MapViewDemo.app是该项目的唯一产品,红色表明无法找到该文件,需要连接设备编译

    以上就是MapViewDemo这个项目包含的文件以及他们的作用,下面我们运行看看效果,在虚拟机中使用window键+R运行项目,效果如下图

            接下来,我们来看MapViewDemo中的代码部分

            每一个Objective-C类都包含两部分,类声明(*.h)和类实现(*.m)

            其中,应用程序代理类MapViewDemoAppDelegate的声明如下:

           Objective-C中使用@interface和@end关键字来声明一个类,以上MapViewDemoAppDelegate类是一个实现了实现UIApplicationDelegate协议的NSObject类,并定义了用于界面构建的输出口UIWindow和视图控制器MapViewDemoViewController。

           #import表示头文件包含,IBOutlet是输出口关键字,retain、nonatomic跟内存管理相关。

           关于Objective-C的语法后面专门来讲,大家也可以参考网络上关于Objective-C的资源。     

           MapViewDemoAppDelegate的实现

          Objective-C中使用@implementation和@end关键字来实现一个类。

          @synthesize关键字类似于对象的setter,getter 方法。

          在应用程序入口applicationDidFinishLauching函数中,实现界面创建,使用addSubView的方法将视图控制器中的界面元素添加到视图中并设置显示。

          dealloc用于应用程序关闭时对象销毁。

          视图控制器类的声明

           MapViewDemoViewController:UIViewController<AGSMapViewLayerDelegate>{}表明MapViewDemoViewController是继承与视图控制类,并实现了AGSMapViewLayerDelegate协议。AGSMapView、AGSDynamicMapServiceLayer等就是ArcGIS Runtime SDK提供的用于访问ArcGIS的GIS功能的Objective-C类,类似于Flex等其他平台的API的对象。

           Objective-C中使用IBAction来声明一个方法。

           -(IBAction)opacitySliderValueChanged(id)sender;是MapViewDemoViewController类的一个方法,用于拖动滑块改变动态图层的透明度。

           视图控制器类实现

             如果你使用过基于REST接口的ArcGIS API,是不是感觉非常熟悉呢,在IOS中这个接口的使用都是类似。

             我们不难理解,在视图创建完成后应用程序完成了切片图层的初始化、动态图层初始化以及在视图中加载、投影、显示范围设置等操作。

             -(IBAction) opacitySliderValueChanged:(id)sender{self.dynamicLayerView.alpha=((UISlider *)sende).value;}用于实现拖动滑块改变图层透明度的操作

             -(void) mapViewDidLoad:(AGSMapView*)mapView{[self.mapview.gps.start];} 用于实现AGSMapViewLayerDelegate协议中的mapViewDidLoad:方法,作用就是在地图加载完成后,开启ArcGIS Runtime SDK自带的GPS定位功能。

            总结:本讲主要向大家介绍ArcGIS Runtime SDK for iOS自带例子的文件结构与代码逻辑,下一讲我们将给大介绍Objective-C语法基础,欢迎大家继续关注!

  • 相关阅读:
    前端(移动端)开发沉思录
    我的世界观—学习与世界观
    学习一门新的语言和平台相当于学习一个新的世界观
    股票:格局、模式、结构与策略
    资本市场世界观
    投资的道与术:投资投的是自己的修为
    关心把事情做得正确,而不是关心赚钱--《股票作手回忆录》第十一章--投资股票的道与术
    js字符串截取函数slice()、substring()、substr()
    推荐一个好的Redis GUI 客户端工具
    sometimes-ever js中创建数组,并往数组里添加元素
  • 原文地址:https://www.cnblogs.com/esrichina/p/2666647.html
Copyright © 2011-2022 走看看