零、前言

ArcGIS Server 是开发网络地理信息系统应用的主要平台。过去,您可以从多种编程语言中进行选择,使用 ArcGIS Server 开发网络地图应用,包括 JavaScript、Flex 和 Silverlight。然而,Flex 和 Silverlight APIs 现在已经退役,剩下 JavaScript 作为在这个平台上开发应用的首选语言。它相对于其他语言的优势包括,你可以用它来构建网络和移动应用,而且它不需要安装插件:一切都在浏览器中本地运行。

这本书将教你如何使用用于 JavaScript 的 ArcGIS 应用编程接口构建基于网络的地理信息系统应用。使用实用的实践学习方式,您将学习如何使用 ArcGIS Server 构建功能齐全的应用,并在此过程中开发高需求的技能集。

您将学习如何创建地图和添加来自各种来源的地理图层,包括切片和动态地图服务。此外,您还将学习如何将矢量图形添加到地图中,并使用特征图层将地理特征流式传输到浏览器中。大多数应用还包括由 ArcGIS Server 作为任务实施的特定功能。您将了解如何使用 ArcGIS Server 提供的各种任务来执行常见的 GIS 操作,包括查询、特征识别、按属性查找特征、地理处理任务等。最后,您将了解到使用 ArcGIS for JavaScript 应用编程接口开发移动应用是多么容易。

这本书涵盖了什么

第 1 章HTML、CSS 和 JavaScript 介绍,在开始使用 ArcGIS for JavaScript API 开发 GIS 应用之前,介绍了基本的 HTML、CSS 和 JavaScript 概念。

第 2 章创建地图和添加图层,展示了如何创建地图和向地图添加图层。您将学习如何创建地图类的实例,如何向地图添加数据图层,以及如何在网页上显示这些信息。Map 是 API 中最基本的类,因为它为数据层和应用中发生的任何后续活动提供了画布。但是,在添加数据图层之前,您的地图是无用的。有几种类型的数据图层可以添加到地图中,包括切片图层、动态图层、特征图层和其他图层。在本章中,您还将了解关于这些图层类型的更多信息。

第三章向地图添加图形,演示如何在地图GraphicsLayer中显示临时点、线和多边形。GraphicsLayer是一个独立的图层,始终位于任何其他图层的顶部,并存储与地图相关的所有图形。

第四章特征图层,描述FeatureLayer。这继承了GraphicsLayer,但提供了额外的功能,例如执行查询和选择的能力。特征图层也用于特征的在线编辑。特征图层不同于切片和动态地图服务图层,因为特征图层将几何信息带到客户端计算机,由网络浏览器绘制和存储。特征图层有可能减少到服务器的往返行程。客户端可以请求所需的功能,并对这些功能进行选择和查询,而无需向服务器请求更多信息。

第 5 章使用小部件和工具栏,介绍了可以放入应用以提高工作效率的现成小部件。其中包括底图图库。书签、打印和概览地图用户界面组件。此外,用于 JavaScript 的 ArcGIS API 还包括帮助器类,用于在应用中创建工具栏,如导航和绘图工具栏。

第 6 章执行空间和属性查询,介绍了 ArcGIS Server 查询任务,该任务允许您对地图服务中已公开的数据图层执行属性和空间查询。您还可以组合这些查询类型来执行组合属性和空间查询。

第 7 章识别和查找特征涵盖了在任何 GIS 应用中都可以找到的两种常见操作:单击地图上的特征进行识别,或执行查询以定位具有特定属性值的特征。在任一种情况下,都会返回关于特定功能的信息。在本章中,读者将学习如何使用 IdentifyTask 和 FindTask 对象来获取有关功能的信息。

第 8 章将地址转换为点并将点转换为地址,介绍了使用Locator任务执行地理编码和反向地理编码。地理编码是将坐标分配给地址的过程,而反向地理编码将地址分配给坐标。

第 9 章方向和路线介绍了如何访问 ArcGIS Server 网络分析服务,对街道网络进行分析,例如寻找从一个地址到另一个地址的最佳路线、寻找最近的学校、识别某个位置周围的服务区域,或者用服务车队响应一组订单。

第 10 章地理处理任务,允许您使用模型构建器或 Python 脚本代码执行在 ArcGIS Pro 桌面软件中定义的自定义地理处理工作流。一旦作为地理处理服务发布到 ArcGIS Server,就可以从网络地图应用中访问这些服务。这是一个非常强大的特性,我们将在本章中讨论。

第 11 章几何操作介绍了如何使用 ArcGIS Server 几何服务及其客户端对应的几何引擎来执行常见的几何操作,例如缓冲特征和从一个坐标系重新投影到另一个坐标系。

第 12 章与 ArcGIS Online 的集成,详细介绍了如何使用 ArcGIS API for JavaScript 访问由ArcGIS.com创建的数据和地图,该网站是一个处理地图和其他类型地理信息的网站。在这个网站上,您可以找到构建和共享地图的应用。您还将发现有用的底图、数据、应用和工具,您可以与您可以加入的社区一起查看和使用。对于应用开发人员来说,真正令人兴奋的消息是,您可以使用 ArcGIS for JavaScript API 将ArcGIS.com内容集成到您定制开发的应用中。本章向您展示了如何。

第 13 章创建移动应用,介绍了如何使用 ArcGIS for JavaScript API 构建移动 GIS 应用。目前为 iOS 和 Android 设备提供 ArcGIS Server 支持。在本章中,您将了解通过使用 Dojo Mobile 使网络映射应用成为可能的应用编程接口的紧凑构建。

附录展望第 4 版的 ArcGIS for JavaScript API,为您提供了该 API 第 4 版的大致内容。这是与 3.x 版本并行开发的应用编程接口的完全返工

这本书你需要什么

要完成本书中的活动,您需要访问网络浏览器——最好是谷歌浏览器或火狐浏览器。每章都包含旨在补充所呈现材料的实践。您将使用用于 JavaScript 沙盒的 ArcGIS 应用编程接口来编写和测试您的代码,从而完成这些练习。沙盒可以在https://developers . ArcGIS . com/JavaScript/3/sandbox/sandbox . html找到。所有实践都将访问公开可用的 ArcGIS Server 实例,因此您无需自己安装 ArcGIS Server。

这本书是给谁的

这本书是为希望使用 ArcGIS Server 和 JavaScript 应用编程接口开发网络和移动地理信息系统应用的应用开发人员编写的。它主要面向初级和中级地理信息系统开发人员或更传统的应用开发人员,他们过去可能没有开发过地理信息系统应用,但现在负责在该平台上实施解决方案。之前没有使用 ArcGIS Server、JavaScript、HTML 或 CSS 的经验是意料之中的,但这肯定会有所帮助。

约定

在这本书里,你会发现许多区分不同种类信息的文本风格。以下是这些风格的一些例子,以及对它们的含义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:“我们可以通过使用include指令来包含其他上下文。”

代码块设置如下:

function computeServiceArea(evt) {
  map.graphics.clear();
  var pointSymbol = new SimpleMarkerSymbol();
  pointSymbol.setOutline = new 
  SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 
  0]), 1);
  pointSymbol.setSize(14);
  pointSymbol.setColor(new Color([0, 255, 0, 0.25]));      
}

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

function computeServiceArea(evt) {
  map.graphics.clear();
  var pointSymbol = new SimpleMarkerSymbol();
  pointSymbol.setOutline = new 
  SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 
  0]), 1);
  pointSymbol.setSize(14);
 pointSymbol.setColor(new Color([0, 255, 0, 0.25]));      
}

新术语和重要词汇以粗体显示。您在屏幕上看到的单词,例如菜单或对话框中的单词,会出现在文本中,如下所示:“单击“下一步”按钮将您移动到下一个屏幕”。

Warnings or important notes appear like this. Tips and tricks appear like this.

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。要给我们发送一般反馈,只需发送电子邮件feedback@packtpub.com,并在您的邮件主题中提及书名。如果您对某个主题有专业知识,并且对写作或投稿感兴趣,请参见我们位于www.packtpub.com/authors的作者指南。

下载示例代码

你可以从你在http://www.packtpub.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。您可以按照以下步骤下载代码文件:

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的“支持”选项卡上。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书的名称。

  5. 选择要下载代码文件的书籍。

  6. 从您购买这本书的下拉菜单中选择。
  7. 点击代码下载。

下载文件后,请确保使用最新版本的解压缩文件夹:

  • 视窗系统的 WinRAR / 7-Zip
  • zipeg/izp/un ARX for MAC
  • 适用于 Linux 的 7-Zip / PeaZip

这本书的代码包也在 GitHub 上托管在https://GitHub . com/PacktPublishing/Building-Web-and-Mobile-ArcGIS-Server-Applications-with-JavaScript-Second-Edition。我们还有来自丰富的图书和视频目录的其他代码包,可在https://github.com/PacktPublishing/获得。看看他们!

下载这本书的彩色图片

我们还为您提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。彩色图像将帮助您更好地理解输出中的变化。您可以从https://www . packtpub . com/sites/default/files/downloads/Building-Web-and-Mobile-ArcGIS-Server-Applications-with-JavaScript-Second-Edition _ color images . pdf下载此文件。

正误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现一个错误,也许是文本或代码中的错误,如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表提交表格链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

海盗行为

互联网上版权材料的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。请通过copyright@packtpub.com联系我们,获取疑似盗版资料的链接。我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以在questions@packtpub.com联系我们,我们将尽最大努力解决问题。