ArcGis JS 4.24离线地图部署详细过程-前端

说明

适用于需要在离线环境无网的情况下,访问地图资源,在前端进行地图开发功能

下载ArcGis离线资源包

  1. 在官方文档中可以发现提供了如何在离线环境下实现地图部署的说明,要求我们去下载包,链接如下:
    https://developers.arcgis.com/downloads/#javascript
  2. 直接选择最新版本4.24,其中一个是API下载链接,另一个是说明文档,在说明文档中会指导如何部署,可以不用下载,根据本文走即可。
    官方说明
    下载界面

将下载后的文件放到tomcat上

  1. 下载完成后进行解压,我们可以得到下面的文件夹4.24
    在这里插入图片描述
  2. 将4.24整个文件夹放到tomcat目录下的webapps当中
    在这里插入图片描述

配置

  1. 我们根据官方文档来进行配置
  2. 在任意一处地方创建一个js文件,该js文件作用是修改4.24中的某些代码。.
  3. 在js文件中copy下面代码
  4. 一共有2处需要修改的地方 分别是
  • localHost 此处修改为tomcat的访问url地址,根据你自己的实际端口号进行修改
  • 还有一处是jssdkDownloadLocation = isWindows
    ? path.join(“H:”, “apache-tomcat-8.5.66”, “webapps”, “4.24”) 此处修改为你tomcat所在的路径即可
    在这里插入图片描述
    在这里插入图片描述
// --------------------------------------------------------------------
// update-documentation.js
//
// Helper script to replace the link and script tags such as:
//
// <link rel="stylesheet" href="https://js.arcgis.com/4.24/esri/themes/light/main.css">
// <script src="https://js.arcgis.com/4.24/"></script>
//
// found in the ArcGIS API For JavaScript SDK Samples
//
// Note: requires node version v14.17.0 and npm version 6.14.13 or higher.
// The fs-extra and glob modules are also required, which can be installed using the
// following command: npm install fs-extra glob
// --------------------------------------------------------------------
/* prettier-ignore */
const path = require("path"),
  // --------------------------------------------------------------------
  // fs-extra 10.0.0 or higher
  // https://www.npmjs.com/package/fs-extra
  // --------------------------------------------------------------------
  fs = require("fs-extra"),
  os = require("os"),
  // --------------------------------------------------------------------
  // glob 7.1.7 or higher
  // https://www.npmjs.com/package/glob
  // --------------------------------------------------------------------
  glob = require("glob"),
  // --------------------------------------------------------------------
  // hostname to replace https://js.arcgis.com/4.24 in all the samples such as:
  // www.example.com
  // apiDirectory would be the virtual directory in the web server hosting
  // the ArcGIS API for JavaScript
  // --------------------------------------------------------------------
  localHost = "http://localhost:8080",
  apiDirectory = "4.24",
  // --------------------------------------------------------------------
  // path to the downloaded ArcGIS API for JavaScript SDK
  // download archive contents arcgis_js_v424_sdk/javascript/4.24/
  // to IIS virtual directory C:\Inetpub\wwwroot\javascript or
  // to Apache HTTP Server virtual directory /var/www/html/javascript/4.24/
  // --------------------------------------------------------------------
  isWindowsRegEx = /(win32|windows|windows_nt)/i,
  isWindows = isWindowsRegEx.test(`${os.type()},${os.platform()}`),
  jssdkDownloadLocation = isWindows
    ? path.join("H:", "apache-tomcat-8.5.66", "webapps", "4.24")
    : path.join("/", "var", "www", "html", "javascript", "4.24"),
  // --------------------------------------------------------------------
  // Regular expression to match the script tag in the samples such as:
  // <script src="https://js.arcgis.com/4.24/"></script>
  // --------------------------------------------------------------------
  jsapiURLRegEx = /js\.arcgis\.com\/\d\.\d+\/(?="><\/script>)/m,
  // --------------------------------------------------------------------
  // Local url to host the ArcGIS API for JavaScript such as
  // www.example.com/javascript/api/4.24/init.js
  // --------------------------------------------------------------------
  jsapiURLLocal = `${localHost}/${apiDirectory}/init.js`,
  // --------------------------------------------------------------------
  // Regular expression to match the ArcGIS API for JavaScript version
  // for example: https://js.arcgis.com/4.24/4.24/
  // --------------------------------------------------------------------
  jsapiURLBaseRegEx = /js\.arcgis\.com\/\d\.\d+\/?/g,
  // --------------------------------------------------------------------
  // base url for the locally hosted ArcGIS API for JavaScript such as:
  // www.example.com/javascript/api/4.24/
  // --------------------------------------------------------------------
  jsapiURLBaseLocal = `${localHost}/${apiDirectory}/`,
  // --------------------------------------------------------------------
  // Pattern to match all the live sample code in the ArcGIS API for JavaScript
  // --------------------------------------------------------------------
  jsapiSampleCodeLiveFiles = glob.sync(
    "**/live/*.html", {
    cwd: path.join(jssdkDownloadLocation, "sample-code"),
    absolute: true
  }
  );

/**
 * Execute an asynchronous function to update sample code files.
 *
 * @returns {Promise<void>}
 */
const run = async () => {
  // --------------------------------------------------------------------
  // 1) Read all the files under sdk_download/sample-code
  // 2) Replace the script src attribute for the locally hosted ArcGIS API for JavaScript
  // 3) Replace the link href attribute for the locally hosted ArcGIS API for JavaScript stylesheet
  // --------------------------------------------------------------------
  console.log("samples - replacing href and script tags in sample code");

  // --------------------------------------------------------------------
  // Loop over all of the samples and replace their urls
  // --------------------------------------------------------------------
  for (let filePath of jsapiSampleCodeLiveFiles) {
    console.log(`samples - reading ${filePath}`);
    // --------------------------------------------------------------------
    // Read the sample file contents from disk
    // --------------------------------------------------------------------
    let rawContent = await fs.readFile(filePath, "utf-8");
    // --------------------------------------------------------------------
    // Replace the script src attribute for the locally hosted ArcGIS API for JavaScript
    // Replace the link href attribute for the locally hosted ArcGIS API for JavaScript stylesheet
    // --------------------------------------------------------------------
    console.log(`samples - replacing link and script tags for ${filePath}`);
    let updatedContent = rawContent.replace(jsapiURLRegEx, jsapiURLLocal).replace(jsapiURLBaseRegEx, jsapiURLBaseLocal);
    // --------------------------------------------------------------------
    // Save the sample file contents to disk
    // --------------------------------------------------------------------
    console.log(`samples - saving ${filePath}`);
    await fs.writeFile(filePath, updatedContent, "utf-8");
  }
};

// --------------------------------------------------------------------
// Replace the tags in the sample code files.
// --------------------------------------------------------------------
run()
  .then(() => {
    console.log("samples - finished replacing href and script tags in sample code");
  })
  .catch((error) => {
    console.log(`samples - error - ${error.message}`);
  });

执行js代码 完成修改

  1. npm install glob
  2. npm install fs-extra
  3. node 刚刚创建的文件.js
    若输出以下代表成功
samples - replacing href and script tags in sample code
samples - finished replacing href and script tags in sample code

测试

测试之前先确保tomcat可以跨域并 启动tomcat,跨域可参考https://blog.csdn.net/drhrht/article/details/124080026
使用一个最简单的demo代码测试即可,注意 端口改成你自己tomcat配置的端口

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
  <title>Intro to MapView - Create a 2D map</title>
  <style>
    html,
    body,
    #viewDiv {
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
    }
  </style>
  <link rel="stylesheet" href="http://127.0.0.1:8080/4.24/esri/themes/light/main.css" />
  <script src="http://127.0.0.1:8080/4.24/init.js"></script>
  <script>
    require(["esri/Map", "esri/views/MapView"], function (Map, MapView) {
      var map = new Map({
        basemap: "streets"
      });
      var view = new MapView({
        container: "viewDiv", // Reference to the scene div created in step 5
        map: map, // Reference to the map object created before the scene
        zoom: 4, // Sets zoom level based on level of detail (LOD)
        center: [15, 65] // Sets center point of view using longitude,latitude
      });
    });
  </script>
</head>

<body>
  <div id="viewDiv"></div>
</body>

</html>
![在这里插入图片描述](https://img-blog.csdnimg.cn/8cb3bafffa964984a3f5f51ce30f7339.png)
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ArcGIS JavaScript 4.x 的离线 API 文档是指 ArcGIS JavaScript API 的文档资源,这些资源可以在没有网络连接的情况下访问和使用。离线 API 文档主要用于开发人员在没有网络连接或者需要在限制网络访问的环境中进行开发。 ArcGIS JavaScript 4.x 的离线 API 文档可以通过以下方式获取和使用: 1. 下载离线文档:官方提供了 ArcGIS JavaScript 4.x 的离线文档下载链接,可以将文档下载保存到本地,然后在没有网络连接的情况下通过本地浏览器打开并查看文档。 2. 安装离线文档工具:有一些第三方工具可以将在线 API 文档转换为离线文档形式,开发人员可以选择合适的工具,将 ArcGIS JavaScript 4.x 的在线文档下载到本地,并使用本地浏览器查看。 离线 API 文档提供了 ArcGIS JavaScript 4.x API 所有的类、方法、属性以及示例代码的详细说明和使用方式。开发人员可以通过离线 API 文档来了解和学习如何使用 ArcGIS JavaScript 4.x API 进行地图开发、数据可视化等工作。 在离线开发环境中,使用离线 API 文档可以提高开发效率和便捷性,无需依赖于网络连接和在线文档资源。开发人员可以随时随地访问和查阅文档,避免了对网络的依赖和延迟。 总之,ArcGIS JavaScript 4.x 的离线 API 文档是一种方便开发人员在没有网络连接的情况下学习和使用 ArcGIS JavaScript 4.x API 的工具资源,可以提高开发效率和便捷性。 ### 回答2: ArcGIS JavaScript 4.x的离线API文档是指提供给开发者在没有网络连接的情况下访问API文档的一种资源。由于ArcGIS JavaScript API是基于Web的技术开发的,通常情况下需要通过网络连接来获取最新的API文档。但在某些情况下,开发者可能会面临无法连网的情景,因此需要能够离线访问API文档。 为了解决这个问题,Esri(ArcGIS的开发公司)提供了ArcGIS JavaScript 4.x离线API文档的解决方案。该离线API文档以HTML格式提供,可以在本地计算机上进行访问。开发者可以下载这个离线文档,并在没有网络连接的环境下通过浏览器打开和查看它。 离线API文档包含有关ArcGIS JavaScript 4.x API的所有类、方法、属性和事件的详细说明,开发者可以根据自己的需要浏览和查询。此外,它还提供了示例代码、用法示例和参考资料,帮助开发者更好地理解和使用API。 离线API文档的使用方法很简单。只需将离线文档下载到本地计算机上,然后使用支持HTML的浏览器(如Chrome、Firefox等)打开它。在文档中,开发者可以通过导航栏或搜索框来浏览或搜索特定的类或方法。找到目标内容后,可以点击链接进入详细的说明页面,其中包含如何使用相关API的信息。 总之,ArcGIS JavaScript 4.x的离线API文档为开发者在没有网络连接的情况下提供了非常便捷的查询和浏览API文档的解决方案,使开发工作更加灵活和高效。 ### 回答3: ArcGIS JavaScript 4.x的离线API文档提供了在没有网络连接的情况下使用ArcGIS JavaScript API的指南和参考。这个文档可用于下载并安装在本地计算机上,提供了对API类、属性、方法和事件的说明。它包含了API的核心功能和各种模块的文档,以帮助开发人员在离线环境下使用ArcGIS JavaScript API构建应用程序。 这个离线API文档具有以下特点: 1. 完整的API参考:提供了对ArcGIS JavaScript API所有类、属性、方法和事件的详细描述,并包含了示例代码和参数说明,方便开发人员进行开发和调试。 2. 示例和教程:文档中包含了一些常见的示例和教程,帮助开发人员快速了解如何使用API来实现各种功能,如地图显示、图层操作、空间分析等。 3. 离线使用:这个API文档可以下载并安装在本地计算机上,无需网络连接即可访问,非常适用于无网络环境或者需要频繁离线访问API文档的开发人员。 4. 更新和维护:ArcGIS JavaScript 4.x的离线API文档与在线文档同步更新,确保获取到最新的API文档信息,并及时修复错误和更新内容。 总之,ArcGIS JavaScript 4.x的离线API文档是一个非常有用的资源,可以帮助开发人员在无网络环境下使用ArcGIS JavaScript API进行开发和调试,并提供了对API类、属性、方法和事件的详细说明,以及示例和教程帮助开发人员快速上手。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值