最近要用到ArcGIS API for JavaScript 3.8 的离线部署 下载链接(有时不能用) 按照离线包内的说明,在window上的tomcat上部署成功了,可是在liunx上却不能部署了。纠结很久,发现他们给的说明文档是错误的。
首先 init.js 在目录arcgis_js_v38_api\arcgis_js_v38_api\arcgis_js_api\library\3.8\3.8下,而不在其所谓的\webapps\arcgis_js_api\library\3.8\jsapi\init.js
下,其次也没有所谓的 \webapps\arcgis_js_api\library\3.8\jsapi\dojo\dojo\dojo.js
而是在arcgis_js_v38_api\arcgis_js_api\library\3.8\3.8\js\dojo目录下,鉴于这种情况,我将arcgis_js_v38_api\arcgis_js_api\library\3.8\3.8\js\dojo 目录改为 arcgis_js_v38_api\arcgis_js_api\library\3.8\jsapi\js\dojo
然后打开arcgis_js_v38_api\arcgis_js_v38_api\arcgis_js_api\library\3.8\3.8\init.js 替换 [HOSTNAME_AND_PATH_TO_JSAPI]为 137.64.33.40:8090/arcgis_js_api/library/3.8/jsapi/ 内网ip,也可为localhost,端口为服务器的端口
同上,将 arcgis_js_api\library\3.8\jsapi\js\dojo\dojo\dojo.js 替换 [HOSTNAME_AND_PATH_TO_JSAPI]为 137.64.33.40:8090/arcgis_js_api/library/3.8/jsapi/
修改compact目录的也一样,将3.8compact文件夹重命名为jsapicompact 其他的和上面一样 将相应文件中的 [HOSTNAME_AND_PATH_TO_JSAPI]替换为137.64.33.40:8090/arcgis_js_api/library/3.8/jsapicompact/
然后就可以将整个arcgis_js_v38_api 文件夹放进tomcat的根目录,启动tomcat后,按照给的链接 http://137.64.33.40:8090/arcgis_js_api/library/3.8/jsapi/ 打开后会报错,不知为什么,
org.apache.jasper.JasperException: An exception occurred processing JSP page /library/3.8/jsapi/index.jsp at line 2 1: <%@page contentType="application/x-javascript; charset=utf-8" session="false" %> 2: <jsp:include page="./js/dojo/dojo/dojo.js" /> 3: <jsp:include page="./js/esri/jsapi.js" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Simple Map</title>
<link rel="stylesheet" type="text/css" href="http://137.64.33.40:8090/arcgis_js_api/library/3.8/jsapi/js/dojo/dijit/themes/tundra/tundra.css">
<link rel="stylesheet" type="text/css" href="http://137.64.33.40:8090/arcgis_js_api/library/3.8/jsapi/js/esri/css/esri.css" />
<script type="text/javascript" src="http://137.64.33.40:8090/arcgis_js_api/library/3.8/jsapi/init.js"></script>
<script type="text/javascript">
dojo.require("esri.map");
function init() {
var myMap = new esri.Map("mapDiv");
//note that if you do not have public Internet access then you will need to point this url to your own locally accesible cached service.
var myTiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer");
myMap.addLayer(myTiledMapServiceLayer);
}
dojo.addOnLoad(init);
</script>
</head>
<body class="tundra">
<div id="mapDiv" style="width:900px; height:600px; border:1px solid #000;"></div>
</body>
</html>