前言:
我在使用ArcGIS for server 成功發佈地圖服務以後,使用ArcGIS server for Java 的API 中試圖調用該地圖服務,但是發現始終不能顯示,最後發現是API 調用的圖層名有問題。
首先成功發佈了地圖服務
注意,然後寫了一段很簡單的代碼,試圖調用自己發佈的服務
<html>
<head>
<script type="text/javascript" src="library\3.9\3.9/init.js"></script>
<script type="text/javascript">
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("esri.map");
var MyMap
function init()
{
MyMap = new esri.Map("MyMapDiv");
var layer = new esri.layers.ArcGISTiledMapServiceLayer("http://coi3ruhgnp8g6fg:8399/arcgis/rest/services/map/MapServer");
MyMap.addLayer(layer);
}
dojo.addOnLoad(init);
</script>
</head>
<body>
<div id="MyMapDiv" dojotype="dijit.layout.ContentPane" region="center"></div>
</body>
</html>
但是發現並不能調用地圖服務,打開chrome的調試工具,發現N多的錯誤,大致意思就是說,找不到需要的切片地圖。
這個問題糾結了我兩天,沒有發現究竟是在哪裏出現了問題,一開始我認爲是我發佈的地圖有問題,但是打開rest/service/map發現地圖是可以使用的。
並且我們在ArcGIS JavaScript中查看發佈的地圖服務。
於是我將該網頁的源代碼copy下來,與我自己的代碼一句句比較,最後發現是因爲圖層名的問題。我發佈的是2D動態地圖服務,所以在API中調用的圖層應該是ArcGISDynamicMapServiceLayer。最後將此處修改以後,就可以成功調用地圖服務了。
學習心得:
1、 ArcGIS server 發佈的地圖服務,我們必須按照正確的圖層名來調用
2、 如果你能夠在rest/server查看你發佈的地圖,說明地圖發佈是成功的。不能調用服務的原因並不在這。