感觉3和4还是有较大改变的。从esri官方例子上看来,4的功能更加丰富,在大数据的展示和操作上体验比3要好。 4.12为例

1. 不同

  1. API调用

    //API 3.x :
    <link rel="stylesheet" href="https://js.arcgis.com/3.28/esri/css/esri.css"/>
    <script src="https://js.arcgis.com/3.28/">
    //API 4.x :
    <link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/css/main.css">
    <script src="https://js.arcgis.com/4.12/">
  1. 动态图层的引用模块

    //API 3.x :
    "esri/map",
    “esri/layers/ArcGISDynamicMapServiceLayer”,
    //API 4.x :
    "esri/Map",
    “esri/views/MapView”

    “map”改为了”Map”
    显而易见从layers目录下到,到了views下,说明,地图需要放置在views中,既然多了一层,那这个views层必然是为我们封装了很多的方法和接口。

  2. 创建Map对象不在需要绑定id

    //API 3.x :
    var map = new Map("mapDiv");
    //API 4.x :
    var map = new Map();
  3. 图层的创建

    var layer = new MapImageLayer({
        url:"http://192.168.3.1:6080/arcgis/rest/services/gaofen/xianghe/MapServer",
        sublayers: [{id: 0,visible:true}]
    });

    一般为两个参数,url 和 sublayers

    • url 为 REST URL
    • sublayers 设置图层可见性 比3更加方便
  4. 创建MapView,需要选择容器中的 map 和绑定的 DIV 的 id

    new MapView({
        map: map,
        container: "viewDiv"
    });

2. api 3.x 代码

3. api 4.x 代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/css/main.css">
    <script src="https://js.arcgis.com/4.12/"></script>


    <script type="text/javascript">
        require(["esri/Map",
                "esri/layers/MapImageLayer",
                "esri/views/MapView",
                "dojo/domReady!"],
            function (Map, MapImageLayer, MapView) {
                var map = new Map();
                var layer = new MapImageLayer({
                    url:"http://192.168.3.1:6080/arcgis/rest/services/gaofen/xianghe/MapServer",

                });
                map.add(layer);
                new MapView({
                    map: map,
                    container: "viewDiv"
                });


            });
    </script>
</head>

<body>
<div id="viewDiv" style="height:800px;"></div>
</body>
</html>