ArcGIS_api_for_js_添加动态图层

利用ArcGIS Server 10.1发布动态图层服务,然后利用ArcGIS API For JavaScript进行加载。

在发布服务的时候在 Capabilities节点下的Mapping注册一个工作空间,点击Manage即可注册。

在这里注意选择工作空间的类型,我选的是Shapefile文件,也可以连接数据库作为工作空间。然后定义一个工作空间ID,在添加数据的时候会用到。最后就是选中shp文件所在的文件夹了。

再添加工作空间之后,发布的时候如果报错:Dynamic workspace with workspace ID [MyShapefileWorkspaceID] is not registered with the server,说明工作空间中的数据没有注册,如下图所示:

这个时候需要注册数据所在的文件夹。

打开ArcCatalog,右键服务的连接属性,如下图所示:

点击之后界面开始注册文件数据:

点击“+”之后进入如下界面:

填入注册名称和文件所在路径之后,注册就OK了。这时候重新发布服务,问题就会消失了。

 

如果已近发布好的地图,可以在ArcGIS Server Manager里面来添加动态工作空间,如下图所示:

开始调用动态图层了:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>

</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>动态图层添加shp文件</title>
    <link rel="stylesheet" href="http://localhost/arcgis_js_v35_sdk/arcgis_js_api/library/3.5/3.5/js/esri/css/esri.css"/>
     <script src="http://localhost/arcgis_js_v35_sdk/arcgis_js_api/library/3.5/3.5/init.js" type="text/javascript"></script>
     <script src="http://localhost/arcgis_js_v35_sdk/arcgis_js_api/library/3.5/3.5" type="text/javascript"></script>
     <script src="dojo/jsapi_vsdoc12_v35.js" type="text/javascript"></script>
    <style type="text/css">
      .MapClass
      {
        width:900px;
        height:600px;
        border:1px solid #000;    
      }
    </style>

    <script type="text/javascript">
        var map;
        dojo.require("esri.map");
        dojo.require("esri.layers.FeatureLayer");
        dojo.addOnLoad(function () {
                map = new esri.Map("MyMapDiv");
                var DynamicLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://localhost:6080/arcgis/rest/services/全国县市_DynamicLayer/MapServer");
                map.addLayer(DynamicLayer);
            });

function AddDynamicLayer()
{
var TableSource = new esri.layers.TableDataSource(); TableSource.workspaceId = "MyShapefileWorkspaceID"; TableSource.dataSourceName = "roa_4m.shp"; var layerSource = new esri.layers.LayerDataSource(); layerSource.dataSource = TableSource; var featurelayer = new esri.layers.FeatureLayer(
"http://localhost:6080/arcgis/rest/services/全国县市_DynamicLayer/MapServer/dynamicLayer", //注意调用动态图层的时候在原服务的链接后面加上dynamicLayer { mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"], source:layerSource }); var symbol = esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 3); var renderer = new esri.renderer.SimpleRenderer(symbol); featurelayer.setRenderer(renderer); featurelayer.refresh(); map.addLayer(featurelayer); }

</script> </head> <body class="tundra"> <div id="MyMapDiv" class="MapClass"> <div id="DrawDiv" style="width:100px; height:50px"> <button id="point" onclick="AddDynamicLayer()">添加shp</button> </div> </div> </body> </html>

 

 这里加上运行后的效果:

添加shp前:

点击按钮添加shp后:

posted on 2015-09-23 13:20  Geography爱好者  阅读(3453)  评论(0编辑  收藏  举报

导航