热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【教程连载】ArcGISforiOS开发系列(3)–基础篇“HelloWorldMap”

搞定了环境配置,我们赶快开始ArcGISforiOS开发吧,按惯例首先创建一个“HelloWorldMap”程序,使用在上一节中我们新建好

    搞定了环境配置,我们赶快开始ArcGIS for iOS开发吧,按惯例首先创建一个“Hello World Map”程序,使用在上一节中我们新建好的项目。


第一步:配置界面。


    找到“ViewController_iPhone/iPad.xib”(分别针对了iPhone和iPad不同的布局),在内容窗口中可以看到只有一个空白的View视图,右下侧的工具窗口切换到组件对象,其中列举了Cocoa Touch库的全部可视化组件,定位到“View”对象,将其直接拖到内容窗口里,一个新的子视图就添加成功了,同时还添加了Constraints(Xcode4.5的新特性,宽高布局限制),把新添加的视图重命名为“Map View”。

图3-1 添加地图视图

    选中“Map View”视图,在右上侧的属性窗口切换到“inspector”项,修改其继承类为“AGSMapView”。

图3-2 修改Map View的继承类为AGSMapView

    然后“Command + s”保存。


第二步:添加代码。


1)             头文件“ViewController.h”,添加ArcGIS头文件引用,并声明一个地图控件的属性,代码如下:

#import
#import @interface TMViewController : UIViewController
@property(nonatomic,strong)IBOutletAGSMapView *mapView;
@end

    * @property关键字:公共属性标记,相当与“Get-Set”构造,4.0以前的版本中与synthesizes成对使用,4.0之后不再需要synthesizes。

    * IBOutlet关键字:界面 “插座”标记(以前的界面编辑工具Interface Builder,4.0后被集成进了Xcode,“插座”,表示与界面元素连接的属性对象。与之呼应的还有一个IBAction,表示界面元素的事件响应。

    不想敲太多这种机械代码的话,还可以在界面视图中完成,选中要连接的界面对象,右键拖动到代码窗口,会弹出一个小对话框,输入属性名称mapView,确定后会自动生成这个属性。


图3-3 自动生成属性


2)             打开类文件“ViewController.m” ,在viewDidLoad方法中添加如下代码:

- (void)viewDidLoad
{[superviewDidLoad];// //基础底图,使用的是北京捷泰科技有限公司提供的在线地图,更多地图请登陆ArcGIS Online中国网址查询(http://www.arcgisonline.cn)NSString *str_URL = @"http://www.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer";NSURL *url_Tiled = [NSURLURLWithString:str_URL];AGSTiledMapServiceLayer *tiledLyr = [AGSTiledMapServiceLayertiledMapServiceLayerWithURL:url_Tiled];[self.mapViewaddMapLayer:tiledLyrwithName:@"TiledLayer"];//动态图层,使用ArcGIS Online的全球人口数据NSString *str_URL_1 = @"http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer";NSURL *url_Dynamic =[NSURLURLWithString:str_URL_1];AGSDynamicMapServiceLayer *dynamicLyr =[AGSDynamicMapServiceLayerdynamicMapServiceLayerWithURL:url_Dynamic];UIView*dynamicLyrView = [self.mapViewaddMapLayer:dynamicLyrwithName:@"PopulationLayer"];//设置动态图层透明度dynamicLyrView.alpha = 0.3;//设定地图初始化显示范围为中国AGSEnvelope *chinaEnv = [AGSEnvelopeenvelopeWithXmin:7800000.00ymin:44000.00xmax:15600000.00ymax:7500000.00spatialReference:self.mapView.spatialReference];[self.mapViewzoomToEnvelope:chinaEnvanimated:YES];
}


第三步:绑定界面与代码。


    Xcode里绑定界面元素与代码对象的操作方法很艺术,选中界面视图的File’s Owner,右上侧属性窗口切换到“Connections”项,“Outlets”里有一个mapView对象,这就是我们在ViewController.h中声明的地图控件属性。拖动其右侧的空心小圆圈,牵引到左侧界面对象“Map View” 上,绑定成功后,小圆圈就变成实心了的,再次保存。

图3-3 绑定地图控件与代码对象

第四步:保存工程,“Command+ r ”运行并调试“HelloWorld Map”。

图3-4 在iPhone5模拟器中运行“Hello World Map”

    *REST和JSON大家都应该很熟悉了,ArcGIS Server发布的服务支持SOAP、REST两种结构,而Web和移动API中都使用其REST服务接口,比如上文中提到的地图服务:http://yourServer/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer。数据交互使用的是更为灵活高效的JSON格式,ArcGIS框架中集成了第三方库json-framework来负责中间层的数据转换,开发者一般不用操心




推荐阅读:

1、ArcGIS Runtime SDK for iOS开发系列教程(4)——如何让你的iOS应用具有GIS能力:http://www.cnblogs.com/esrichina/archive/2012/11/05/2750569.html

2、ArcGIS Runtime SDK for iOS开发系列教程(2)——MapViewDemo解析:http://www.cnblogs.com/esrichina/archive/2012/09/01/2666647.html





推荐阅读
  • 本文详细介绍如何在 macOS 上编译 FFmpeg 3.1.1,并将其集成到 iOS 项目中,包括必要的环境配置和代码示例。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • 本文探讨了在UC浏览器中调用分享面板后,图片无法正常显示的问题,并提供了详细的解决方法和代码示例。 ... [详细]
  • 本文提供了 Xcode 12.0 和 12.1(版本号 16B91)开发工具包的下载链接及安装步骤。通过 Finder 和快捷键,您可以轻松访问和配置 DeviceSupport 文件夹,确保 Xcode 正常运行。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文详细介绍了如何通过微信H5网页授权机制获取用户的code,并进一步获取用户的基本信息,包括必要的配置步骤和前端代码实现。 ... [详细]
  • 我在项目中发现设置了 GCC_NO_COMMON_BLOCKS = NO 的配置项,位于 Apple LLVM 编译器 3.1 的代码生成设置中。 ... [详细]
  • 作为一名在大型手机游戏公司工作的程序员,尽管主要负责游戏逻辑和内容的开发,但对iOS底层开发接触较少。现在有了iPhone和可以虚拟MAC环境的电脑,希望能找到有效的iOS开发学习路径。 ... [详细]
  • 本文档提供了在iOS开发中使用OClint进行静态代码分析的详细步骤,包括安装、更新和使用方法,以及相关资源链接。 ... [详细]
  • 文章目录17、less17-UpdateQuery-Errorbased-String18、less18-HeaderInjection-ErrorBased-string19、l ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有