【摘】
最近开始学习arcgis server了,刚好拿到最新版本9.3 for java,所以就从它说起。
废话少说,下面是我在实际应用中做的一些总结,由于目前关于arcgis server 9.3 java edition的资料不多,所以先放到这里,也算滥竽充数了。
1.先说安装。
由于9.3不与其他版本的arcgis兼容,所以在安装前应该完全卸载所有其他版本的arcgis,包括arcgis desktop等。如果没有完全卸载,可能会无法安装arcgis server 9.3。另外,arcgis的卸载比较麻烦,如果没卸干净无法安装的话,可以去esri下一个叫93ConflictDetector.exe(Uninstall_Previous_Products_93)的清理工具来准备好环境。
安装完arcgis server 9.3 for java 后进行登录时,输入在post install 中创建的帐户和密码,可能无法登陆,提示: incorrect login information,无法登陆。解决办法如下:
在资源管理器中 选择“文件夹-选项”,去掉“启用简单文件共享”,再重新登陆就可以了(可能还需要重启或其他操作)。http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=3942&extra=&page=1
这是因为简单文件共享会启用特别的WINDOWS认证方式,该认证方式与AGS Server的不兼容。
http://support.microsoft.com/kb/307874/zh-cn
2.在arcgis manager中进行地图发布时,首先需要用一张地图创建一个服务service,然后才能用这个服务创建应用application。
3.在自己的html页面中用arcgis server里的服务来显示地图前,还需要做如下准备:
1)要找到服务的地址:在浏览器打开http://rzf:8399/arcgis/rest/services/就可以看到当前可用的服务列表了,随
便打开一个就可以得到其地址,例如:http://rzf:8399/arcgis/rest/services/test_1/test_1/MapServer。注意:
所有服务地址的最后均为MapServer,其前就是服务的名字。
2)先在浏览器里打开这两个地址
http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.1
http://serverapi.arcgisonline.com/jsapi/arcgis/1.1/js/dojo/dijit/themes/tundra/tundra.css
然后将他们作为文件分别保存到当前目录下,名字分别为default.js和tundra.css,在显示地图时将要用到这两个文件。
4.显示地图
下面一段代码即演示如何显示地图(来自esri):
<!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>巴西地图</title>
<link rel="stylesheet" type="text/css" href="tundra.css">
<script type="text/javascript" src="default.js"></script>
<script type="text/javascript">
dojo.require("esri.map");
function init() {
var map = new esri.Map("map");
var dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer ("http://rzf:8399/arcgis/rest/services/test_1/test_1/MapServer");
map.addLayer(dynamicMapServiceLayer);
}
function showExtent(extent) {
var s = "";
s = "XMin: "+ extent.xmin + " "
+"YMin: " + extent.ymin + " "
+"XMax: " + extent.xmax + " "
+"YMax: " + extent.ymax;
dojo.byId("info").innerHTML = s;
}
dojo.addOnLoad(init);
</script>
</head>
<body class="tundra">
<div id="map" style="width:100%; height:38%; border:1px solid #000;"></div>
<div id="info" style="display:none"></div>
</body>
</html>
5.需要注意的是,如果直接从esri网站上拷例子,很有可能是能够显示esri提供的在线地图服务,却不能打开自己本地的地图
服务,这是因为esri上的例子在加载地图时init函数里用到的是如下代码:
function init() {
esriConfig.defaults.io.proxyUrl = "ProxyPage_Java/proxy.jsp";
var map = new esri.Map("map");
var layer = new esri.layers.ArcGISTiledMapServiceLaye("http://server.arcgisonline.com/ArcGIS/rest
/services/ESRI_StreetMap_World_2D/MapServer");
map.addLayer(layer);
}
这是事先将地图切分好,做了缓存的加载方式,而我们自己的地图服务有可能没有事先切分,所以需要用ArcGISDynamicMapServiceLayer来动态加载。
6.在tomcat里显示地图
在做实际应用时,可能发生这样的情况:一个html页面如果直接在浏览器里打开的话能够正常显示地图,但是如果把它加入到tomcat工程里,
通过url地址来访问时,却不能显示地图。一个简单的例子:
我有一个页面:E:\soft\Tomcat 6.0\webapps\JSP_SQLServer\oper_files\html_map_test2.html,他是在tomcat工程目录下的。当我直接在浏览器里E:\soft\Tomcat 6.0\webapps\JSP_SQLServer\oper_files\html_map_test2.html能够正常显示地图,而当我启动tomcat服务,通过url地址:http://localhost:8080/JSP_SQLServer/oper_files/html_map_test2.html却无法显示。
要解决这个问题,需要先查看esri的一篇arcgis javascript api文档:
http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp/ags_proxy.htm#webprint
里面提供了具体的方法,即:
1)先到http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp/ProxyPage_Java.zip下载java版的
proxy page,解压到当前目录。
2)编辑其中的proxy.jsp文件,将字符串String[] serverUrls赋值为前面找到的服务的地址,里面有注释可以查看,可以有多个服务。
3)在前面显示地图的init函数里第一句加上下面这一句:
esriConfig.defaults.io.proxyUrl = "ProxyPage_Java/proxy.jsp";
ProxyPage_Java/proxy.jsp是刚才的proxy.jsp地址,可以绝对,也可以相对。
当你做完这些的时候,如果没问题的话,你就应该可以通过url地址来显示地图了。