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

在 iOS 项目中使用 ESRI ArcGIS SDK

作者头像
beginor
发布于 2020-08-10 03:21:37
发布于 2020-08-10 03:21:37
2.1K00
代码可运行
举报
运行总次数: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 云端专题数据图层
【测评】 使用@arcgis/cli脚手架和esri-loader方式进行ArcGIS JS API开发的测评
本文主要针对于在Vue和React项目中使用esri-loader和@arcgis/cli脚手架进行ArcGIS JS API开发时,比较两种方式的不同,供各位参考。
X北辰北
2022/02/22
1.5K0
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.9K0
ArcGIS中导入2000系的OSGB数据后发布服务,并在前端调用
本文在上一篇文章的基础之上,介绍下OSGB的倾斜摄影数据如何导入ArcGIS平台做数据处理、服务发布和前端ArcGIS JS API调用显示的一整套流程。
X北辰北
2022/02/22
1.8K0
ArcGIS中导入2000系的OSGB数据后发布服务,并在前端调用
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.4K0
ArcGIS Maps SDK for JavaScript系列之一:在Vue3中加载ArcGIS地图
Arcgis for Silverlight学习(一)
1.地图的加载 arcgis server for silverlight 通过控件map实现地图的浏览功能。map控件的使用方法如下: <esri:Map x:Name="MyMap" WrapAround="True" IsLogoVisible="False" Extent="-15000000,2000000,-7000000,8000000" MouseMove="MyMap_MouseMove" Progress="MyMap_Progress"
水击三千
2018/02/27
1.1K0
ArcGIS Maps SDK for JavaScript系列之二:认识Map和MapView
在 ArcGIS Maps SDK for JavaScript 中,Map 和 MapView 是两个重要的概念,用于创建和展示地图应用程序。
九仞山
2023/10/14
1.2K0
ArcGIS Maps SDK for JavaScript系列之二:认识Map和MapView
Arcgis for js加载天地图
天地图的切片地图可以通过esri.layers.TiledMapServiceLayer来加载,在此将之进行了一定的封装,如下:
牛老师讲GIS
2018/10/23
8.5K0
Arcgis for js加载天地图
使用现代化的脚本进行 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.6K0
使用现代化的脚本进行 ArcGIS JS API 开发
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 JS API 4.15渲染后台接口返回的数据,并进行点选查询
本文主要介绍下如何使用ArcGIS JS API对后台接口返回的数据进行渲染,文章中的后台返回数据使用单独的配置文件来处理,详情请看文章内容。
X北辰北
2022/02/22
2.2K0
ArcGIS JS API 4.15渲染后台接口返回的数据,并进行点选查询
ArcGIS JS API 4.14实现地图加载图片
主要介绍如何用ArcGIS JS API 4.14实现在二维地图中添加图片的操作。
X北辰北
2022/02/22
5K0
ArcGIS JS API 4.14实现地图加载图片
【番外】 React中使用ArcGIS JS API 4.14开发
本文主要介绍如何在React项目中使用ArcGIS JS API进行开发,文中使用的JS API是目前最新版本的ArcGIS JS API 4.14,主要是在React项目demo中用JS API实例化了一张二维地图。
X北辰北
2022/02/21
1.8K0
【番外】 React中使用ArcGIS JS API 4.14开发
【ArcGIS JS API + eCharts系列】实现二、三维迁徙图的绘制
本文主要介绍使用ArcGIS JS API 4.14和eCharts 4.7.0来实现在地图上绘制二维图表中的迁徙图的实现步骤,包括二维和三维。
X北辰北
2022/02/21
2.2K0
【ArcGIS JS API + eCharts系列】实现二、三维迁徙图的绘制
【番外】 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开发
.NET Standard SDK 样式项目中的目标框架
.NET Standard 引用程序集的主要分发载体是 NuGet 包。 实现会以适用于每个 .NET 实现的各种方式提供。
张传宁IT讲堂
2020/10/19
1.6K0
代码管理| 手把手教你封装自己的静态库SDK
这里重点说下,怎样饮用Bundle中的图片资源。这里使用的是简写:@"JWJFramework.bundle/open"其中JWJFramework.bundle是Bundle的名称。
進无尽
2018/09/12
1.6K0
代码管理| 手把手教你封装自己的静态库SDK
ArcGIS JS API 4.15实现地图加载图片(优化版)
主要介绍如何用ArcGIS JS API 4.15实现在二维地图中添加图片的操作。上一篇文章已经介绍了如何添加图片的四种方法,但是添加到地图上的图片在拖动时有些卡顿,所以本文又提出了另一种优化的方法。
X北辰北
2022/02/22
2.6K0
ArcGIS JS API 4.15实现地图加载图片(优化版)
Arcgis for js加载百度地图
在前面的文章里提到了Arcgis for js加载天地图,在本节,继续讲解如何在Arcgis for js中加载百度地图。
牛老师讲GIS
2018/10/23
5.1K0
Arcgis for js加载百度地图
ArcGIS Maps SDK for JavaScript系列之四:添加自定义底图
Basemap类是ArcGIS Maps SDK for JavaScript中用于表示地图底图的核心类之一。底图是地图应用程序中用于显示地理数据的背景图层。它提供了基础地理信息,如道路、河流、地貌和地名等。Basemap类提供了一种将地图图层组织成可供用户选择的底图选项的方式。
九仞山
2023/10/14
1.2K1
ArcGIS Maps SDK for JavaScript系列之四:添加自定义底图
推荐阅读
相关推荐
在 Xamarin.iOS 项目中访问 ArcGIS 云端专题数据图层
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档