很多GISer或者非GISer,在要学GIS界最强大的ArcGIS API for JavaScript的时候是不是被API的配置给搞懵了,是不是被SSL证书或者HTTPS搞瞎了,是不是有种,我还没入门,就让我先解决这些和GIS没关系的问题?还有什么FQDN(Fully qualified domain name:完全限定域名).......你心累,不巧!今天我师弟就问我4.X的API部署不了,要什么SSL证书。嗯,我也其实挺心累的。作为混了好几年的GISer,感觉有必要写一份入门级部署API的博客了。
下载API
官方地址: http://links.esri.com/javascript-api/latest-download 和 https://developers.arcgis.com/downloads/apis-and-sdks?product=javascript , 当然你得有个Esri的开发者账号,如果没有,那就申请一个,切记跟着邮件内容走,否则会走错路。登录之后是如下页面:
相信你已经看到了要看到的,点击蓝色API按钮,默默等待浏览器下载完毕。当然你如果需要把SDK也部署到本地,就点击Document,下载。
配置
- 将下载的ZIP包解压到我的项目WMS1/gis中,打开解压后的文件,双击index.html,选择你要部署的平台,可以随便选择一个, 我选择了ArcGIS API for JavaScript; 在这需要说明, 我要部署的是和平台无关的,只是和你的Web访问目录有关的超强配置. Write once, run in any Web container!
- 打开后直接定位到Modify the Build (manually)节点;别的都不用看。 如下显示:
- 移动文件;将/library/4.6/下的所有文件拷贝到arcgis_js_api文件下,并将library文件夹删除。效果如下:
- 根据提示,用Notepad++打开加压包目录下的[api package] /arcgis_js_api/dojo/dojo.js;查找提示的文字 [HOSTNAME_AND_PATH_TO_JSAPI];搜索到之后将baseUrl中的值宣布 选中,用 /WMS1/gis/arcgis_js_api/dojo"替换;效果如下:
- 对[api package]/arcgis_js_api/init.js进行同样的操作,效果如下:
-
测试部署是否成功;拷贝如下代码到WMS1/gis/index.html中
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" /> <title>Test Map</title> <link rel="stylesheet" href="/WMS1/gis/arcgis_js_api/dijit/themes/cl aro/clarocss" /> <link rel="stylesheet" href="/WMS1/gis/arcgis_js_api/esri/css/main. css" /> <style> html, body, #viewDiv { margin: 0; padding: 0; width: 100%; height: 100%; } </style> <script src="/WMS1/gis/arcgis_js_api/dojo/dojo.js"></script> <script> var myMap, view; require([ "esri/Map", "esri/views/MapView", "dojo/domReady!" ], function (Map, MapView) { myMap = new Map({ basemap: 'osm' }); view = new MapView({ center: [-111.87, 40.57], // long, lat container: "viewDiv", map: myMap, zoom: 6 }); }); </script> </head> <body class="claro"> <div id="viewDiv"></div> </body> </html>
- 神奇的事情有木有发生?我是发生了。
- 到此我们的环境就配置好了,你的小宇宙该爆发了。
总结
ArcGIS JS API的配置只是和你项目启动的Web容器的路径有关系,和HTTPS还是HTTP、SSL并没有太大关系,如果要将API部署在远程机器上,那一般情况就是需要了解HTTPS、HTTP、FQDN等等了,这也是官方推荐的方法;使用上面这种配置的好处是,我的项目跟协议、主机名还有端口没有任何关系,只是和启动的Web容器的相对目录有关了。这在Node的http-server或者Webpack-devServer等作为Web启动容器的时候,你想在Linux还是Unix上运行都木问题的,而且目录位置随便放。只能帮你到这了。