Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在 iOS 项目中使用 ESRI ArcGIS SDK

在 iOS 项目中使用 ESRI ArcGIS SDK

作者头像
beginor
发布于 2020-08-10 03:21:37
发布于 2020-08-10 03:21:37
2K00
代码可运行
举报
运行总次数:0
代码可运行

在 iOS 项目中使用 ESRI ArcGIS SDK

ArcGIS SDK for iOS 简介

ArcGIS SDK for iOS 是 ESRI 公司针对 iOS 平台的 GIS 解决方案, 以 iOS Framework 的形式提供, 与 iOS 自带的 MapKit 相比, 提供了很多强大的地图以及分析功能, 如果你要想要在 iOS 平台上实现类似下图的应用, ArcGIS SDK for iOS 是不错的选择。

点击这里了解更多功能。

在 Xcode 项目中使用 ArcGIS SDK

下载并安装 ArcGIS SDK for iOS

在 iOS 项目中使用ArcGIS SDK for iOS, 需要有一个 ESRI 账户, 登录之后, 可以转到 ESRI ArcGIS Runtime SDK for iOS 的下载页面, 下载到的是一个 pkg 文件, OSX 系统下的一种安装格式, 类似于 Windows 系统下的 exe/msi , 双击即可安装。

Xcode 项目设置

ESRI 提供的 ArcGIS SDK for iOS 是 Framework 形式, 但是与 iOS 提供的 Framework 有些不同, 在 Xcode 项目中使用有些麻烦, 设置步骤如下:

1. 将 ArcGIS 添加到框架搜索路径

要将 ArcGIS Framework 添加到项目, 选择左边导航窗口的项目节点, 选择一个目标节点, 再选择编译设置标签, 如下图所示:

在编译设置标签的搜索框输入 Framework Search Paths 可以快速找到框架搜索路径设置, 双击右边的空白处, 点击 + 按钮并输入下面的路径:

$(HOME)/Library/SDKs/ArcGIS/iOS/**

注意: 如果在项目的 Valid Architectures setting 中有 armv7s 选项的话, 请删除这个选项, 这个选项是有 Xcode 针对 iPhone5 自动添加的, 但是 ArcGIS 库目前不包含 armv7s

2. 添加依赖项

ArcGIS 依赖于下面的框架和类库, 因此需要把它们添加到项目中:

  • CoreGraphics.framework
  • CoreLocation.framework
  • CoreText.framework
  • Foundation.framework
  • libc++.dylib
  • libz.dylib
  • QuartzCore.framework
  • MediaPlayer.framework
  • MobileCoreServices.framework
  • OpenGLES.framework
  • Security.framework
  • UIKit.framework

选择项目目标的 Build Phases 标签, 在 Link Binary with Libraries 节点, 点击 + 按钮, 添加上面列出的依赖项, 如下图所示:

3. 修改编译选项

为了确认能够正确的加载 ArcGIS framework , 需要在项目中添加一些编译标志 (build flags) 。

注意: 如果没有这些标志, 程序在使用 ArcGIS API 提供的类时可能会崩溃!

选择 Build Settings 标签, 在搜索框内输入 Other Linker Flags 可快速找到 Other Linker Flags 设置, 双击空白处, 会弹出一个文本框, 在文本框内输入 -all_load -ObjC -framework ArcGIS , 点击文本框外任意位置, 保存输入选项, 如下图所示:

4. 添加资源包

ArcGIS API 用到的资源文件, 比如 ESRI 和 Bind 的 Logo , GPS 位置图片等, 被整理打包成一个 ArcGIS.bundle 文件, 默认安装在 ${HOME}/Library/SDKs/ArcGIS/iOS/ArcGIS.framework/Versions/Current/Resources 目录, 需要手工将这个文件添加到项目中。

转到 XCode 的 File 菜单, 选择 Add Files to <project> 菜单项, 导航到 ${HOME}/Library/SDKs/ArcGIS/iOS/ArcGIS.framework/Versions/Current/Resources 目录, 选择 ArcGIS.bundle 文件, 最后点击 Add 按钮, 将 bundle 文件添加到项目。

注意: 在 OS X 系统下, ${HOME}/Library 目录默认是隐藏的, 可以通过在终端程序中输入命令 chflags nohidden ~/Library/ 来显示这个目录。

使用 ArcGIS Online 基础图层

项目设置完成之后, 使用 ArcGIS Online 的图层就很简单了, 比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)viewDidLoad {
    [super viewDidLoad];
    
    AGSTiledMapServiceLayer *tiledLayer =
    [AGSTiledMapServiceLayer
     tiledMapServiceLayerWithURL:[NSURL URLWithString:@"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer"]];
    [self.mapView addMapLayer:tiledLayer withName:@"Basemap Tiled Layer"];
    
    //Set the map view's layerDelegate to self so that our
    //view controller is informed when map is loaded
    self.mapView.layerDelegate = self;
}

在 Xamarin.iOS 项目中使用 ArcGIS SDK

要在 Xamarin.iOS 项目中使用 ArcGIS Runtime SDK , 需要先将 ArcGIS SDK 绑定成 Xamarin.iOS 类库项目, 这个在 Github 上已经有了,地址是: https://github.com/beginor/MonoTouch.ArcGIS , 有了这个绑定项目, 在 Xamarin.iOS 中使用 ArcGIS 就容易的多了。

下载并编译 ArcGIS iOS 绑定项目

访问 https://github.com/beginor/MonoTouch.ArcGIS , 选择右边的 Download Zip 链接或者 Clone in Desktop 链接, 都可以得到这个绑定项目, 推荐 fork 这个项目, 这样便于根据自己的需要进行更改。

下载之后用 XamarinStudio 打开 MonoTouch.ArcGIS.sln 解决方案, 可以看到这个解决方案包括两个项目, Binding 和 AGSTestCS 两个项目, 分别是 ArcGIS for iOS 的绑定项目以及测试项目, 如下图所示:

参照 ReadMe.md 文件的说明, 需要把 ArcGIS 文件从 ~/Library/SDKs/ArcGIS/iOS/ArcGIS.framework/Versions/Current/ 目录复制到 Binding 项目所在的目录, 并重命名为 libArcGIS.a ,然后编译这个项目, 如果没有错误的话, 会在 bin 目录内生成一个体积巨大的 dll 文件 MonoTouch.ArcGIS.dll , 这就表示 Binding 项目生成成功了, 虽然这个 dll 文件很大, 但是不用担心, 最终生成 ios 应用时, 编译器会将用不到的部分删除, 最终的应用程序不会很大, 一般会在 10m 以内。

现在可以生成并运行 AGSTestCS 项目, 可以看到一个地图应用在 iOS 模拟器启动, 这就表示一切都成功了!

使用 ArcGIS Online 基础图层

Binding项目只是对 ArcGIS API 的绑定, 因此对外暴露的 API 函数几乎不变, 不同的只是换成了 C# 的语法, 上面在 Xcode 中使用 ArcGIS Online 的基础图层的代码对应的 C# 版本如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public override void ViewDidLoad() {
   base.ViewDidLoad();
   // add a basemap tiled layer.
   var url = NSUrl.FromString("https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer");
   var tiledLayer = AGSTiledMapServiceLayer.TiledMapServiceLayerWithURL(url);
   this.MapView.AddMapLayer(tiledLayer, "Basemap Tiled Layer");
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在 Xamarin.iOS 项目中访问 ArcGIS 云端专题数据图层
本文介绍如何在 Xamarin.iOS 项目中使用使用 ArcGIS Server 云端专题数据, 假设你已经准备好了 ArcGIS Client Runtime SDK for iOS 和 MonoTouch.ArcGIS 绑定项目。
beginor
2020/08/10
1.7K0
在 Xamarin.iOS 项目中访问 ArcGIS 云端专题数据图层
​iOS Class Guard github用法、工作原理和安装详解及使用经验总结
iOS Class Guard是一个用于OC类、协议、属性和方法名混淆的命令行工具。它是class-dump的扩展。这个工具会生成一个symbol table,这个table在编译期间会包含进工程中。iOS-Class-Guard能有效的隐藏绝大多数的类、协议、方法、属性和 实例变量 名。iOS-Class-Guard不是应用安全的最终解决方案,但是它绝对能让攻击者更难读懂你的程序。iOS-Class-Guard会加大代码分析和runtime检查的难度,这个工具可以认为是一个简单基础的混淆方法。由于OC的架构决定了iOS应用程序的剖析相当简单,check out一下链接就知晓了:
iOS Magician
2023/12/02
4950
​iOS Class Guard github用法、工作原理和安装详解及使用经验总结
ArcGIS Maps SDK for JavaScript系列之一:在Vue3中加载ArcGIS地图
ArcGIS Maps SDK for JavaScript 是由 Esri 公司开发的一款用于构建交互式地图应用程序的 JavaScript 库。它提供了丰富的地图显示、分析和可视化功能,适用于各种场景。 目前,ArcGIS Maps SDK for JavaScript 提供两个主要版本:3.x 和 4.x。
九仞山
2023/10/14
1.3K0
ArcGIS Maps SDK for JavaScript系列之一:在Vue3中加载ArcGIS地图
ArcGIS Maps SDK for JavaScript系列之二:认识Map和MapView
在 ArcGIS Maps SDK for JavaScript 中,Map 和 MapView 是两个重要的概念,用于创建和展示地图应用程序。
九仞山
2023/10/14
1.1K0
ArcGIS Maps SDK for JavaScript系列之二:认识Map和MapView
iOS 了解Xcode Bitcode
看了以上内容,我们就可以对Bitcode有一个简单的了解了。那么如果我们项目中在使用某些Framework或.a的时候,遇到了类似笔者遇到的错误的时候,我们就需要查看所用的Framework或.a是否支持bitcode。
且行且珍惜_iOS
2022/05/13
1K0
iOS 了解Xcode Bitcode
【ArcGIS JS API + eCharts系列】实现二、三维迁徙图的绘制
本文主要介绍使用ArcGIS JS API 4.14和eCharts 4.7.0来实现在地图上绘制二维图表中的迁徙图的实现步骤,包括二维和三维。
X北辰北
2022/02/21
2.2K0
【ArcGIS JS API + eCharts系列】实现二、三维迁徙图的绘制
ArcGIS Maps SDK for JavaScript系列之四:添加自定义底图
Basemap类是ArcGIS Maps SDK for JavaScript中用于表示地图底图的核心类之一。底图是地图应用程序中用于显示地理数据的背景图层。它提供了基础地理信息,如道路、河流、地貌和地名等。Basemap类提供了一种将地图图层组织成可供用户选择的底图选项的方式。
九仞山
2023/10/14
1.1K1
ArcGIS Maps SDK for JavaScript系列之四:添加自定义底图
ArcGIS JS API 4.15渲染后台接口返回的数据,并进行点选查询
本文主要介绍下如何使用ArcGIS JS API对后台接口返回的数据进行渲染,文章中的后台返回数据使用单独的配置文件来处理,详情请看文章内容。
X北辰北
2022/02/22
2.2K0
ArcGIS JS API 4.15渲染后台接口返回的数据,并进行点选查询
ArcGIS API for JavaScript 4.18基于ES Modules的新开发方式@arcgis/core
ArcGIS API for JavaScript 4.18中新增加了一种基于ES Modules的新开发方式@arcgis/core,这篇文章就来介绍一下如何使用这种方式来进行开发。
X北辰北
2022/02/28
1.7K0
ArcGIS API for JavaScript 4.18基于ES Modules的新开发方式@arcgis/core
【测评】 使用@arcgis/cli脚手架和esri-loader方式进行ArcGIS JS API开发的测评
本文主要针对于在Vue和React项目中使用esri-loader和@arcgis/cli脚手架进行ArcGIS JS API开发时,比较两种方式的不同,供各位参考。
X北辰北
2022/02/22
1.5K0
【IOS开发进阶系列】Framework制作专题
http://blog.csdn.net/yongyinmg/article/details/41513917
江中散人_Jun
2023/10/16
6440
【IOS开发进阶系列】Framework制作专题
ArcGIS JS API 4.14实现地图加载图片
主要介绍如何用ArcGIS JS API 4.14实现在二维地图中添加图片的操作。
X北辰北
2022/02/22
4.9K0
ArcGIS JS API 4.14实现地图加载图片
ArcGIS中导入2000系的OSGB数据后发布服务,并在前端调用
本文在上一篇文章的基础之上,介绍下OSGB的倾斜摄影数据如何导入ArcGIS平台做数据处理、服务发布和前端ArcGIS JS API调用显示的一整套流程。
X北辰北
2022/02/22
1.7K0
ArcGIS中导入2000系的OSGB数据后发布服务,并在前端调用
iOS 高德地图开发详解
Demo地址 如果有所帮助记得关注,点Star demo中添加了查看路况功能,如果不需要,可以删除。
网罗开发
2021/01/29
2.8K0
iOS 高德地图开发详解
Arcgis for js加载天地图
天地图的切片地图可以通过esri.layers.TiledMapServiceLayer来加载,在此将之进行了一定的封装,如下:
牛老师讲GIS
2018/10/23
8.3K0
Arcgis for js加载天地图
【番外】 Vue中使用ArcGIS JS API 4.14开发
本文主要介绍如何在Vue项目中使用ArcGIS JS API进行开发,文中使用的JS API是目前最新版本的ArcGIS JS API 4.14,主要是在Vue项目demo中用JS API实例化了一张二维地图。
X北辰北
2022/02/21
3.4K4
【番外】 Vue中使用ArcGIS JS API 4.14开发
ArcGIS JS API 4.15实现地图加载图片(优化版)
主要介绍如何用ArcGIS JS API 4.15实现在二维地图中添加图片的操作。上一篇文章已经介绍了如何添加图片的四种方法,但是添加到地图上的图片在拖动时有些卡顿,所以本文又提出了另一种优化的方法。
X北辰北
2022/02/22
2.5K0
ArcGIS JS API 4.15实现地图加载图片(优化版)
使用现代化的脚本进行 ArcGIS JS API 开发
ArcGIS JS API 基于古老的 JavaScript 框架 Dojo 开发, dojo 虽然是曾经的王者, 但是2020年的前端开发, 早已是 Angular、 React 和 Vue 三大框架的天下, JavaScript 的新特性可以说是日新月异, 国内也几乎没有人基于 dojo 进行开发, 因此本文介绍如何使用现代化的脚本 (ES6, ES7, ES2018 等, 以下统称 ES6+, TypeScript) 进行 ArcGIS JS API 开发。
beginor
2020/09/07
2.5K0
使用现代化的脚本进行 ArcGIS JS API 开发
ArcGIS API for JavaScript应用开发
ArcGIS API for JavaScript 提供在线版API,4.x 是 ArcGIS API for JavaScript 的新一代版本,实现了2D和3D应用的完全集成,3.x是一个2D版本,编程思路差异还是比较大的。开发调试过程中,最好进行本地化部署。ArcGIS JavaScript API可以从Esri官网获取,需要先注册一个Esri全球账户。SDK本地化部署指在本地Web Server上的部署,在API文件夹arcgis_js_api\library\3.18\install_win.html中有官方的部署文档,基本过程如下:
IT技术小咖
2019/11/24
2.8K0
如何设计编写一个 SDK
App 的开发更偏向于用户层面,从 UI 展示到业务逻辑处理,全程处理用户的行为。而 SDK 面向的是开发者,开发更偏向于功能方面,注重功能的开发实现。不妨来看看 FinClip 移动端工程师整理的如何编写一个 SDK,还是很有参考价值。
Onegun
2021/12/15
1.4K0
如何设计编写一个 SDK
推荐阅读
相关推荐
在 Xamarin.iOS 项目中访问 ArcGIS 云端专题数据图层
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验