ArcGIS Runtime SDK for iOS 开发之加载地图
来源:互联网 发布:闲鱼 淘宝介入 卖家赢 编辑:程序博客网 时间:2024/05/18 00:01
本篇文章将为大家介绍如何在我们自己的app中加载并显示地图。
我们知道,在应用程序中显示地理信息数据最基本的方式就是在地图上进行显示。而API为我们提供了一个叫做map view的用户界面组件,使得我们可以将来自Bing Maps、Open street map、ArcGIS Server map 和OGC WMS等网络服务器上的地图混合显示。
那么接下来就开始跟我一步步的开始加载地图。不过首先你要保证已经按照我上一篇文章进行了基本的开发环境安装和配置。
1、添加map view
在导航栏区域选择Main.storyboard后,在view Controller Scene中拖入一个新的View。并在右侧导航窗口中,将加入的VIew定义为AGSMapView如下图所示。
2、将map view 与视图控制器关联
为mapview 添加outlet,如下图所示,outlet命名为mapView。
此时,你如果试图build程序,那么你将会遇到编译错误,这是因为你刚才在程序中引用的AGSMapView还没有被定义,必须引用ArcGIS.h才可以,在头文件中引用该文件后,你便可以访问ArcGIS Runtime SDK for iOS中的任何类。
3、在map view中添加内容
在map view中显示内容,可以通过在viewDidLoad中添加代码实现。所以你有什么好的想法,尽可以在这个地方尽情表达了。
这里我们添加以下代码来显示世界地图,通过调用arcgis online提供的地图服务来实现。
- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. NSString *baseMapUrl = @"http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"; AGSTiledMapServiceLayer *baseMap = [[AGSTiledMapServiceLayer alloc] initWithURL:[NSURL URLWithString:baseMapUrl]]; [self.mapView addMapLayer:baseMap];
}当运行程序后,获得结果如下图所示:(本程序在ipad模拟器上进行)
至此,我们的程序便拥有了显示地图的功能!怎么样,是不是很简单呢?
//下面内容为笔者根据苹果最近发布新版导致上述地图不能显示问题最新添加的。
注:苹果推出ios 9、xcode7以后,发生了一些新变化,同时也导致利用上述方法加载地图无法显示。那么该如何解决呢,看了下esri官网,做以下两部分修改即可。
修改1: 关闭bitcode
bitcode是苹果最新引进的一个系统编译选项,xcode7默认情况下是将bitcode设置为enabled(开启)状态的,但这项技术在ArcGIS Runtime SDKs for iOS10.2版本和Quartz Beta1中是不支持的。虽然可以在这些版本中进行编译的app的真机调试,但是你却不能通过app store来讲app部署到设备上。
关闭的方法是,在build setting中,在搜索栏中输入bitcode,然后找到 Enable bitcode选项,设置为NO即可。
修改2:处理app 传输安全问题
苹果从ios9.0以后通过引进一种叫做App Transport Security(ATS)的特性来强化其安全性。这种更加严格的政策阻止你使用普通的http请求,而是强制你使用支持向前保密的HTTPS请求连接,这种新的功能在默认状态下是开启的,所以任何的http请求尝试都会以失败告终。
为了摆脱这种安全政策的限制,你可以通过讲一下内容添加到系统中info.plist中的<dict> </dict>中去:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>arcgisonline.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>arcgis.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> </dict> </dict>具体的添加位置如下图所示:
- ArcGIS Runtime SDK for iOS 开发之加载地图
- ArcGIS Runtime SDK for iOS开发之创建离线地图
- ArcGIS Runtime SDK for iOS开发之地图图层-动态地图服务层
- ArcGIS Runtime SDK for iOS 开发之地图范围(map extent)
- ArcGIS Runtime SDK for IOS 开发之启程篇
- ArcGIS Runtime SDK for iOS开发介绍
- ArcGIS Runtime SDK for iOS开发地图图层-切片地图服务图层
- ArcGIS Runtime SDK for iOS开发地图图层-影像地图服务图层
- ArcGIS Runtime SDK for iOS开发地图图层-图形图层
- ArcGIS Runtime SDK for iOS移动开发地图图层-草图层
- ArcGIS Runtime SDK for iOS开发系列教程
- ArcGIS Runtime SDK for iOS开发-展示callout
- ArcGIS Runtime SDK for iOS移动开发之WMS图层
- ArcGIS Runtime SDK for iOS开发之-显示你的位置
- ArcGIS Runtime SDK for iOS之Maps和Layers
- ArcGIS Runtime SDK for iOS之符号和渲染
- ArcGIS Runtime SDK for iOS 2.2发布
- ArcGIS Runtime SDK for iOS 升级介绍
- [LeetCode] 018. 4Sum (Medium) (C++/Java/Python)
- 二 spring源码分析---资源模块接口设计
- Oracle服务端安装注意事项
- 循环-18. 龟兔赛跑(20)
- 花还是花,粪还是粪
- ArcGIS Runtime SDK for iOS 开发之加载地图
- Tomcat7: Can't load IA 32-bit .dll on a AMD 64-bit platform解决
- test the php code
- 素数筛
- 五个常用过滤器
- Android screenrecord
- java 配数据源连接池详解
- 第16章 进程管理
- 直接拿来用!最火的Android开源项目(一)