Browse Source

Merge branch 'visu_forest_0_1' of http://121.37.83.100:3000/sooka_onest/sooka_onest_forestfire_vue2_visualization into visu_forest_0_1

whao 2 years ago
parent
commit
a74ae6bc0a
100 changed files with 11363 additions and 0 deletions
  1. 36 0
      public/supermap/examples/3dwebgl/01_3DMap.html
  2. 47 0
      public/supermap/examples/3dwebgl/config.js
  3. 45 0
      public/supermap/examples/3dwebgl/editor.html
  4. 21 0
      public/supermap/examples/3dwebgl/entry.js
  5. 49 0
      public/supermap/examples/3dwebgl/examples.html
  6. BIN
      public/supermap/examples/3dwebgl/img/3D_Map.png
  7. 86 0
      public/supermap/examples/classic/OGC_GeoJSON.html
  8. 94 0
      public/supermap/examples/classic/OGC_kml.html
  9. 170 0
      public/supermap/examples/classic/OGC_queryByWFS.html
  10. 44 0
      public/supermap/examples/classic/OGC_wcs.html
  11. 142 0
      public/supermap/examples/classic/OGC_wms.html
  12. 62 0
      public/supermap/examples/classic/OGC_wmtsLayer.html
  13. 208 0
      public/supermap/examples/classic/SummaryMeshJobService.html
  14. 283 0
      public/supermap/examples/classic/SummaryRegionJobService.html
  15. 257 0
      public/supermap/examples/classic/addressMatchService.html
  16. 149 0
      public/supermap/examples/classic/analysis_bufferAnalyst.html
  17. 241 0
      public/supermap/examples/classic/analysis_bufferQuery.html
  18. 207 0
      public/supermap/examples/classic/analysis_closestFacilities.html
  19. 209 0
      public/supermap/examples/classic/analysis_densityKernelAnalyst.html
  20. 213 0
      public/supermap/examples/classic/analysis_dynamicSegmentation.html
  21. 202 0
      public/supermap/examples/classic/analysis_findLocation.html
  22. 172 0
      public/supermap/examples/classic/analysis_findMTSPPaths.html
  23. 258 0
      public/supermap/examples/classic/analysis_findMTSPPathsAndTSPPaths.html
  24. 258 0
      public/supermap/examples/classic/analysis_findPath.html
  25. 196 0
      public/supermap/examples/classic/analysis_findTSPPaths.html
  26. 323 0
      public/supermap/examples/classic/analysis_interpolationAnalystByDensity.html
  27. 367 0
      public/supermap/examples/classic/analysis_interpolationAnalystByGeometry.html
  28. 325 0
      public/supermap/examples/classic/analysis_interpolationAnalystByIDW.html
  29. 472 0
      public/supermap/examples/classic/analysis_interpolationAnalystByKriging.html
  30. 301 0
      public/supermap/examples/classic/analysis_interpolationAnalystByRBF.html
  31. 222 0
      public/supermap/examples/classic/analysis_mathExpression.html
  32. 126 0
      public/supermap/examples/classic/analysis_overlayAnalystService.html
  33. 204 0
      public/supermap/examples/classic/analysis_routeCalculateMeasure.html
  34. 205 0
      public/supermap/examples/classic/analysis_routeLocatorLine.html
  35. 204 0
      public/supermap/examples/classic/analysis_routeLocatorPoint.html
  36. 168 0
      public/supermap/examples/classic/analysis_serviceAreas.html
  37. 136 0
      public/supermap/examples/classic/analysis_surfaceAnalyst.html
  38. 200 0
      public/supermap/examples/classic/analysis_terrainCurvatureCalculation.html
  39. 153 0
      public/supermap/examples/classic/analysis_thiessenAnalyst.html
  40. 878 0
      public/supermap/examples/classic/analysis_trafficTransfer.html
  41. 173 0
      public/supermap/examples/classic/buffersAnalystJobService.html
  42. 1285 0
      public/supermap/examples/classic/config.js
  43. 116 0
      public/supermap/examples/classic/controler_areaMeasure.html
  44. 39 0
      public/supermap/examples/classic/controler_attribution.html
  45. 69 0
      public/supermap/examples/classic/controler_changeControlsSkin.html
  46. 122 0
      public/supermap/examples/classic/controler_distanceMeasure.html
  47. 113 0
      public/supermap/examples/classic/controler_dragFeature.html
  48. 73 0
      public/supermap/examples/classic/controler_dragpan.html
  49. 154 0
      public/supermap/examples/classic/controler_drawGeometry.html
  50. 157 0
      public/supermap/examples/classic/controler_featureSnap.html
  51. 105 0
      public/supermap/examples/classic/controler_geolocate.html
  52. 47 0
      public/supermap/examples/classic/controler_layerswitcher.html
  53. 51 0
      public/supermap/examples/classic/controler_navigation.html
  54. 41 0
      public/supermap/examples/classic/controler_overviewmap.html
  55. 54 0
      public/supermap/examples/classic/controler_panzoombar.html
  56. 42 0
      public/supermap/examples/classic/controler_scaleline.html
  57. 39 0
      public/supermap/examples/classic/controler_zoom.html
  58. 48 0
      public/supermap/examples/classic/controler_zoomBox.html
  59. 324 0
      public/supermap/examples/classic/data/animationExtendLineData.js
  60. 73 0
      public/supermap/examples/classic/data/animationLineData.js
  61. 38 0
      public/supermap/examples/classic/data/animationPolygonData.js
  62. 2 0
      public/supermap/examples/classic/data/sampleData1.js
  63. 2 0
      public/supermap/examples/classic/data/sampleData2.js
  64. 2 0
      public/supermap/examples/classic/data/sampleData3.js
  65. 2 0
      public/supermap/examples/classic/data/sampleData4.js
  66. 2 0
      public/supermap/examples/classic/data/sampleData5.js
  67. 2 0
      public/supermap/examples/classic/data/sampleData6.js
  68. 2 0
      public/supermap/examples/classic/data/sampleData7.js
  69. 2 0
      public/supermap/examples/classic/data/sampleData8.js
  70. 63 0
      public/supermap/examples/classic/editor-wechat.html
  71. 48 0
      public/supermap/examples/classic/editor.html
  72. 87 0
      public/supermap/examples/classic/examples-wechat.html
  73. 53 0
      public/supermap/examples/classic/examples.html
  74. BIN
      public/supermap/examples/classic/images/BasicCell/1001.png
  75. BIN
      public/supermap/examples/classic/images/BasicCell/1003.png
  76. BIN
      public/supermap/examples/classic/images/BasicCell/1004.png
  77. BIN
      public/supermap/examples/classic/images/BasicCell/1013.png
  78. BIN
      public/supermap/examples/classic/images/BasicCell/1014.png
  79. BIN
      public/supermap/examples/classic/images/BasicCell/1016.png
  80. BIN
      public/supermap/examples/classic/images/BasicCell/1017.png
  81. BIN
      public/supermap/examples/classic/images/BasicCell/1019.png
  82. BIN
      public/supermap/examples/classic/images/BasicCell/1022.png
  83. BIN
      public/supermap/examples/classic/images/BasicCell/1023.png
  84. BIN
      public/supermap/examples/classic/images/BasicCell/1024.png
  85. BIN
      public/supermap/examples/classic/images/BasicCell/1025.png
  86. BIN
      public/supermap/examples/classic/images/BasicCell/1026.png
  87. BIN
      public/supermap/examples/classic/images/BasicCell/1028.png
  88. BIN
      public/supermap/examples/classic/images/BasicCell/24.png
  89. BIN
      public/supermap/examples/classic/images/BasicCell/26.png
  90. BIN
      public/supermap/examples/classic/images/BasicCell/28.png
  91. BIN
      public/supermap/examples/classic/images/BasicCell/29.png
  92. BIN
      public/supermap/examples/classic/images/BasicCell/31.png
  93. BIN
      public/supermap/examples/classic/images/BasicCell/32.png
  94. BIN
      public/supermap/examples/classic/images/BasicCell/320.png
  95. BIN
      public/supermap/examples/classic/images/BasicCell/321.png
  96. BIN
      public/supermap/examples/classic/images/BasicCell/34.png
  97. BIN
      public/supermap/examples/classic/images/BasicCell/350.png
  98. BIN
      public/supermap/examples/classic/images/BasicCell/360.png
  99. BIN
      public/supermap/examples/classic/images/BasicCell/370.png
  100. 0 0
      public/supermap/examples/classic/images/BasicCell/380.png

+ 36 - 0
public/supermap/examples/3dwebgl/01_3DMap.html

@@ -0,0 +1,36 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
+    <meta name="viewport"
+          content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
+    <title>三维场景</title>
+    <link rel="stylesheet" href="https://www.supermapol.com/earth/Build/Cesium/Widgets/widgets.css">
+    <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/require.js/2.3.3/require.min.js"
+            data-main="./entry.js"></script>
+    <style>
+        html, body, #cesiumContainer {
+            width: 100%;
+            height: 100%;
+            margin: 0;
+            padding: 0;
+            overflow: hidden;
+        }
+    </style>
+</head>
+<body>
+<div id="cesiumContainer"></div>
+<script>
+    function onload(Cesium) {
+        if (Cesium) {
+            var viewer = new Cesium.Viewer('cesiumContainer');
+        }
+    }
+</script>
+</body>
+
+</html>

+ 47 - 0
public/supermap/examples/3dwebgl/config.js

@@ -0,0 +1,47 @@
+/* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.*/
+/**
+ * 3D-WebGL 示例配置文件:包含示例的分类、名称、缩略图、文件路径
+ */
+var identification = {
+    name: "3D-WebGL"
+};
+
+var exampleConfig = {
+    "3D-WebGL": {
+        name: "3D-WebGL",
+        name_en: "3D-WebGL",
+        content: {
+            "3D": {
+                name: "3D",
+                name_en: "3D",
+                content: [
+                    {
+                        name: "三维场景",
+                        name_en: "3D map",
+                        thumbnail: "3D_Map.png",
+                        fileName: "01_3DMap"
+                    }
+                ]
+            }
+
+        }
+    }
+};
+/**
+ *key值:为exampleConfig配置的key值或者fileName值
+ *      (为中间节点时是key值,叶结点是fileName值)
+ *value值:fontawesome字体icon名
+ *不分层
+ */
+var sideBarIconConfig = {
+    "3D-WebGL": "fa-globe"
+};
+
+/**
+ *key值:为exampleConfig配置的key值
+ *value值:fontawesome字体icon名
+ *与sideBarIconConfig的区别:sideBarIconConfig包括侧边栏所有层级目录的图标,exampleIconConfig仅包括一级标题的图标
+ */
+var exampleIconConfig = {
+    "3D-WebGL": "fa-globe"
+};

+ 45 - 0
public/supermap/examples/3dwebgl/editor.html

@@ -0,0 +1,45 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title data-i18n="resources.title_editor3DWebGL"></title>
+    <link rel="shortcut icon" type="image/x-icon" href="../../web/img/favicon.ico"/>
+    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
+    <script type="text/javascript"  include="jquery,bootstrap,template,admin-lte,ace,i18n"
+            src="../js/include-web.js"></script>
+    <link rel="stylesheet" href="../css/common.css">
+    <link rel="stylesheet" href="../css/header.css">
+    <link rel="stylesheet" href="../css/sideBar.css">
+    <link rel="stylesheet" href="../css/editor.css">
+    <script type="text/javascript" src="../js/utils.js"></script>
+</head>
+<body class="hold-transition skin-blue sidebar-mini sidebar-collapse">
+
+<!-- ./wrapper -->
+<div class="wrapper"></div>
+<script>
+    $('.wrapper').load("../template/editor.html", function () {
+        var navigation = {
+            nav: {
+                title: "SuperMap iClient 10i(2020)",
+                path: "../../web/",
+                isLocal: window.isLocal
+            }
+        };
+        utils.loadTemplate(".icl-header", "../template/header.html", navigation);
+
+        $body = $('body');
+        $body.append("<script type='text/javascript' src='./config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/localization.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/common.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/sidebar.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/editor.js'><\/script>");
+    })
+</script>
+<!-- ./wrapper end-->
+
+</body>
+</html>

+ 21 - 0
public/supermap/examples/3dwebgl/entry.js

@@ -0,0 +1,21 @@
+/* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.*/
+require.config({
+    paths: {
+        'Cesium': 'https://www.supermapol.com/earth/Build/Cesium/Cesium',
+        'Zlib': 'https://www.supermapol.com/earth/Build/Cesium/Workers/zlib.min'
+    },
+    shim: {
+        Cesium: {
+            exports: 'Cesium'
+        },
+        Zlib: {
+            exports: 'Zlib'
+        }
+    }
+});
+
+if (typeof Cesium !== "undefined" && typeof Zlib !== "undefined") {
+    onload(Cesium, Zlib);
+} else if (typeof require === "function") {
+    require(["Cesium", "Zlib"], onload);
+}

+ 49 - 0
public/supermap/examples/3dwebgl/examples.html

@@ -0,0 +1,49 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <title data-i18n="resources.title_examples3DWebGL"></title>
+    <link rel="shortcut icon" type="image/x-icon" href="../../web/img/favicon.ico"/>
+    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
+    <script type="text/javascript" 
+            include="jquery,bootstrap,template,admin-lte,jquery.scrollto,i18n,lazyload"
+            src="../js/include-web.js"></script>
+    <link rel="stylesheet" href="../css/common.css">
+    <link rel="stylesheet" href="../css/header.css">
+    <link rel="stylesheet" href="../css/sideBar.css">
+    <link rel="stylesheet" href="../css/examples.css">
+    <script type="text/javascript" src="../js/utils.js"></script>
+</head>
+<body class="hold-transition skin-blue sidebar-mini" data-spy="scroll" data-target="#scrollSpy">
+
+<!-- ./wrapper -->
+<div class="wrapper"></div>
+<script>
+    $('.wrapper').load("../template/example.html", function () {
+        var navigation = {
+            nav: {
+                title: "SuperMap iClient 10i(2020)",
+                path: "../../web/",
+                isLocal: window.isLocal
+            }
+        };
+        utils.loadTemplate(".icl-header", "../template/header.html", navigation);
+
+        $body = $('body');
+        $body.append("<script type='text/javascript' src='./config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/localization.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/common.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/sidebar.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/example.js'><\/script>");
+            utils.loadTemplate(".icl-footer", "../template/footer.html", navigation);
+    });
+</script>
+<!-- ./wrapper end-->
+
+
+</body>
+</html>

BIN
public/supermap/examples/3dwebgl/img/3D_Map.png


+ 86 - 0
public/supermap/examples/classic/OGC_GeoJSON.html

@@ -0,0 +1,86 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_GeoJSON"></title>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" include="OSMBuildings-SuperMap"
+        src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var map, layer,vLayer,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    url = host + "/iserver/services/map-world/rest/maps/World";
+    //初始化地图
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.Navigation(),
+            new SuperMap.Control.MousePosition(),
+            new SuperMap.Control.LayerSwitcher(),
+            new SuperMap.Control.Zoom()
+        ]
+    });
+
+    //初始化图层
+    layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, null, {maxResolution: "auto"});
+    vLayer = new SuperMap.Layer.Vector("vector");
+    //监听图层信息加载完成事件
+    layer.events.on({"layerInitialized": addLayer});
+    //异步加载图层
+    function addLayer() {
+        map.addLayers([layer, vLayer]);
+        map.setCenter(new SuperMap.LonLat(102.0, 0.5), 4);
+
+        //GeoJSON对象,也可以是一个字符串
+        var geojson = {
+            "type": "FeatureCollection",
+            "features": [
+                {
+                    "type": "Feature",
+                    "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
+                    "properties": {"prop0": "value0"}
+                },
+                {
+                    "type": "Feature",
+                    "geometry": {
+                        "type": "LineString",
+                        "coordinates": [
+                            [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
+                        ]
+                    },
+                    "properties": {
+                        "prop0": "value0",
+                        "prop1": 0.0
+                    }
+                },
+                {
+                    "type": "Feature",
+                    "geometry": {
+                        "type": "Polygon",
+                        "coordinates": [
+                            [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
+                                [100.0, 1.0], [100.0, 0.0]]
+                        ]
+                    },
+                    "properties": {
+                        "prop0": "value0",
+                        "prop1": {"this": "that"}
+                    }
+                }
+            ]
+        };
+        //创建一个GeoJSON解析器
+        var geojsonParse = new SuperMap.Format.GeoJSON();
+        //将GeoJSON对象转化成要素数组
+        var features = geojsonParse.read(geojson);
+        //最后将要素数组加到矢量图层里面进行渲染
+        vLayer.addFeatures(features);
+    }
+</script>
+</body>
+</html>

+ 94 - 0
public/supermap/examples/classic/OGC_kml.html

@@ -0,0 +1,94 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Kml</title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            right: 50px;
+            top: 50px;
+            text-align: center;
+            background: #FFF;
+            z-index: 1000;
+            display: inline-block;
+
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center'>Kml</h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <p></p>
+        <div align='center' class='button-group'>
+            <input type='button' id='loadBt' class='btn btn-primary' data-i18n="[value]resources.btn_load" onclick="loadKml()"/>
+        </div>
+    </div>
+</div>
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var map, layer, loaded = false,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    url = host + "/iserver/services/map-china400/rest/maps/China";
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.LayerSwitcher(),
+            new SuperMap.Control.MousePosition(),
+            new SuperMap.Control.OverviewMap(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            })],
+        projection: new SuperMap.Projection("EPSG:3857")
+    });
+
+    layer = new SuperMap.Layer.TiledDynamicRESTLayer("China", url, {transparent: true}, {
+        useCanvas: true,
+        maxResolution: "auto"
+    });
+    layer.events.on({"layerInitialized": addLayer});
+
+    function addLayer() {
+        var center = new SuperMap.LonLat(0, 0);
+        map.addLayer(layer);
+        map.setCenter(center, 1);
+    }
+
+    function loadKml() {
+        if (!loaded) {
+            layer01 = new SuperMap.Layer.Vector("KML", {
+                strategies: [new SuperMap.Strategy.Fixed()],
+                protocol: new SuperMap.Protocol.HTTP({
+                    url: host + "/iserver/services/data-world/rest/data/datasources/World/datasets/Countries/features.kml",   //"data/sichuang.kml",
+                    format: new SuperMap.Format.KML({
+                        extractStyles: true,
+                        extractAttributes: true,
+                        internalProjection: new SuperMap.Projection("EPSG:3857"),       //所在地图的坐标系
+                        maxDepth: 2      //要解析外部链接文件时此值必须大于1
+                    })
+                })
+            });
+            map.addLayer(layer01);
+            layer01.events.on({"featuresadded": featuresadd});
+            loaded = true;
+        }
+    }
+
+    function featuresadd() {
+        var center = new SuperMap.LonLat(5000000, 8000000);
+        map.setCenter(center, 1);
+    }
+
+</script>
+</body>
+</html>

+ 170 - 0
public/supermap/examples/classic/OGC_queryByWFS.html

@@ -0,0 +1,170 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_queryByWFS"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            right: 50px;
+            top: 50px;
+            text-align: center;
+            background: #FFF;
+            display: inline-block;
+            z-index: 1000;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_queryByWFS"></h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <p></p>
+        <div align='center' class='button-group'>
+            <input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.btn_polygon"
+                   onclick="drawGeometry()"/>
+            <input type='button' id='btn2' class='btn btn-primary' data-i18n="[value]resources.text_input_value_clear"
+                   onclick="clearFeatures()"/>
+        </div>
+    </div>
+</div>
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var map, layer, vectorLayer, vectorLayer, vector_style, vector_style_select, myFilter, drawings = null, draw = null,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url = host + "/iserver/services/map-world/rest/maps/World",
+        url2 = host + "/iserver/services/data-world/wfs100";
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.LayerSwitcher(),
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            })]
+    }, notice());
+
+    layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {
+        transparent: true,
+        cacheEnabled: true
+    }, {maxResolution: "auto"});
+
+    vector_style = new SuperMap.Style({
+        fillColor: '#669933',
+        fillOpacity: 0.8,
+        pointRadius: 8,
+        strokeColor: '#aaee77',
+        strokeWidth: 3
+    });
+
+    vector_style_select = new SuperMap.Style({
+        fillColor: '#000',
+        fillOpacity: 0.9,
+        fontColor: '#232323',
+        strokeColor: '#ffffff'
+    });
+
+    myFilter = new SuperMap.Filter.Comparison({
+        type: SuperMap.Filter.Comparison.EQUAL_TO,
+        property: "CAPITAL",
+        value: ""
+    });
+
+    vectorLayer = new SuperMap.Layer.Vector("World Capitals", {
+        strategies: [new SuperMap.Strategy.BBOX()],
+        protocol: new SuperMap.Protocol.WFS({
+            version: "1.0.0",
+            url: url2,
+            featureType: "Capitals",
+            featureNS: "http://www.supermap.com/World",
+            featurePrefix: "World",
+            geometryName: "the_geom"
+
+            //类似的ArcGIS请求参数设置(已验证返回数据)
+            //version:"1.0.0",
+            //url:"http://localhost:6080/arcgis/services/SampleWorldCities/MapServer/WFSServer",
+            //featureType:"cities",
+            //featureNS:"http://localhost:6080/arcgis/services/SampleWorldCities/MapServer/WFSServer",
+            //featurePrefix:"SampleWorldCities",
+            //geometryName:"shape"
+        }),
+
+        //filter使用方式一:
+        //filter: new SuperMap.Filter.Logical({
+        //    type: SuperMap.Filter.Logical.AND,
+        //    filters: [
+        //        new SuperMap.Filter.Comparison({
+        //            type: SuperMap.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,
+        //            property: "SMID",
+        //            value: "50"
+        //        }),
+        //        new SuperMap.Filter.Comparison({
+        //            type: SuperMap.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,
+        //            property: "SMID",
+        //            value: "60"
+        //        })
+        //    ]
+        //}),
+
+        //filter使用方式二:
+        filter: myFilter,
+        styleMap: new SuperMap.StyleMap({
+            'default': vector_style,
+            'select': vector_style_select
+        })
+    });
+
+    var select_feature_control = new SuperMap.Control.SelectFeature(vectorLayer);
+    map.addControl(select_feature_control);
+    select_feature_control.activate();
+    layer.events.on({"layerInitialized": addLayer});
+
+    //空间查询
+    drawings = new SuperMap.Layer.Vector("drawings");
+    map.addLayer(drawings);
+    draw = new SuperMap.Control.DrawFeature(drawings, SuperMap.Handler.Polygon);
+    map.addControl(draw);
+
+    function drawGeometry() {
+        clearFeatures();
+        draw.activate();
+        draw.events.on({featureadded: drawCompleted});
+    }
+
+    function clearFeatures() {
+        vectorLayer.removeAllFeatures();
+        drawings.removeAllFeatures();
+    }
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer]);
+        map.setCenter(new SuperMap.LonLat(0, 0), 0);
+    }
+
+    function drawCompleted(event) {
+        vectorLayer.filter = new SuperMap.Filter.Spatial({
+            type: SuperMap.Filter.Spatial.INTERSECTS,
+            value: event.feature.geometry
+        });
+        vectorLayer.refresh({force: true});
+        vectorLayer.filter = myFilter;
+        draw.deactivate();
+        widgets.alert.clearAlert();
+    }
+
+    function notice() {
+        widgets.alert.showAlert(resources.msg_drawPolygon, true);
+    }
+
+</script>
+</body>
+</html>

+ 44 - 0
public/supermap/examples/classic/OGC_wcs.html

@@ -0,0 +1,44 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_wcs"></title>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var map, layer, layerWorld,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url1 = host + "/iserver/services/map-world/rest/maps/World",
+        url2 = host + "/iserver/services/data-world/wcs111";
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.LayerSwitcher(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            })], units: "degrees", allOverlays: true
+    });
+
+    layerWorld = new SuperMap.Layer.TiledDynamicRESTLayer("World", url1, {transparent: true, cacheEnabled: true});
+    layerWorld.events.on({"layerInitialized": addLayer1});
+
+    function addLayer1() {
+        //基于SuperMap对WCS地图图层进行了支持与扩展,需要额外引入WCSLayer.js脚本;
+        //脚本位于js/layer/WCSLayer.js;
+        //初始化WCS图层
+        layer = new SuperMap.Layer.WCS("wcsLayer", url2);
+        map.addLayers([layerWorld, layer]);
+        map.setCenter(new SuperMap.LonLat(0, 0), 2);
+    }
+</script>
+</body>
+</html>

+ 142 - 0
public/supermap/examples/classic/OGC_wms.html

@@ -0,0 +1,142 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_wms"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            right: 10px;
+            top: 50px;
+            text-align: center;
+            background: #FFF;
+            z-index: 1000;
+            width: 300px;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_wms"></h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <div class='input-group'>
+            <span style="margin-top: 15px" class='input-group-addon' data-i18n="resources.text_projection"></span>
+            <select class='form-control selectbtn' id='projectionSelect' name="projectionSelect"
+                    onchange="switchProjection()">
+                <option value="3857">3857</option>
+                <option value="4326">4326</option>
+            </select>
+        </div>
+        <p>
+        <div class='input-group'>
+            <span style="margin-top: 15px" class='input-group-addon' data-i18n="resources.text_wmsVersion"></span>
+            <select class='form-control selectbtn' id='versionSelect' name="versionSelect"
+                    onchange="switchProjection()">
+                <option value="1.3.0">1.3.0</option>
+                <option value="1.1.1">1.1.1</option>
+            </select>
+        </div>
+    </div>
+    <div id='mousePositionDiv' class='smCustomControlMousePosition'></div>
+</div>
+
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var map, layer, wms1, wms2, wms3, wms4, newHtml, projectionSelect, versionSelect, lastLayer, mapDiv,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var url1 = host + "/iserver/services/map-china400/wms130/China";
+    var url2 = host + "/iserver/services/map-china400/wms130/China_4326";
+    var url3 = host + "/iserver/services/map-china400/wms111/China";
+    var url4 = host + "/iserver/services/map-china400/wms111/China_4326";
+    map = new SuperMap.Map('map', {
+        controls: [new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation(),
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.LayerSwitcher()
+        ]
+    });
+    projectionSelect = document.getElementById("projectionSelect");
+    versionSelect = document.getElementById("versionSelect");
+    mapDiv = document.getElementById("map");
+    switchProjection();
+    setposition();
+    addHandler(window, "resize", setposition);
+
+    function switchProjection() {
+        if (lastLayer) {
+            map.removeLayer(lastLayer);
+        }
+        if (versionSelect.value == "1.3.0") {
+            if (projectionSelect.value == "3857") {
+                //设置layers图层名称必须是 GetCapabilities 操作返回的文档中声明的Name元素的值,地图图层之间以半角英文逗号进行分隔。最左边的图层在最底,下一个图层放到前一个的上面,依次类推。
+                //version,请求版本号。现支持”1.1.1”和”1.3.0”。
+                //设置地图的projection,最大显示范围bounds参数
+                //初始化WCS图层
+                wms1 = new SuperMap.Layer.WMS("WMS1", url1, {
+                    layers: "China",
+                    version: '1.3.0'
+                }, {
+                    projection: "EPSG:3857",
+                    maxExtent: new SuperMap.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34)
+                });
+                switchLayer(wms1);
+            } else if (projectionSelect.value == "4326") {
+                wms2 = new SuperMap.Layer.WMS("WMS2", url2, {
+                    layers: "China_4326",
+                    version: '1.3.0'
+                }, {projection: "EPSG:4326", maxExtent: new SuperMap.Bounds(-180, -90, 180, 90)});
+                switchLayer(wms2);
+            }
+        } else if (versionSelect.value == "1.1.1") {
+            if (projectionSelect.value == "3857") {
+                wms3 = new SuperMap.Layer.WMS("WMS3", url3, {
+                    layers: "China",
+                    version: '1.1.1'
+                }, {
+                    projection: "EPSG:3857",
+                    maxExtent: new SuperMap.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34)
+                });
+                switchLayer(wms3);
+            } else if (projectionSelect.value == "4326") {
+                wms4 = new SuperMap.Layer.WMS("WMS4", url4, {
+                    layers: "China_4326",
+                    version: '1.1.1'
+                }, {projection: "EPSG:4326", maxExtent: new SuperMap.Bounds(-180, -90, 180, 90)});
+                switchLayer(wms4);
+            }
+        }
+        document.getElementById("mousePositionDiv").innerHTML = newHtml;
+    }
+
+    function switchLayer(wms) {
+        map.addLayers([wms]);
+        var center = new SuperMap.LonLat(0, 0);
+        map.setCenter(center, 1);
+        lastLayer = wms;
+        mapDiv.focus();
+        newHtml = resources.text_currentInfo+"<br>" + resources.text_mapProjection + wms.projection + "<br>"+resources.text_currentVersion + wms.params.VERSION;
+
+    }
+
+    function addHandler(element, type, handler) {
+        if (element.addEventListener) {
+            element.addEventListener(type, handler, false);
+        } else if (element.attachEvent) {
+            element.attachEvent("on" + type, handler);
+        } else {
+            element["on" + type] = handler;
+        }
+    }
+    function setposition() {
+        var width = map.getSize().w;
+        document.getElementById("mousePositionDiv").style.left = width / 2 - 100 + "px";
+    }
+</script>
+</body>
+</html>

+ 62 - 0
public/supermap/examples/classic/OGC_wmtsLayer.html

@@ -0,0 +1,62 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_wmtsLayer"></title>
+    <script type="text/javascript" src="../js/include-web.js"></script>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var map, layer,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    url = host + "/iserver/services/map-world/wmts100";
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            })]
+    });
+
+    //wmts或许所需要的matrixID信息
+    var matrixIds = [];
+    for (var i = 0; i < 22; ++i) {
+        matrixIds[i] = {identifier: i};
+    }
+    ;
+    //当前图层的分辨率数组信息,和matrixIds一样,需要用户从wmts服务获取并明确设置,resolutions数组和matrixIds数组长度相同
+    var resolutions = [1.25764139776733, 0.628820698883665, 0.251528279553466,
+        0.125764139776733, 0.0628820698883665, 0.0251528279553466,
+        0.0125764139776733, 0.00628820698883665, 0.00251528279553466,
+        0.00125764139776733, 0.000628820698883665, 0.000251528279553466,
+        0.000125764139776733, 0.0000628820698883665, 0.0000251528279553466,
+        0.0000125764139776733, 0.00000628820698883665, 0.00000251528279553466,
+        0.00000125764139776733, 0.000000628820698883665, 0.000000251528279553466];
+    //新建图层
+    layer = new SuperMap.Layer.WMTS({
+        name: "World",
+        url: url,
+        layer: "World",
+        style: "default",
+        matrixSet: "GlobalCRS84Scale_World",
+        format: "image/png",
+        resolutions: resolutions,
+        matrixIds: matrixIds,
+        opacity: 1,
+        requestEncoding: "KVP"
+    });
+
+    //图层添加并显示指定级别
+    map.addLayers([layer]);
+    map.setCenter(new SuperMap.LonLat(0, 0), 2);
+</script>
+</body>
+</html>

+ 208 - 0
public/supermap/examples/classic/SummaryMeshJobService.html

@@ -0,0 +1,208 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <title data-i18n="resources.title_SummaryMeshJobService"></title>
+    <style>
+        .control {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+        }
+
+        #map {
+            position: absolute;
+        }
+    </style>
+</head>
+
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+    <div id="map" style="width: 100%;height:100%"></div>
+    <div id="control" class="control" style='width:350px'>
+        <div class="panel panel-default">
+            <div class="panel-heading">
+                <h3 class="panel-title" data-i18n="resources.title_SummaryMeshJobService"></h3>
+            </div>
+            <div class="panel-body">
+                <div class="input-group">
+                    <span class="input-group-addon"><span data-i18n="resources.text_inputData"></span><span data-i18n="[title]resources.text_requiredField"
+                            style="color: red;"> * </span> </span>
+                    <input id="datasetName" type="text" class="form-control" value="samples_newyork_taxi_2013-01_14k" />
+                </div>
+                <p>
+                    <div class="input-group">
+                        <span class="input-group-addon"><span data-i18n="resources.text_polymerizationType"></span><span
+                                data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span> </span>
+                        <select class="form-control" id="type" name="clientType">
+                            <option value="SUMMARYMESH" data-i18n="resources.text_polymerizationMesh" selected="selected"></option>
+                            <option value="SUMMARYREGION" data-i18n="resources.text_polymerizationRegion"></option>
+                        </select>
+                    </div>
+                    <p>
+                        <div id="summarymeshS">
+                            <div class="input-group">
+                                <span class="input-group-addon"><span data-i18n="resources.text_meshSurfaceType"></span><span
+                                        data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span></span>
+                                <select class="form-control" id="meshType" name="clientType">
+                                    <option value="0" data-i18n="resources.text_4grid" selected="selected"></option>
+                                    <option value="1" data-i18n="resources.text_6grid"></option>
+                                </select>
+                            </div>
+                            <p>
+                                <div class="input-group">
+                                    <span class="input-group-addon" data-i18n="resources.text_analysisRange"></span>
+                                    <input id="query" type="text" class="form-control" value="-74.150, 40.550, -73.750, 40.950" />
+                                </div>
+                                <p>
+                                    <div class="input-group">
+                                        <span class="input-group-addon"><span data-i18n="resources.text_resolution"></span><span
+                                                data-i18n="[title]resources.text_requiredField" style="color: red;"> *
+                                            </span>  </span>
+                                        <input id="resolution" type="text" class="form-control" value="100" />
+                                    </div>
+                                    <p>
+                        </div>
+                        <div id="summaryregionS" style="display: none">
+                            <div class="input-group">
+                                <span class="input-group-addon" data-i18n="resources.text_regionDataset"></span>
+                                <select class="form-control" id="regionDataset" name="clientType">
+                                    <option value="samples_processing_newyorkZone_R" selected="selected">
+                                        samples_processing_newyorkZone_R
+                                    </option>
+                                    <option value="samples_processing_singleRegion_R">samples_processing_singleRegion_R
+                                    </option>
+                                </select>
+                            </div>
+                            <p>
+                        </div>
+                        <div class="input-group">
+                            <span class="input-group-addon" data-i18n="resources.text_statisticModes"></span>
+                            <input id="statisticModes" type="text" class="form-control" value="max" />
+                        </div>
+                        <p>
+                            <div class="input-group">
+                                <span class="input-group-addon" data-i18n="resources.text_weightField"></span>
+                                <input id="fields" type="text" class="form-control" value="col7" />
+                            </div>
+                            <p>
+                                <div align="right">
+                                    <input type="button" id='btn' class="btn btn-primary" data-i18n="[value]resources.btn_polymerization" />
+                                </div>
+            </div>
+        </div>
+        <script type="text/javascript" include="jquery,bootstrap,widgets" src="../js/include-web.js"></script>
+        <script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
+        <script type="text/javascript">
+            var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+            var resultLayer,
+                processingsUrl = host + "/iserver/services/distributedanalyst/rest/v1/jobs",
+                mapURL = host + "/iserver/services/map-world/rest/maps/World",
+                map = new SuperMap.Map("map", {
+                    controls: [
+                        new SuperMap.Control.Navigation(),
+                        new SuperMap.Control.Zoom(),
+                        new SuperMap.Control.LayerSwitcher()
+
+                    ],
+                    allOverlays: true
+                });
+            map.addControl(new SuperMap.Control.MousePosition());
+            var layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", mapURL, null, {
+                maxResolution: "auto"
+            });
+            layer.events.on({
+                "layerInitialized": addLayer
+            });
+
+            function addLayer() {
+                map.addLayers([layer]);
+                map.setCenter(new SuperMap.LonLat(-73.95, 40.75), 12);
+            }
+
+            var processingService = new SuperMap.REST.ProcessingService(processingsUrl, {
+                withCredentials: window.isLocal
+            });
+            SuperMap.SecurityManager.registerToken(processingsUrl, window.exampleToken);
+            $("#type").change(function (e) {
+                if (e.target.selectedIndex === 0) {
+                    $("#summarymeshS").show();
+                    $("#summaryregionS").hide();
+                    return;
+                }
+                $("#summarymeshS").hide();
+                $("#summaryregionS").show();
+            });
+
+            function getQuery() {
+                if ($('#query').val() === "") {
+                    return "";
+                }
+                var query = [];
+                $('#query').val().split(',').map(function (el) {
+                    query.push(parseFloat(el));
+                });
+                return new SuperMap.Bounds(
+                    query[0],
+                    query[1],
+                    query[2],
+                    query[3]
+                );
+            }
+
+            $('#btn').on('click', function () {
+                if ($('#msg_container')[0]) {
+                    $('#msg_container').remove();
+                }
+                widgets.loader.showLoader();
+                if (map && resultLayer) {
+                    map.removeLayer(resultLayer);
+                }
+                var summaryMeshJobParameter = new SuperMap.SummaryMeshJobParameter({
+                    datasetName: $('#datasetName').val(),
+                    resolution: $('#resolution').val(),
+                    meshType: $('#meshType option:selected').attr('value'),
+                    fields: $('#fields').val(),
+                    query: getQuery(),
+                    statisticModes: $('#statisticModes').val(),
+                    type: $('#type option:selected').attr('value'),
+                    regionDataset: $('#regionDataset option:selected').attr('value')
+                });
+                processingService.addSummaryMeshJob(summaryMeshJobParameter, function (serviceResult) {
+                    if (serviceResult.error) {
+                        widgets.loader.removeLoader();
+                        var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error.code;
+                        widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
+                        return;
+                    }
+                    serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
+                        if (info.serviceType === 'RESTMAP') {
+                            SuperMap.FetchRequest.get(info.serviceAddress + '/maps').then(
+                                function (response) {
+                                    return response.json();
+                                }).then(function (result) {
+                                var mapUrl = result[0].path;
+                                resultLayer = new SuperMap.Layer.TiledDynamicRESTLayer(
+                                    "resultLayer", mapUrl, {
+                                        transparent: true
+                                    });
+                                resultLayer.events.on({
+                                    "layerInitialized": addLayer
+                                });
+
+                                function addLayer() {
+                                    map.addLayer(resultLayer);
+                                    widgets.loader.removeLoader();
+                                }
+                            });
+                        }
+                    });
+                });
+            });
+        </script>
+</body>
+
+</html>

+ 283 - 0
public/supermap/examples/classic/SummaryRegionJobService.html

@@ -0,0 +1,283 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <title data-i18n="resources.title_SummaryRegionJobService"></title>
+    <style>
+        .control {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+        }
+
+        #map {
+            position: absolute;
+        }
+    </style>
+</head>
+
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+    <div id="map" style="width: 100%;height:100%"></div>
+    <div id="control" class="control" style='width:500px'>
+        <div class="panel panel-default">
+            <div class="panel-heading">
+                <h3 class="panel-title" data-i18n="resources.title_SummaryRegionJobService"></h3>
+            </div>
+            <div class="panel-body">
+                <div class="input-group">
+                    <span class="input-group-addon"><span data-i18n="resources.text_inputData"></span><span data-i18n="[title]resources.text_requiredField"
+                            style="color: red;"> * </span>     </span>
+                    <input id="datasetName" type="text" class="form-control" value="samples_processing_newyorkZone_R" />
+                </div>
+                <p>
+                    <div class="input-group">
+                        <span class="input-group-addon"><span data-i18n="resources.text_summaryType"></span><span
+                                data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span>     </span>
+                        <div>
+                            <select class="form-control" id="type" name="clientType">
+                                <option value="SUMMARYMESH" data-i18n="resources.text_summaryMesh" selected="selected">
+                                </option>
+                                <option value="SUMMARYREGION" data-i18n="resources.text_summaryRegion"></option>
+                            </select>
+                        </div>
+                    </div>
+                    <p>
+                        <div id="meshTypeS" class="input-group">
+                            <span class="input-group-addon"><span data-i18n="resources.text_meshSurfaceType"></span><span
+                                    data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span>  </span>
+                            <select class="form-control" id="meshType" name="clientType">
+                                <option value="0" data-i18n="resources.text_4grid" selected="selected"></option>
+                                <option value="1" data-i18n="resources.text_6grid"></option>
+                            </select>
+                        </div>
+                        <p>
+                            <div id="regionDatasetS" class="input-group">
+                                <span class="input-group-addon" data-i18n="resources.text_summaryDataset"><span
+                                        data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span>  </span>
+                                <input id="regionDataset" type="text" class="form-control" value="samples_processing_newyorkZone_R" />
+                            </div>
+                            <p>
+                                <div class="input-group">
+                                    <span class="input-group-addon" data-i18n="resources.text_analysisRange"></span>
+                                    <input id="query" type="text" class="form-control" value="-74.050,40.650,-73.850,40.850" />
+                                </div>
+                                <p>
+                                    <p>
+                                        <div class="input-group">
+                                            <span class="input-group-addon" data-i18n="resources.text_statisticStandardField"></span>
+                                            <span class="form-control">
+                                                <input id="standardSummaryFields" type="checkbox">
+                                            </span>
+                                            <span class="input-group-addon" data-i18n="resources.text_statisticWeightField"></span>
+                                            <span class="form-control">
+                                                <input id="weightedSummaryFields" type="checkbox">
+                                            </span>
+                                        </div>
+                                        <p>
+                                            <div id="standardS" style="display: none">
+                                                <div class="input-group">
+                                                    <span class="input-group-addon"><span data-i18n="resources.text_statisticAttrFieldMode"></span><span
+                                                            data-i18n="[title]resources.text_requiredField" style="color: red;">
+                                                            * </span> </span>
+                                                    <input id="standardStatisticModes" type="text" class="form-control"
+                                                        value="max" />
+                                                </div>
+                                                <p>
+                                                    <div class="input-group">
+                                                        <span class="input-group-addon"><span data-i18n="resources.text_AttrFieldName"></span><span
+                                                                data-i18n="[title]resources.text_requiredField" style="color: red;">
+                                                                * </span>    </span>
+                                                        <input id="standardFields" type="text" class="form-control"
+                                                            value="LocationID" />
+                                                    </div>
+                                                    <p>
+                                            </div>
+                                            <div id="weightS" style="display: none">
+                                                <div class="input-group">
+                                                    <span class="input-group-addon"><span data-i18n="resources.text_statisticWeightFieldMode"></span><span
+                                                            data-i18n="[title]resources.text_requiredField" style="color: red;">
+                                                            * </span> </span>
+                                                    <input id="weightedStatisticModes" type="text" class="form-control"
+                                                        value="max" />
+                                                </div>
+                                                <p>
+                                                    <div class="input-group">
+                                                        <span class="input-group-addon"><span data-i18n="resources.text_weightFieldName"></span><span
+                                                                data-i18n="[title]resources.text_requiredField" style="color: red;">
+                                                                * </span>    </span>
+                                                        <input id="weightedFields" type="text" class="form-control"
+                                                            value="LocationID" />
+                                                    </div>
+                                                    <p>
+                                            </div>
+
+                                            <div id="resolutionS" class="input-group">
+                                                <span class="input-group-addon" data-i18n="resources.text_gridSize"></span>
+                                                <input id="resolution" type="text" class="form-control" value="100" />
+                                            </div>
+                                            <p>
+                                                <div id="meshSizeUnitS" class="input-group">
+                                                    <span class="input-group-addon" data-i18n="resources.text_gridSizeUnit"></span>
+                                                    <select class="form-control" id="meshSizeUnit" name="clientType">
+                                                        <option value="Meter" selected="selected">Meter</option>
+                                                        <option value="Kilometer">Kilometer</option>
+                                                        <option value="Yard">Yard</option>
+                                                        <option value="Foot">Foot</option>
+                                                        <option value="Mile">Mile</option>
+                                                    </select>
+                                                </div>
+                                                <p>
+                                                    <div class="input-group">
+                                                        <span class="input-group-addon" data-i18n="resources.text_lengthAndArea"></span>
+                                                        <span class="form-control">
+                                                            <input id="sumShape" type="checkbox" checked>
+                                                        </span>
+                                                    </div>
+                                                    <p>
+                                                        <div align="right">
+                                                            <input type="button" id='btn' class="btn btn-primary"
+                                                                data-i18n="[value]resources.btn_summary" />
+                                                        </div>
+            </div>
+        </div>
+        <script type="text/javascript" include="jquery,bootstrap,widgets" src="../js/include-web.js"></script>
+        <script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
+        <script type="text/javascript">
+            var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+            var resultLayer,
+                processingsUrl = host + "/iserver/services/distributedanalyst/rest/v1/jobs",
+                mapURL = host + "/iserver/services/map-world/rest/maps/World",
+                map = new SuperMap.Map("map", {
+                    controls: [
+                        new SuperMap.Control.Navigation(),
+                        new SuperMap.Control.Zoom(),
+                        new SuperMap.Control.LayerSwitcher()
+
+                    ],
+                    allOverlays: true
+                });
+            map.addControl(new SuperMap.Control.MousePosition());
+            var layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", mapURL, null, {
+                maxResolution: "auto"
+            });
+            layer.events.on({
+                "layerInitialized": addLayer
+            });
+
+            function addLayer() {
+                map.addLayers([layer]);
+                map.setCenter(new SuperMap.LonLat(-73.95, 40.75), 12);
+            }
+
+            var processingService = new SuperMap.REST.ProcessingService(processingsUrl, {
+                withCredentials: window.isLocal
+            });
+            SuperMap.SecurityManager.registerToken(processingsUrl, window.exampleToken);
+
+            $("#standardSummaryFields").change(function (e) {
+                if (e.target.checked) {
+                    $("#standardS").show();
+                    return;
+                }
+                $("#standardS").hide();
+            });
+            $("#weightedSummaryFields").change(function (e) {
+                if (e.target.checked) {
+                    $("#weightS").show();
+                    return;
+                }
+                $("#weightS").hide();
+            });
+            $("#type").change(function (e) {
+                if (e.target.selectedIndex === 0) {
+                    $("#meshTypeS").show();
+                    $("#resolutionS").show();
+                    $("#meshSizeUnitS").show();
+                    $("#regionDatasetS").hide();
+                    return;
+                }
+                $("#meshTypeS").hide();
+                $("#resolutionS").hide();
+                $("#meshSizeUnitS").hide();
+                $("#regionDatasetS").show();
+            });
+
+            function getQuery() {
+                if ($('#query').val() === "") {
+                    return "";
+                }
+                var query = [];
+                $('#query').val().split(',').map(function (el) {
+                    query.push(parseFloat(el));
+                });
+                return new SuperMap.Bounds(
+                    query[0],
+                    query[1],
+                    query[2],
+                    query[3]
+                );
+            }
+
+            $('#btn').on('click', function () {
+                if ($('#msg_container')[0]) {
+                    $('#msg_container').remove();
+                }
+                widgets.loader.showLoader();
+                if (map && resultLayer) {
+                    map.removeLayer(resultLayer);
+                }
+                var summaryRegionJobParameter = new SuperMap.SummaryRegionJobParameter({
+                    datasetName: $('#datasetName').val(),
+                    regionDataset: $('#regionDataset').val(),
+                    type: $('#type option:selected').attr('value'),
+                    meshType: $('#meshType option:selected').attr('value'),
+                    query: getQuery(),
+                    standardSummaryFields: $('#standardSummaryFields').get(0).checked,
+                    weightedSummaryFields: $('#weightedSummaryFields').get(0).checked,
+                    standardStatisticModes: $('#standardStatisticModes').val(),
+                    standardFields: $('#standardFields').val(),
+                    weightedStatisticModes: $('#weightedStatisticModes').val(),
+                    weightedFields: $('#weightedFields').val(),
+                    resolution: $('#resolution').val(),
+                    meshSizeUnit: $('#meshSizeUnit option:selected').attr('value'),
+                    sumShape: $('#sumShape').get(0).checked
+                });
+                processingService.addSummaryRegionJob(summaryRegionJobParameter, function (serviceResult) {
+                    if (serviceResult.error) {
+                        widgets.loader.removeLoader();
+                        var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error.code;
+                        widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
+                        return;
+                    }
+                    serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
+                        if (info.serviceType === 'RESTMAP') {
+                            SuperMap.FetchRequest.get(info.serviceAddress + '/maps').then(
+                                function (response) {
+                                    return response.json();
+                                }).then(function (result) {
+                                var mapUrl = result[0].path;
+                                resultLayer = new SuperMap.Layer.TiledDynamicRESTLayer(
+                                    "resultLayer", mapUrl, {
+                                        transparent: true
+                                    });
+                                resultLayer.events.on({
+                                    "layerInitialized": addLayer
+                                });
+
+                                function addLayer() {
+                                    map.addLayer(resultLayer);
+                                    widgets.loader.removeLoader();
+                                }
+                            });
+                        }
+                    });
+                });
+            });
+        </script>
+</body>
+
+</html>

+ 257 - 0
public/supermap/examples/classic/addressMatchService.html

@@ -0,0 +1,257 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title data-i18n="resources.title_addressMatchService"></title>
+    <script type="text/javascript" include="bootstrap-css,jquery" src="../js/include-web.js"></script>
+    <style>
+        .control {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+        }
+
+        #map {
+            position: absolute;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%">
+<div id="map" style="width: 100%;height:100%"></div>
+<div id="control" class="control" style='width:20%'>
+    <div class="panel panel-default">
+        <div class="panel-body">
+            <ul class="nav nav-tabs nav-justified">
+                <li id="geocode" role="presentation" class="active"><a href="#" data-i18n="resources.text_code"></a></li>
+                <li id="geodecode" role="presentation"><a href="#" data-i18n="resources.text_decode"></a></li>
+            </ul>
+            <p></p>
+            <div class="tab-content">
+                <div id="geocodeParam" role="tabpanel" class="tab-pane deplistContent active">
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_address"></span>
+                        <input id="address" type="text" class="form-control" placeholder="超图软件"/>
+                    </div>
+
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_filterField"></span>
+                        <input id="filters" type="text" class="form-control"
+                               placeholder="北京市,朝阳区"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_minIndex"></span>
+                        <input id="fromIndex" type="text" class="form-control"
+                               placeholder="0"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_maxIndex"></span>
+                        <input id="toIndex" type="text" class="form-control"
+                               placeholder="10"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_maxCount"></span>
+                        <input id="maxReturn" type="text" class="form-control"
+                               placeholder="-1"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_coorSystem"></span>
+                        <input id="prjCoordSys" type="text" class="form-control"
+                               placeholder="{epsgcode:4326}"/>
+                    </div>
+                    <p></p>
+                    <div align="right">
+                        <input type="button" id='codeBtn' class="btn btn-primary" data-i18n="[value]resources.text_input_value_match"/>
+                    </div>
+                </div>
+                <div id="geodecodeParam" role="tabpanel" class="tab-pane deplistContent">
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_abscissa"></span>
+                        <input id="xCoord" type="text" class="form-control" placeholder="116.3518541194752"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_ordinate"></span>
+                        <input id="yCoord" type="text" class="form-control"
+                               placeholder="40.00097839595237"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_filterField"></span>
+                        <input id="filters2" type="text" class="form-control"
+                               placeholder=""/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_minIndex"></span>
+                        <input id="fromIndex2" type="text" class="form-control"
+                               placeholder="0"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_maxIndex"></span>
+                        <input id="toIndex2" type="text" class="form-control"
+                               placeholder="10"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_maxCount"></span>
+                        <input id="maxReturn2" type="text" class="form-control"
+                               placeholder="-1"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_queryRadius"></span>
+                        <input id="geoDecodingRadius" type="text" class="form-control"
+                               placeholder="-1"/>
+                    </div>
+                    <p></p>
+                    <div class="input-group">
+                        <span class="input-group-addon" data-i18n="resources.text_ordinate"></span>
+                        <input id="prjCoordSys2" type="text" class="form-control"
+                               placeholder="{epsgcode:4326}"/>
+                    </div>
+                    <p></p>
+                    <div align="right">
+                        <input type="button" id='decodeBtn' class="btn btn-primary" data-i18n="[value]resources.text_input_value_match"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var infowin, layer, markerlayer,
+        url = host + "/iserver/services/map-china400/rest/maps/China_4326",
+        addressUrl = host + "/iserver/services/addressmatch-Address/restjsr/v1/address",
+        imgUrl = "../img/marker.png",
+        addressMatchService = new SuperMap.REST.AddressMatchService(addressUrl, {data: '11'}),
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.Navigation(),
+                new SuperMap.Control.Zoom()
+            ]
+        });
+    map.addControl(new SuperMap.Control.MousePosition());
+
+    layer = new SuperMap.Layer.TiledDynamicRESTLayer("China", url, null, {maxResolution: "auto"});
+    markerlayer = new SuperMap.Layer.Markers("markerLayer");
+    layer.events.on({"layerInitialized": addLayers});
+
+    function addLayers() {
+        map.addLayers([layer, markerlayer]);
+        map.setCenter(new SuperMap.LonLat(116.383572, 39.914714), 10);
+    }
+
+    $("#geocode").click(function () {
+        $("#geocode")[0].className = 'active';
+        $("#geodecode")[0].className = '';
+        $("#geocodeParam").addClass('active');
+        $("#geodecodeParam").removeClass('active');
+    });
+    $("#geodecode").click(function () {
+        $("#geocode")[0].className = '';
+        $("#geodecode")[0].className = 'active';
+        $("#geodecodeParam").addClass('active');
+        $("#geocodeParam").removeClass('active');
+    });
+
+    //判断输入字符串是否为空或者全部都是空格
+    function isNull(str) {
+        if (str == "") return true;
+        var regu = "^[ ]+$";
+        var re = new RegExp(regu);
+        return re.test(str);
+    }
+
+    $("#codeBtn").click(function () {
+        var geoCodeParam = new SuperMap.GeoCodingParameter({
+            address: $('#address').val() || $('#address').attr('placeholder'),
+            fromIndex: $('#fromIndex').val() || $('#fromIndex').attr('placeholder'),
+            toIndex: $('#toIndex').val() || $('#toIndex').attr('placeholder'),
+            filters: $('#filters').val() || $('#filters').attr('placeholder'),
+            prjCoordSys: $('#prjCoordSys').val() || $('#prjCoordSys').attr('placeholder'),
+            maxReturn: $('#maxReturn').val() || $('#maxReturn').attr('placeholder')
+        });
+        addressMatchService.code(geoCodeParam, match);
+    });
+    $("#decodeBtn").click(function () {
+        var geoDecodeParam = new SuperMap.GeoDecodingParameter({
+            x: $('#xCoord').val() || $('#xCoord').attr('placeholder'),
+            y: $('#yCoord').val() || $('#yCoord').attr('placeholder'),
+            fromIndex: $('#fromIndex2').val() || $('#fromIndex2').attr('placeholder'),
+            toIndex: $('#toIndex2').val() || $('#toIndex2').attr('placeholder'),
+            filters: $('#filters2').val() || $('#filters2').attr('placeholder'),
+            prjCoordSys: $('#prjCoordSys2').val() || $('#prjCoordSys2').attr('placeholder'),
+            maxReturn: $('#maxReturn2').val() || $('#maxReturn2').attr('placeholder'),
+            geoDecodingRadius: $('#geoDecodingRadius').val() || $('#geoDecodingRadius').attr('placeholder'),
+        });
+        addressMatchService.decode(geoDecodeParam, match);
+    });
+
+    function match(obj) {
+        closeInfoWin();
+        markerlayer.clearMarkers();
+        obj.result.map(function (item) {
+            var size = new SuperMap.Size(44, 33);
+            var offset = new SuperMap.Pixel(-(size.w / 2), -size.h);
+            var icon = new SuperMap.Icon(imgUrl, size, offset);
+            var marker = new SuperMap.Marker(new SuperMap.LonLat(item.location.x, item.location.y), icon);
+            marker.events.on({
+                "click": openInfoWin,
+                "scope": marker
+            });
+            markerlayer.addMarker(marker);
+            map.setCenter(new SuperMap.LonLat(116.383572, 39.914714), 8);
+
+            function openInfoWin() {
+                closeInfoWin();
+                var lonlat = marker.getLonLat();
+                var size = new SuperMap.Size(0, 33);
+                var offset = new SuperMap.Pixel(11, -30);
+                var icon = new SuperMap.Icon(imgUrl, size, offset);
+                var innerHTML = "";
+                innerHTML += resources.text_address + ":" + item.address + "<br>";
+                var x = Number(item.location.x.toString().match(/^\d+(?:\.\d{0,2})?/));
+                var y = Number(item.location.y.toString().match(/^\d+(?:\.\d{0,2})?/));
+                innerHTML += resources.text_coordinate +":[" + x + "," + y + "]<br>";
+                if (item.score > 0) {
+                    innerHTML += resources.text_coordinate +":" + item.score + "<br>";
+                }
+                innerHTML += resources.text_matchDegree + ":" + item.filters + "<br>";
+                var popup = new SuperMap.Popup.FramedCloud("popwin",
+                    new SuperMap.LonLat(lonlat.lon, lonlat.lat),
+                    null,
+                    innerHTML,
+                    icon,
+                    true);
+                infowin = popup;
+                map.addPopup(popup);
+            }
+
+        });
+
+        //关闭信息框
+        function closeInfoWin() {
+            if (infowin) {
+                try {
+                    infowin.hide();
+                    infowin.destroy();
+                }
+                catch (e) {
+                }
+            }
+        }
+    }
+</script>
+</body>
+</html>

+ 149 - 0
public/supermap/examples/classic/analysis_bufferAnalyst.html

@@ -0,0 +1,149 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_bufferAnalyst1"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_bufferAnalyst1"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_bufferAnalyst" onclick="bufferAnalystProcess()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_removeResult" onclick="removeResult()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, baseLayer, resultLayer, vectorLayer,
+        points = [new SuperMap.Geometry.Point(4933.319287022352, -3337.3849141502124),
+            new SuperMap.Geometry.Point(4960.9674060199022, -3349.3316322355736),
+            new SuperMap.Geometry.Point(5006.0235999418364, -3358.8890067038628),
+            new SuperMap.Geometry.Point(5075.3145648369318, -3378.0037556404409),
+            new SuperMap.Geometry.Point(5305.19551436013, -3376.9669111768926)],
+        roadLine = new SuperMap.Geometry.LineString(points),
+        styleLine = {
+            strokeColor: "blue",
+            strokeWidth: 3,
+            strokeLinecap: "round",
+            strokeDashstyle: "solid"
+        },
+        styleRegion = {
+            strokeColor: "#304DBE",
+            strokeWidth: 2,
+            pointerEvents: "visiblePainted",
+            fillColor: "#304DBE",
+            fillOpacity: 0.4
+        },
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        map.allOverlays = true;
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.events.on({"layerInitialized": addLayer});
+        resultLayer = new SuperMap.Layer.Vector("缓冲区分析结果");
+        vectorLayer = new SuperMap.Layer.Vector("vectorLine");
+
+        var featureLine = new SuperMap.Feature.Vector();
+        featureLine.geometry = roadLine;
+        featureLine.style = styleLine;
+        vectorLayer.addFeatures(featureLine);
+    }
+
+    function addLayer() {
+        map.addLayers([baseLayer, resultLayer, vectorLayer]);
+        map.setCenter(new SuperMap.LonLat(5105, -3375), 4);
+    }
+
+    function bufferAnalystProcess() {
+        widgets.alert.clearAlert();
+        resultLayer.removeAllFeatures();
+        var bufferServiceByDatasets = new SuperMap.REST.BufferAnalystService(url2),
+            bufferDistance = new SuperMap.REST.BufferDistance({
+                value: 10
+            }),
+            bufferSetting = new SuperMap.REST.BufferSetting({
+                endType: SuperMap.REST.BufferEndType.ROUND,
+                leftDistance: bufferDistance,
+                rightDistance: bufferDistance,
+                semicircleLineSegment: 10
+            }),
+            filterParameter = new SuperMap.REST.FilterParameter({
+                attributeFilter: "NAME='团结路'"
+            }),
+            dsBufferAnalystParameters = new SuperMap.REST.DatasetBufferAnalystParameters({
+                dataset: "RoadLine2@Changchun",
+                filterQueryParameter: filterParameter,
+                bufferSetting: bufferSetting
+            });
+        bufferServiceByDatasets.events.on({
+            "processCompleted": bufferAnalystCompleted,
+            "processFailed": bufferAnalystFailed
+        });
+        bufferServiceByDatasets.processAsync(dsBufferAnalystParameters);
+    }
+
+    function bufferAnalystCompleted(args) {
+        resultLayer.addFeatures(args.result.recordset.features);
+    }
+
+    function bufferAnalystFailed(args) {
+        widgets.alert.showAlert(args.error.errorMsg,false);
+    }
+
+    function removeResult() {
+        widgets.alert.clearAlert();
+        resultLayer.removeAllFeatures();
+    }
+
+</script>
+
+</body>
+</html>

+ 241 - 0
public/supermap/examples/classic/analysis_bufferQuery.html

@@ -0,0 +1,241 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_bufferAnalyst2"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_bufferAnalyst2"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_addPath" onclick="addPath()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_bufferAnalyst" onclick="bufferAnalystProcess()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_query" onclick="queryByGeometry()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_removeResult" onclick="clearElements()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var  map, layer, vectorLayer, resultLayer, markerLayer, gpsLine, bufferResultGeometry,
+        myPointsList = [new SuperMap.Geometry.Point(2823.940, -4690.000),
+            new SuperMap.Geometry.Point(3448.940, -4690.301),
+            new SuperMap.Geometry.Point(3816.561, -3810.125),
+            new SuperMap.Geometry.Point(3917.383, -3609.158),
+            new SuperMap.Geometry.Point(3976.983, -3490.291),
+            new SuperMap.Geometry.Point(4020.004, -4377.027),
+            new SuperMap.Geometry.Point(4076.265, -4382.939),
+            new SuperMap.Geometry.Point(4215.049, -4382.333),
+            new SuperMap.Geometry.Point(4428.156, -4382.285),
+            new SuperMap.Geometry.Point(4647.579, -4383.017),
+            new SuperMap.Geometry.Point(4679.707, -4382.898),
+            new SuperMap.Geometry.Point(4917.462, -4382.635),
+            new SuperMap.Geometry.Point(5074.019, -4381.833),
+            new SuperMap.Geometry.Point(5257.042, -4381.031),
+            new SuperMap.Geometry.Point(5363.785, -4380.717),
+            new SuperMap.Geometry.Point(5671.717, -4378.794),
+            new SuperMap.Geometry.Point(5847.521, -4377.970),
+            new SuperMap.Geometry.Point(5990.637, -4303.528),
+            new SuperMap.Geometry.Point(6055.343, -4270.072),
+            new SuperMap.Geometry.Point(6168.913, -4382.389),
+            new SuperMap.Geometry.Point(6214.183, -4209.927),
+            new SuperMap.Geometry.Point(6377.789, -4209.142),
+            new SuperMap.Geometry.Point(6393.692, -4210.142),
+            new SuperMap.Geometry.Point(6693.989, -4207.450),
+            new SuperMap.Geometry.Point(6788.392, -4208.450),
+            new SuperMap.Geometry.Point(6984.304, -4207.210),
+            new SuperMap.Geometry.Point(7189.183, -4208.296),
+            new SuperMap.Geometry.Point(7300.505, -4208.296),
+            new SuperMap.Geometry.Point(7573.056, -4208.803),
+            new SuperMap.Geometry.Point(7680.977, -4208.804),
+            new SuperMap.Geometry.Point(7850.593, -4208.393),
+            new SuperMap.Geometry.Point(8182.656, -4210.533),
+            new SuperMap.Geometry.Point(8554.893, -4261.485)],
+        myFeatures = [],
+        stylePoint = {
+            strokeColor: "black",
+            strokeOpacity: 1,
+            strokeDashstyle: "solid",
+            fillColor: "black",
+            pointRadius: 2
+        },
+        styleLine = {
+            strokeColor: "red",
+            strokeWidth: 2,
+            pointRadius: 3,
+            pointerEvents: "visiblePainted",
+            fill: false
+        },
+        styleRegion = {
+            strokeColor: "#304DBE",
+            strokeWidth: 2,
+            pointerEvents: "visiblePainted",
+            fillColor: "#304DBE",
+            fillOpacity: 0.4
+        },
+        url = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
+    init();
+
+    function init() {
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        resultLayer = new SuperMap.Layer.Vector("Result Layer");
+        markerLayer = new SuperMap.Layer.Markers("Markers Layer");
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+        for (var i = 0; i < myPointsList.length; i++) {
+            myFeature = new SuperMap.Feature.Vector();
+            myFeature.geometry = myPointsList[i];
+            myFeature.style = stylePoint;
+            myFeatures.push(myFeature);
+        }
+        vectorLayer.addFeatures(myFeatures);
+    }
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer, resultLayer, markerLayer]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 0);
+    }
+
+    //将离散gps信号点生成线路
+    function addPath() {
+        widgets.alert.clearAlert();
+        var pathFeature = new SuperMap.Feature.Vector();
+        gpsLine = new SuperMap.Geometry.LineString(myPointsList);
+        pathFeature.geometry = gpsLine;
+        pathFeature.style = styleLine;
+        resultLayer.addFeatures(pathFeature);
+    }
+
+    //对生成的线路进行缓冲区分析
+    function bufferAnalystProcess() {
+        widgets.alert.clearAlert();
+        if (!gpsLine) {
+            widgets.alert.showAlert(resources.msg_addPath,true);
+            return;
+        }
+        var bufferServiceByGeometry = new SuperMap.REST.BufferAnalystService(url2),
+            bufferDistance = new SuperMap.REST.BufferDistance({
+                value: 250
+            }),
+            bufferSetting = new SuperMap.REST.BufferSetting({
+                endType: SuperMap.REST.BufferEndType.ROUND,
+                leftDistance: bufferDistance,
+                rightDistance: bufferDistance,
+                semicircleLineSegment: 10
+            }),
+            geoBufferAnalystParam = new SuperMap.REST.GeometryBufferAnalystParameters({
+                sourceGeometry: gpsLine,
+                bufferSetting: bufferSetting
+            });
+
+        bufferServiceByGeometry.events.on(
+            {
+                "processCompleted": bufferAnalystCompleted
+            });
+        bufferServiceByGeometry.processAsync(geoBufferAnalystParam);
+    }
+
+    function bufferAnalystCompleted(BufferAnalystEventArgs) {
+        var feature = new SuperMap.Feature.Vector();
+        bufferResultGeometry = BufferAnalystEventArgs.result.resultGeometry;
+        feature.geometry = bufferResultGeometry;
+        feature.style = styleRegion;
+        resultLayer.addFeatures(feature);
+    }
+
+    //查询出信号影响范围内的工厂
+    function queryByGeometry() {
+        widgets.alert.clearAlert();
+        if (!bufferResultGeometry) {
+            widgets.alert.showAlert(resources.msg_bufferAnalyst,false);
+            return;
+        }
+        var queryParam, queryByGeometryParameters, queryService;
+        queryParam = new SuperMap.REST.FilterParameter({name: "Company@Changchun.2"});
+        queryByGeometryParameters = new SuperMap.REST.QueryByGeometryParameters({
+            queryParams: [queryParam],
+            geometry: bufferResultGeometry,
+            spatialQueryMode: SuperMap.REST.SpatialQueryMode.INTERSECT
+        });
+        queryService = new SuperMap.REST.QueryByGeometryService(url);
+        queryService.events.on(
+            {
+                "processCompleted": queryCompleted
+            });
+        queryService.processAsync(queryByGeometryParameters);
+    }
+
+    function queryCompleted(queryEventArgs) {
+        var i, j, result = queryEventArgs.result;
+        if (result && result.recordsets) {
+            for (i = 0, recordsets = result.recordsets, len = recordsets.length; i < len; i++) {
+                if (recordsets[i].features) {
+                    for (j = 0; j < recordsets[i].features.length; j++) {
+                        var point = recordsets[i].features[j].geometry,
+                            size = new SuperMap.Size(44, 40),
+                            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
+                            icon = new SuperMap.Icon("./images/marker-gold.png", size, offset);
+                        markerLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(point.x, point.y), icon));
+                    }
+                }
+            }
+        }
+    }
+
+    function clearElements() {
+        widgets.alert.clearAlert();
+        gpsLine = null;
+        bufferResultGeometry = null;
+        resultLayer.removeAllFeatures();
+        markerLayer.clearMarkers();
+    }
+
+</script>
+
+</body>
+</html>

+ 207 - 0
public/supermap/examples/classic/analysis_closestFacilities.html

@@ -0,0 +1,207 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_closestFacilitiesService"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            width: 320px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_closestFacilitiesService"></h5></div>
+    <div class='panel-body content'>
+        <div class='panel'>
+            <div class='input-group'>
+                <span class='input-group-addon' data-i18n="resources.text_weightField"></span>
+                <select class='form-control' id='edgeWeightNames'>
+                    <option>length</option>
+                    <option>time</option>
+                </select>
+            </div>
+        </div>
+        <div class='panel'>
+            <div class='input-group'>
+                <span class='input-group-addon' data-i18n="resources.text_turnField"></span>
+                <select class='form-control' id='turnNodeWeightNames'>
+                    <option>TurnCost</option>
+                </select>
+            </div>
+        </div>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_eventPoint" onclick="selectEventPoint()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_submit" onclick="findClosestFacilities()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear" onclick="clearElements()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var  map, layer, vectorLayer, markerLayer1,
+        markerLayer2, drawPoint, eventPoint, n = 0,
+        facilityPoints = [
+            new SuperMap.Geometry.Point(6000, -5500),
+            new SuperMap.Geometry.Point(5500, -2500),
+            new SuperMap.Geometry.Point(2500, -3500)],
+        style = {
+            strokeColor: "#304DBE",
+            strokeWidth: 3,
+            pointerEvents: "visiblePainted",
+            fill: false
+        },
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun";
+
+    init();
+
+    function init() {
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        drawPoint = new SuperMap.Control.DrawFeature(vectorLayer, SuperMap.Handler.Point);
+        drawPoint.events.on({"featureadded": drawCompleted});
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                }),
+                drawPoint], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+        markerLayer1 = new SuperMap.Layer.Markers("Markers");
+        markerLayer2 = new SuperMap.Layer.Markers("Markers");
+
+        var size = new SuperMap.Size(44, 40),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
+            icon1 = new SuperMap.Icon("./images/marker-gold.png", size, offset),
+            icon2 = new SuperMap.Icon("./images/marker-gold.png", size, offset),
+            icon3 = new SuperMap.Icon("./images/marker-gold.png", size, offset);
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(6000, -5500), icon1));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(5500, -2500), icon2));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(2500, -3500), icon3));
+    }
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer, markerLayer1, markerLayer2]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 1);
+    }
+
+    function selectEventPoint() {
+        widgets.alert.clearAlert();
+        clearElements();
+        drawPoint.activate();
+    }
+
+    function drawCompleted(drawGeometryArgs) {
+        var point = drawGeometryArgs.feature.geometry,
+            size = new SuperMap.Size(44, 33),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
+            icon = new SuperMap.Icon("./images/marker.png", size, offset);
+        markerLayer2.addMarker(new SuperMap.Marker(new SuperMap.LonLat(point.x, point.y), icon));
+        eventPoint = point;
+        n++;
+        if (n >= 1) {
+            drawPoint.deactivate();
+        }
+    }
+
+    function findClosestFacilities() {
+        widgets.alert.clearAlert();
+        drawPoint.deactivate();
+        if (!eventPoint) {
+            widgets.alert.showAlert(resources.msg_eventPoint,true);
+            return;
+        }
+        var findClosestFacilitiesService, parameter, analystParameter, resultSetting;
+        resultSetting = new SuperMap.REST.TransportationAnalystResultSetting({
+            returnEdgeFeatures: true,
+            returnEdgeGeometry: true,
+            returnEdgeIDs: true,
+            returnNodeFeatures: true,
+            returnNodeGeometry: true,
+            returnNodeIDs: true,
+            returnPathGuides: true,
+            returnRoutes: true
+        });
+        var edgeWeightNamesSelect = document.getElementById("edgeWeightNames");
+        var weightFieldName = edgeWeightNamesSelect.options[edgeWeightNamesSelect.selectedIndex].text;
+
+        var turnWeightFieldSelect = document.getElementById("turnNodeWeightNames");
+        var turnNodeWeightNames = turnWeightFieldSelect.options[turnWeightFieldSelect.selectedIndex].text;
+        analystParameter = new SuperMap.REST.TransportationAnalystParameter({
+            resultSetting: resultSetting,
+            turnWeightField: turnNodeWeightNames,
+            weightFieldName: weightFieldName
+        });
+        parameter = new SuperMap.REST.FindClosestFacilitiesParameters({
+            event: eventPoint,
+            expectFacilityCount: 1,
+            isAnalyzeById: false,
+            facilities: facilityPoints,
+            parameter: analystParameter
+        });
+        findClosestFacilitiesService = new SuperMap.REST.FindClosestFacilitiesService(url2, {
+            eventListeners: {"processCompleted": processCompleted}
+        });
+        findClosestFacilitiesService.processAsync(parameter);
+    }
+
+    function processCompleted(findClosestFacilitiesEventArgs) {
+        var result = findClosestFacilitiesEventArgs.result,
+            features = [];
+        if (result.facilityPathList) {
+            for (var i = 0, facilityPathList = result.facilityPathList, len = facilityPathList.length; i < len; i++) {
+                var feature = new SuperMap.Feature.Vector();
+                feature.geometry = facilityPathList[i].route;
+                feature.style = style;
+                features.push(feature);
+            }
+        }
+        vectorLayer.addFeatures(features);
+    }
+
+    function clearElements() {
+        widgets.alert.clearAlert();
+        eventPoint = null;
+        n = 0;
+        markerLayer2.clearMarkers();
+        vectorLayer.removeAllFeatures();
+    }
+</script>
+
+</body>
+</html>

+ 209 - 0
public/supermap/examples/classic/analysis_densityKernelAnalyst.html

@@ -0,0 +1,209 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_densityAnalystService"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_densityAnalystService"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_densityAnalyst" onclick="addResultLayer()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_removeTheme" onclick="removeTheme()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var map, baseLayer, resultLayer,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.PanZoomBar(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })]
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(58, 150));
+
+        //将“长春市区图”置为底图
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("长春市区图", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.events.on({"layerInitialized": addBaseLayer});
+    }
+
+    function addBaseLayer() {
+        map.addLayer(baseLayer);
+        map.setCenter(new SuperMap.LonLat(5800, -3000), 2);
+        map.allOverlays = true;
+    }
+
+    function addResultLayer() {
+        widgets.alert.clearAlert();
+        //移除核密度分析的结果专题图层
+        removeTheme();
+
+        //创建一个核密度分析服务实例
+        var densityAnalystService = new SuperMap.REST.DensityAnalystService(url2, {
+            eventListeners: {
+                "processCompleted": KernelAnalystCompleted,
+                "processFailed": KernelAnalystFailed
+            }
+        });
+
+        //创建一个核密度分析参数示例
+        var densityKernelAnalystParameters = new SuperMap.REST.DensityKernelAnalystParameters({
+            //指定数据集
+            dataset: "Railway@Changchun",
+            //指定范围
+            bounds: new SuperMap.Bounds(3800, -3800, 8200, -2200),
+            //指定数据集中用于核密度分析的字段
+            fieldName: "SmLength",
+            searchRadius: 50,  //Railway@Changchun的单位是米
+            //结果数据集名称
+            resultGridName: "KernelDensity_Result",
+            deleteExistResultDataset: true
+        });
+
+        densityAnalystService.processAsync(densityKernelAnalystParameters);
+    }
+
+    //用栅格专题图展示分析结果
+    function KernelAnalystCompleted(densityKernelAnalysEventArgs) {
+        var color1 = new SuperMap.REST.ServerColor(255, 212, 170),
+            color2 = new SuperMap.REST.ServerColor(255, 127, 0),
+            color3 = new SuperMap.REST.ServerColor(191, 95, 0),
+            color4 = new SuperMap.REST.ServerColor(255, 0, 0),
+            color5 = new SuperMap.REST.ServerColor(191, 0, 0),
+
+            themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 0,
+                end: 0.05,
+                color: color1
+            }),
+            themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 0.05,
+                end: 5,
+                color: color2
+            }),
+            themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 5,
+                end: 10,
+                color: color3
+            }),
+            themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 10,
+                end: 100,
+                color: color4
+            }),
+            themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 100,
+                end: 360,
+                color: color5
+            }),
+
+            themeGridRange = new SuperMap.REST.ThemeGridRange({
+                reverseColor: false,
+                rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
+                //栅格分段专题图子项数组
+                items: [themeGridRangeIteme1,
+                    themeGridRangeIteme2,
+                    themeGridRangeIteme3,
+                    themeGridRangeIteme4,
+                    themeGridRangeIteme5
+                ]
+            }),
+            themeParameters = new SuperMap.REST.ThemeParameters({
+                //制作专题图的数据集(核密度分析的结果数据集)
+                datasetNames: [densityKernelAnalysEventArgs.result.dataset.split('@')[0]],
+                dataSourceNames: ["Changchun"],
+                joinItems: null,
+                themes: [themeGridRange],
+                types: ['REGION']
+            });
+        var themeService = new SuperMap.REST.ThemeService(url, {
+            eventListeners: {
+                "processCompleted": themeCompleted,
+                "processFailed": themeFailed
+            }
+        });
+        themeService.processAsync(themeParameters);
+    }
+
+    function themeCompleted(themeEventArgs) {
+        if (themeEventArgs.result.resourceInfo.id) {
+            resultLayer = new SuperMap.Layer.TiledDynamicRESTLayer("核密度分析结果", url, {
+                cacheEnabled: false,
+                transparent: true,
+                layersID: themeEventArgs.result.resourceInfo.id
+            }, {"maxResolution": "auto"});
+            resultLayer.events.on({"layerInitialized": addThemelayer});
+            resultLayer.setOpacity(0.8);
+        }
+    }
+
+    function addThemelayer() {
+        //将专题图添加到地图
+        map.addLayer(resultLayer);
+    }
+
+    function themeFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg,false);
+    }
+
+    function KernelAnalystFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg,false);
+    }
+
+    //移除专题图
+    function removeTheme() {
+        widgets.alert.clearAlert();
+        if (map.layers.length > 1) {
+            map.removeLayer(resultLayer, true);
+        }
+    }
+
+</script>
+
+</body>
+</html>

+ 213 - 0
public/supermap/examples/classic/analysis_dynamicSegmentation.html

@@ -0,0 +1,213 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_dynamicSegmentation"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_dynamicSegmentation"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_dynamicSegmentation" onclick="GenerateSpatialData()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear" onclick="clearThemeLayer()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layer, themeLayer,
+        url = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("changchun", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+        map = new SuperMap.Map("map", {
+            allOverlays: true, controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })]
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+    }
+
+    function addLayer() {
+        map.addLayers([layer]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 1);
+    }
+
+    //生成动态分段
+    function GenerateSpatialData() {
+        widgets.alert.clearAlert();
+        clearThemeLayer();
+
+        //配置数据返回Option
+        var option = new SuperMap.REST.DataReturnOption({
+                expectCount: 1000,
+                dataset: "generateSpatialData@Changchun",
+                deleteExistResultDataset: true,
+                dataReturnMode: SuperMap.REST.DataReturnMode.DATASET_ONLY
+            }),
+            //配置动态分段Parameters
+            parameters = new SuperMap.REST.GenerateSpatialDataParameters({
+                routeTable: "RouteDT_road@Changchun",
+                routeIDField: "RouteID",
+                eventTable: "LinearEventTabDT@Changchun",
+                eventRouteIDField: "RouteID",
+                measureField: "",
+                measureStartField: "LineMeasureFrom",
+                measureEndField: "LineMeasureTo",
+                measureOffsetField: "",
+                errorInfoField: "",
+                dataReturnOption: option
+            }),
+            //配置动态分段iService
+            iService = new SuperMap.REST.GenerateSpatialDataService(url2, {
+                eventListeners: {
+                    processCompleted: generateCompleted,
+                    processFailed: generateFailded
+                }
+            });
+
+        //execute
+        iService.processAsync(parameters);
+
+        //completed
+        function generateCompleted(generateSpatialDataEventArgs) {
+            //配置专题样式
+            var style1, style2, style3;
+            style1 = new SuperMap.REST.ServerStyle({
+                fillForeColor: new SuperMap.REST.ServerColor(242, 48, 48),
+                lineColor: new SuperMap.REST.ServerColor(242, 48, 48),
+                lineWidth: 1
+            });
+            style2 = new SuperMap.REST.ServerStyle({
+                fillForeColor: new SuperMap.REST.ServerColor(255, 159, 25),
+                lineColor: new SuperMap.REST.ServerColor(255, 159, 25),
+                lineWidth: 1
+            });
+            style3 = new SuperMap.REST.ServerStyle({
+                fillForeColor: new SuperMap.REST.ServerColor(91, 195, 69),
+                lineColor: new SuperMap.REST.ServerColor(91, 195, 69),
+                lineWidth: 1
+            });
+
+            //配置专题项
+            var themeUniqueIteme1, themeUniqueIteme2, themeUniqueIteme3;
+            themeUniqueIteme1 = new SuperMap.REST.ThemeUniqueItem({
+                unique: "拥挤",
+                style: style1
+            });
+            themeUniqueIteme2 = new SuperMap.REST.ThemeUniqueItem({
+                unique: "缓行",
+                style: style2
+            });
+            themeUniqueIteme3 = new SuperMap.REST.ThemeUniqueItem({
+                unique: "畅通",
+                style: style3
+            });
+            var themeUniqueItemes = [themeUniqueIteme1, themeUniqueIteme2, themeUniqueIteme3];
+
+            var themeUnique = new SuperMap.REST.ThemeUnique({
+                uniqueExpression: "TrafficStatus",
+                items: themeUniqueItemes,
+                defaultStyle: new SuperMap.REST.ServerStyle({
+                    fillForeColor: new SuperMap.REST.ServerColor(48, 89, 14),
+                    lineColor: new SuperMap.REST.ServerColor(48, 89, 14)
+                })
+            });
+
+            var themeParameters = new SuperMap.REST.ThemeParameters({
+                themes: [themeUnique],
+                datasetNames: ["generateSpatialData"],
+                dataSourceNames: ["Changchun"],
+                types: ['REGION']
+            });
+
+            var themeService = new SuperMap.REST.ThemeService(url, {
+                eventListeners: {
+                    processCompleted: themeCompleted,
+                    processFailed: themeFailed
+                }
+            });
+
+            themeService.processAsync(themeParameters);
+
+            function themeCompleted(themeEventArgs) {
+                if (themeEventArgs.result.resourceInfo.id) {
+                    themeLayer = new SuperMap.Layer.TiledDynamicRESTLayer("道路交通状况_专题图", url, {
+                        cacheEnabled: false,
+                        transparent: true,
+                        layersID: themeEventArgs.result.resourceInfo.id
+                    }, {"maxResolution": "auto"});
+                    themeLayer.events.on({"layerInitialized": addThemeLayer});
+                }
+            }
+
+            function addThemeLayer() {
+                map.addLayer(themeLayer);
+            }
+
+            function themeFailed(e) {
+                widgets.alert.showAlert(e.error.errorMsg,false);
+            }
+        }
+
+        //failed
+        function generateFailded(e) {
+            widgets.alert.showAlert(e.error.errorMsg,false);
+        }
+    }
+
+    //移除专题图层
+    function clearThemeLayer() {
+        widgets.alert.clearAlert();
+        if (themeLayer) {
+            map.removeLayer(themeLayer, true);
+            themeLayer = null;
+        }
+    }
+
+</script>
+
+</body>
+</html>

+ 202 - 0
public/supermap/examples/classic/analysis_findLocation.html

@@ -0,0 +1,202 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_findLocation"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_findLocation"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_analyst"
+               onclick="findLocaltion()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear"
+               onclick="clearElements()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var local, map, layer, vectorLayer, markerLayer1,
+        markerLayer2,
+        style = {
+            strokeColor: "#304DBE",
+            strokeWidth: 2,
+            pointRadius: 2,
+            pointerEvents: "visiblePainted",
+            fill: true,
+            fillColor: "#304DBE"
+        },
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun";
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        markerLayer1 = new SuperMap.Layer.Markers("Markers");
+        markerLayer2 = new SuperMap.Layer.Markers("Markers");
+        var size = new SuperMap.Size(44, 40),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h);
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(1675.9256791377206, -593.56822512495194), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(2820.35101097629, -2358.0414663985171), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(2909.4396668115278, -3647.0074300836109), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(1544.5037476378677, -5616.5950974905827), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(6623.5972101719526, -2130.4887600981415), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(5482.4979617984973, -4504.2328567816048), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(6940.6579024271468, -1627.6012900626256), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(8215.9188781715948, -5747.5063918659716), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+    }
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer, markerLayer1, markerLayer2]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 0);
+    }
+
+    function findLocaltion() {
+        vectorLayer.removeAllFeatures();
+        markerLayer2.clearMarkers();
+
+        var findLocaltionService, parameter, analystParameter, resultSetting,
+            supplyCenterType_FIXEDCENTER = SuperMap.REST.SupplyCenterType.FIXEDCENTER,
+            supplyCenterType_NULL = SuperMap.REST.SupplyCenterType.NULL;
+        supplyCenterType_OPTIONALCENTER = SuperMap.REST.SupplyCenterType.OPTIONALCENTER,
+            supplyCenters = [new SuperMap.REST.SupplyCenter({
+                maxWeight: 500,
+                nodeID: 139,
+                resourceValue: 100,
+                type: supplyCenterType_OPTIONALCENTER
+
+            }),
+                new SuperMap.REST.SupplyCenter({
+                    maxWeight: 500,
+                    nodeID: 1358,
+                    resourceValue: 100,
+                    type: supplyCenterType_OPTIONALCENTER
+
+                }),
+                new SuperMap.REST.SupplyCenter({
+                    maxWeight: 500,
+                    nodeID: 2972,
+                    resourceValue: 100,
+                    type: supplyCenterType_OPTIONALCENTER
+
+                }),
+                new SuperMap.REST.SupplyCenter({
+                    maxWeight: 500,
+                    nodeID: 5523,
+                    resourceValue: 100,
+                    type: supplyCenterType_OPTIONALCENTER
+
+                }),
+                new SuperMap.REST.SupplyCenter({
+                    maxWeight: 500,
+                    nodeID: 1161,
+                    resourceValue: 100,
+                    type: supplyCenterType_OPTIONALCENTER
+                }),
+                new SuperMap.REST.SupplyCenter({
+                    maxWeight: 500,
+                    nodeID: 4337,
+                    resourceValue: 100,
+                    type: supplyCenterType_OPTIONALCENTER
+
+                }),
+                new SuperMap.REST.SupplyCenter({
+                    maxWeight: 500,
+                    nodeID: 5732,
+                    resourceValue: 100,
+                    type: supplyCenterType_NULL
+
+                }),
+                new SuperMap.REST.SupplyCenter({
+                    maxWeight: 500,
+                    nodeID: 663,
+                    resourceValue: 100,
+                    type: supplyCenterType_FIXEDCENTER
+
+                })
+            ];
+        parameter = new SuperMap.REST.FindLocationParameters({
+            expectedSupplyCenterCount: 3,
+            isFromCenter: false,
+            nodeDemandField: "Demand",
+            turnWeightField: "TurnCost",
+            weightName: "length",
+            supplyCenters: supplyCenters
+        });
+
+        findLocaltionService = new SuperMap.REST.FindLocationService(url2, {
+            eventListeners: {"processCompleted": processCompleted}
+        });
+        findLocaltionService.processAsync(parameter);
+    }
+
+    function processCompleted(findLocationEventArgs) {
+        var result = findLocationEventArgs.result,
+            features = [];
+        if (result.demandResults) {
+            for (var i = 0, demandResults = result.demandResults, len = demandResults.length; i < len; i++) {
+                var feature = new SuperMap.Feature.Vector();
+                feature.geometry = demandResults[i].geometry;
+                feature.style = style;
+                features.push(feature);
+            }
+        }
+        vectorLayer.addFeatures(features);
+    }
+
+    function clearElements() {
+        vectorLayer.removeAllFeatures();
+        markerLayer2.clearMarkers();
+    }
+</script>
+
+</body>
+</html>

+ 172 - 0
public/supermap/examples/classic/analysis_findMTSPPaths.html

@@ -0,0 +1,172 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_findMTSPPathsService"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            width: 300px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_findMTSPPaths"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_target" onclick="selectPoints()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_submit" onclick="findMTSPPaths()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear" onclick="clearElements()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var local, map, layer, vectorLayer, markerLayer1,
+        markerLayer2, drawPoint, nodeArray = [],
+        centerArray = [new SuperMap.Geometry.Point(6000, -5500), new SuperMap.Geometry.Point(5500, -2500), new SuperMap.Geometry.Point(2500, -3500)],
+        style = {
+            strokeColor: "#304DBE",
+            strokeWidth: 3,
+            pointerEvents: "visiblePainted",
+            fill: false
+        },
+        url = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun";
+
+    init();
+
+    function init() {
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        drawPoint = new SuperMap.Control.DrawFeature(vectorLayer, SuperMap.Handler.Point);
+        drawPoint.events.on({"featureadded": drawCompleted});
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                }),
+                drawPoint], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+        markerLayer1 = new SuperMap.Layer.Markers("Markers");
+        markerLayer2 = new SuperMap.Layer.Markers("Markers");
+
+        var size = new SuperMap.Size(44, 40),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h);
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(6000, -5500), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(5500, -2500), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(2500, -3500), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+
+        var size = new SuperMap.Size(44, 40),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h);
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(6000, -5500), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(5500, -2500), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(2500, -3500), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+    }
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer, markerLayer1, markerLayer2]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 0);
+    }
+
+    function selectPoints() {
+        clearElements();
+        drawPoint.activate();
+    }
+
+    function drawCompleted(drawGeometryArgs) {
+        var point = drawGeometryArgs.feature.geometry,
+            size = new SuperMap.Size(44, 33),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
+            icon = new SuperMap.Icon("./images/marker.png", size, offset);
+        markerLayer2.addMarker(new SuperMap.Marker(new SuperMap.LonLat(point.x, point.y), icon));
+        nodeArray.push(point);
+    }
+
+    function findMTSPPaths() {
+        drawPoint.deactivate();
+        var findMTSPPathsService, parameter, analystParameter, resultSetting;
+        resultSetting = new SuperMap.REST.TransportationAnalystResultSetting({
+            returnEdgeFeatures: true,
+            returnEdgeGeometry: true,
+            returnEdgeIDs: true,
+            returnNodeFeatures: true,
+            returnNodeGeometry: true,
+            returnNodeIDs: true,
+            returnPathGuides: true,
+            returnRoutes: true
+        });
+        analystParameter = new SuperMap.REST.TransportationAnalystParameter({
+            resultSetting: resultSetting,
+            weightFieldName: "length"
+        });
+        parameter = new SuperMap.REST.FindMTSPPathsParameters({
+            centers: centerArray,
+            isAnalyzeById: false,
+            nodes: nodeArray,
+            hasLeastTotalCost: true,
+            parameter: analystParameter
+        });
+        findMTSPPathsService = new SuperMap.REST.FindMTSPPathsService(url2, {
+            eventListeners: {"processCompleted": processCompleted}
+        });
+        findMTSPPathsService.processAsync(parameter);
+    }
+
+    function processCompleted(findMTSPPathsEventArgs) {
+        var result = findMTSPPathsEventArgs.result,
+            features = [];
+        if (result.pathList) {
+            for (var i = 0, pathList = result.pathList, len = pathList.length; i < len; i++) {
+                var feature = new SuperMap.Feature.Vector();
+                feature.geometry = pathList[i].route;
+                feature.style = style;
+                features.push(feature);
+            }
+        }
+        vectorLayer.addFeatures(features);
+    }
+
+    function clearElements() {
+        nodeArray = [];
+        markerLayer2.clearMarkers();
+        vectorLayer.removeAllFeatures();
+    }
+</script>
+
+</body>
+</html>

+ 258 - 0
public/supermap/examples/classic/analysis_findMTSPPathsAndTSPPaths.html

@@ -0,0 +1,258 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_findMTSPPathsAndTSPPaths"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_findMTSPPathsAndTSPPaths"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_target" onclick="selectPoints()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_dispatching"
+               onclick="findMTSPPaths()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_check" onclick="findTSPPaths()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear"
+               onclick="clearElements()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layer, vectorLayer, markerLayer1,
+        markerLayer2, drawPoint, nodeArray = [], i = 0, j = 0,
+        centerArray = [new SuperMap.Geometry.Point(6000, -5500),
+            new SuperMap.Geometry.Point(5500, -2500),
+            new SuperMap.Geometry.Point(2500, -3500)],
+        styleMTSP = {
+            strokeColor: "#304DBE",
+            strokeWidth: 3,
+            pointerEvents: "visiblePainted",
+            fill: false
+        },
+        styleTSP = {
+            strokeColor: "red",
+            strokeWidth: 2,
+            //pointRadius: 8,
+            pointerEvents: "visiblePainted",
+            fill: false
+        },
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun";
+
+
+    init();
+
+    function init() {
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        drawPoint = new SuperMap.Control.DrawFeature(vectorLayer, SuperMap.Handler.Point);
+        drawPoint.events.on({"featureadded": drawCompleted});
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                }),
+                drawPoint], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+        markerLayer1 = new SuperMap.Layer.Markers("Markers");
+        markerLayer2 = new SuperMap.Layer.Markers("Markers");
+
+        var size = new SuperMap.Size(44, 40),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h);
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(6000, -5500), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(5500, -2500), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+        markerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(2500, -3500), new SuperMap.Icon("./images/marker-gold.png", size, offset)));
+    }
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer, markerLayer1, markerLayer2]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 0);
+    }
+
+    function selectPoints() {
+        widgets.alert.clearAlert();
+        clearElements();
+        drawPoint.activate();
+    }
+
+    function drawCompleted(drawGeometryArgs) {
+        var point = drawGeometryArgs.feature.geometry,
+            size = new SuperMap.Size(44, 33),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
+            icon = new SuperMap.Icon("./images/marker.png", size, offset);
+        markerLayer2.addMarker(new SuperMap.Marker(new SuperMap.LonLat(point.x, point.y), icon));
+        nodeArray.push(point);
+    }
+
+    function findMTSPPaths() {
+        widgets.alert.clearAlert();
+        drawPoint.deactivate();
+        var findMTSPPathsService, parameter, analystParameter, resultSetting;
+        resultSetting = new SuperMap.REST.TransportationAnalystResultSetting({
+            returnEdgeFeatures: true,
+            returnEdgeGeometry: true,
+            returnEdgeIDs: true,
+            returnNodeFeatures: true,
+            returnNodeGeometry: true,
+            returnNodeIDs: true,
+            returnPathGuides: true,
+            returnRoutes: true
+        });
+        analystParameter = new SuperMap.REST.TransportationAnalystParameter({
+            resultSetting: resultSetting,
+            weightFieldName: "length"
+        });
+        parameter = new SuperMap.REST.FindMTSPPathsParameters({
+            centers: centerArray,
+            isAnalyzeById: false,
+            nodes: nodeArray,
+            hasLeastTotalCost: true,
+            parameter: analystParameter
+        });
+        findMTSPPathsService = new SuperMap.REST.FindMTSPPathsService(url2, {
+            eventListeners: {"processCompleted": processCompleted1}
+        });
+        findMTSPPathsService.processAsync(parameter);
+    }
+
+    function processCompleted1(findMTSPPathsEventArgs) {
+        var result = findMTSPPathsEventArgs.result,
+            features = [];
+        if (result.pathList) {
+            for (var i = 0, pathList = result.pathList, len = pathList.length; i < len; i++) {
+                var feature = new SuperMap.Feature.Vector();
+                feature.geometry = pathList[i].route;
+                feature.style = styleMTSP;
+                features.push(feature);
+            }
+        }
+        vectorLayer.addFeatures(features);
+    }
+
+
+    function findTSPPaths() {
+        widgets.alert.clearAlert();
+        drawPoint.deactivate();
+        var findTSPPathsService, parameter, analystParameter, resultSetting;
+        resultSetting = new SuperMap.REST.TransportationAnalystResultSetting({
+            returnEdgeFeatures: true,
+            returnEdgeGeometry: true,
+            returnEdgeIDs: true,
+            returnNodeFeatures: true,
+            returnNodeGeometry: true,
+            returnNodeIDs: true,
+            returnPathGuides: true,
+            returnRoutes: true
+        });
+        analystParameter = new SuperMap.REST.TransportationAnalystParameter({
+            resultSetting: resultSetting,
+            weightFieldName: "length"
+        });
+        parameter = new SuperMap.REST.FindTSPPathsParameters({
+            isAnalyzeById: false,
+            nodes: nodeArray,
+            endNodeAssigned: false,
+            parameter: analystParameter
+        });
+        if (nodeArray.length <= 1) {
+            widgets.alert.showAlert(resources.msg_check, false);
+        } else {
+            findTSPPathsService = new SuperMap.REST.FindTSPPathsService(url2, {
+                eventListeners: {"processCompleted": processCompleted2}
+            });
+            findTSPPathsService.processAsync(parameter);
+        }
+    }
+
+    function processCompleted2(findTSPPathsEventArgs) {
+        var result = findTSPPathsEventArgs.result;
+        allScheme(result);
+    }
+
+    function allScheme(result) {
+        if (i < result.tspPathList.length) {
+            addPath(result);
+        } else {
+            i = 0;
+        }
+    }
+
+    //以动画效果显示分析结果
+    function addPath(result) {
+        if (j < result.tspPathList[i].route.components[0].components.length) {
+            var pathFeature = new SuperMap.Feature.Vector();
+            var points = [];
+            for (var k = 0; k < 2; k++) {
+                if (result.tspPathList[i].route.components[0].components[j + k]) {
+                    points.push(new SuperMap.Geometry.Point(result.tspPathList[i].route.components[0].components[j + k].x, result.tspPathList[i].route.components[0].components[j + k].y));
+                }
+            }
+            var curLine = new SuperMap.Geometry.LinearRing(points);
+            pathFeature.geometry = curLine;
+            pathFeature.style = styleTSP;
+            vectorLayer.addFeatures(pathFeature);
+            //每隔0.01毫秒加载一条弧段
+            pathTime = setTimeout(function () {
+                addPath(result);
+            }, 0.01);
+            j++;
+        } else {
+            clearTimeout(pathTime);
+            j = 0;
+            i++;
+            allScheme(result);
+        }
+    }
+
+    function clearElements() {
+        widgets.alert.clearAlert();
+        nodeArray = [];
+        markerLayer2.clearMarkers();
+        vectorLayer.removeAllFeatures();
+    }
+
+
+</script>
+
+</body>
+</html>

+ 258 - 0
public/supermap/examples/classic/analysis_findPath.html

@@ -0,0 +1,258 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_findPath"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_findPath"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_sites" onclick="selectPoints()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_submit" onclick="findPath()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear" onclick="clearElements()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layer, vectorLayer, markerLayer,
+        drawPoint, select,
+        nodeArray = [], pathTime, pathListIndex = 0, routeCompsIndex = 0,
+        style = {
+            strokeColor: "#304DBE",
+            strokeWidth: 3,
+            pointerEvents: "visiblePainted",
+            fill: false
+        },
+        styleGuidePoint = {
+            pointRadius: 10,
+            externalGraphic: "../img/walk.png"
+        },
+        styleGuideLine = {
+            strokeColor: "#25FF25",
+            strokeWidth: 6,
+            fill: false
+        },
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun";
+
+    init();
+
+    function init() {
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        drawPoint = new SuperMap.Control.DrawFeature(vectorLayer, SuperMap.Handler.Point);
+        select = new SuperMap.Control.SelectFeature(vectorLayer, {
+            onSelect: onFeatureSelect,
+            onUnselect: onFeatureUnselect
+        });
+        drawPoint.events.on({"featureadded": drawCompleted});
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                }),
+                drawPoint,
+                select], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+        markerLayer = new SuperMap.Layer.Markers("Markers");
+    }
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer, markerLayer]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 1);
+    }
+
+    function selectPoints() {
+        widgets.alert.clearAlert();
+        clearElements();
+        drawPoint.activate();
+    }
+
+    function drawCompleted(drawGeometryArgs) {
+        var point = drawGeometryArgs.feature.geometry,
+            size = new SuperMap.Size(44, 33),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
+            icon = new SuperMap.Icon("./images/marker.png", size, offset);
+        markerLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(point.x, point.y), icon));
+        nodeArray.push(point);
+    }
+
+    //选中时显示路径指引信息
+    function onFeatureSelect(feature) {
+        if (feature.attributes.description) {
+            popup = new SuperMap.Popup("chicken",
+                feature.geometry.getBounds().getCenterLonLat(),
+                new SuperMap.Size(200, 30),
+                "<div style='font-size:.8em; opacity: 0.8'>" + feature.attributes.description + "</div>",
+                null, false);
+            feature.popup = popup;
+            map.addPopup(popup);
+        }
+        if (feature.geometry.CLASS_NAME != "SuperMap.Geometry.Point") {
+            feature.style = styleGuideLine;
+            vectorLayer.redraw();
+        }
+    }
+
+    //清除要素时调用此函数
+    function onFeatureUnselect(feature) {
+        map.removePopup(feature.popup);
+        feature.popup.destroy();
+        feature.popup = null;
+        if (feature.geometry.CLASS_NAME != "SuperMap.Geometry.Point") {
+            feature.style = style;
+        }
+        vectorLayer.redraw();
+
+    }
+
+    function findPath() {
+        widgets.alert.clearAlert();
+        drawPoint.deactivate();
+        var findPathService, parameter, analystParameter, resultSetting;
+        resultSetting = new SuperMap.REST.TransportationAnalystResultSetting({
+            returnEdgeFeatures: true,
+            returnEdgeGeometry: true,
+            returnEdgeIDs: true,
+            returnNodeFeatures: true,
+            returnNodeGeometry: true,
+            returnNodeIDs: true,
+            returnPathGuides: true,
+            returnRoutes: true
+        });
+        analystParameter = new SuperMap.REST.TransportationAnalystParameter({
+            resultSetting: resultSetting,
+            weightFieldName: "length"
+        });
+        parameter = new SuperMap.REST.FindPathParameters({
+            isAnalyzeById: false,
+            nodes: nodeArray,
+            hasLeastEdgeCount: false,
+            parameter: analystParameter
+        });
+        if (nodeArray.length <= 1) {
+            widgets.alert.showAlert(resources.msg_findPath,false);
+        }
+        findPathService = new SuperMap.REST.FindPathService(url2, {
+            eventListeners: {"processCompleted": processCompleted}
+        });
+        findPathService.processAsync(parameter);
+    }
+
+    function processCompleted(findPathEventArgs) {
+        var result = findPathEventArgs.result;
+        allScheme(result);
+    }
+
+    function allScheme(result) {
+        if (pathListIndex < result.pathList.length) {
+            addPath(result);
+        } else {
+            pathListIndex = 0;
+            //线绘制完成后会绘制关于路径指引点的信息
+            addPathGuideItems(result);
+        }
+    }
+
+    //以动画效果显示分析结果
+    function addPath(result) {
+        if (routeCompsIndex < result.pathList[pathListIndex].route.components[0].components.length) {
+            var pathFeature = new SuperMap.Feature.Vector();
+            var points = [];
+            for (var k = 0; k < 2; k++) {
+                if (result.pathList[pathListIndex].route.components[0].components[routeCompsIndex + k]) {
+                    points.push(new SuperMap.Geometry.Point(result.pathList[pathListIndex].route.components[0].components[routeCompsIndex + k].x, result.pathList[pathListIndex].route.components[0].components[routeCompsIndex + k].y));
+                }
+            }
+            var curLine = new SuperMap.Geometry.LinearRing(points);
+            pathFeature.geometry = curLine;
+            pathFeature.style = style;
+            vectorLayer.addFeatures(pathFeature);
+            //每隔0.001毫秒加载一条弧段
+            pathTime = setTimeout(function () {
+                addPath(result);
+            }, 0.001);
+            routeCompsIndex++;
+        } else {
+            clearTimeout(pathTime);
+            routeCompsIndex = 0;
+            pathListIndex++;
+            allScheme(result);
+        }
+    }
+
+    function addPathGuideItems(result) {
+        //vectorLayer.removeAllFeatures();
+        //显示每个pathGuideItem和对应的描述信息
+        for (var k = 0; k < result.pathList.length; k++) {
+            var pathGuideItems = result.pathList[pathListIndex].pathGuideItems, len = pathGuideItems.length;
+            for (var m = 0; m < len; m++) {
+                if (pathGuideItems[m].geometry.CLASS_NAME !== "SuperMap.Geometry.Point") {
+                    continue;
+                }
+                var guideFeature = new SuperMap.Feature.Vector();
+                guideFeature.geometry = pathGuideItems[m].geometry;
+                guideFeature.attributes = {description: pathGuideItems[m].description};
+                guideFeature.style = styleGuidePoint;
+                vectorLayer.addFeatures(guideFeature);
+            }
+        }
+        select.activate();
+    }
+
+    function clearElements() {
+        widgets.alert.clearAlert();
+        pathListIndex = 0;
+        routeCompsIndex = 0;
+        nodeArray = [];
+        select.deactivate();
+        if (vectorLayer.selectedFeatures.length > 0) {
+            map.removePopup(vectorLayer.selectedFeatures[0].popup);
+        }
+        vectorLayer.removeAllFeatures();
+        markerLayer.clearMarkers();
+    }
+</script>
+
+</body>
+</html>

+ 196 - 0
public/supermap/examples/classic/analysis_findTSPPaths.html

@@ -0,0 +1,196 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_findTSPPaths"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            width: 300px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_findTSPPaths"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_sites" onclick="selectPoints()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_submit"
+               onclick="findTSPPaths()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear"
+               onclick="clearElements()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var local, map, layer, vectorLayer, markerLayer,
+        drawPoint, nodeArray = [], pathTime, i = 0, j = 0, result,
+        style = {
+            strokeColor: "#304DBE",
+            strokeWidth: 3,
+            pointerEvents: "visiblePainted",
+            fill: false
+        },
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun";
+
+    init();
+
+    function init() {
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        drawPoint = new SuperMap.Control.DrawFeature(vectorLayer, SuperMap.Handler.Point);
+        drawPoint.events.on({"featureadded": drawCompleted});
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                }),
+                drawPoint], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        markerLayer = new SuperMap.Layer.Markers("Markers");
+    }
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer, markerLayer]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 1);
+    }
+
+    function selectPoints() {
+        widgets.alert.clearAlert();
+        clearElements();
+        drawPoint.activate();
+    }
+
+    function drawCompleted(drawGeometryArgs) {
+        var point = drawGeometryArgs.feature.geometry,
+            size = new SuperMap.Size(44, 33),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
+            icon = new SuperMap.Icon("./images/marker.png", size, offset);
+        markerLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(point.x, point.y), icon));
+        nodeArray.push(point);
+    }
+
+    function findTSPPaths() {
+        widgets.alert.clearAlert();
+        drawPoint.deactivate();
+        var findTSPPathsService, parameter, analystParameter, resultSetting;
+        resultSetting = new SuperMap.REST.TransportationAnalystResultSetting({
+            returnEdgeFeatures: true,
+            returnEdgeGeometry: true,
+            returnEdgeIDs: true,
+            returnNodeFeatures: true,
+            returnNodeGeometry: true,
+            returnNodeIDs: true,
+            returnPathGuides: true,
+            returnRoutes: true
+        });
+        analystParameter = new SuperMap.REST.TransportationAnalystParameter({
+            resultSetting: resultSetting,
+            weightFieldName: "length"
+        });
+        parameter = new SuperMap.REST.FindTSPPathsParameters({
+            isAnalyzeById: false,
+            nodes: nodeArray,
+            endNodeAssigned: false,
+            parameter: analystParameter
+        });
+        if (nodeArray.length <= 1) {
+            widgets.alert.showAlert(resources.msg_findPath, false);
+        }
+        findTSPPathsService = new SuperMap.REST.FindTSPPathsService(url2, {
+            eventListeners: {"processCompleted": processCompleted}
+        });
+        findTSPPathsService.processAsync(parameter);
+    }
+
+    function processCompleted(findTSPPathsEventArgs) {
+        result = findTSPPathsEventArgs.result;
+        allScheme(result);
+    }
+
+    function allScheme(result) {
+        if (i < result.tspPathList.length) {
+            addPath(result);
+        } else {
+            i = 0;
+        }
+    }
+
+    //以动画效果显示分析结果
+    function addPath(result) {
+        if (j < result.tspPathList[i].route.components[0].components.length) {
+            var pathFeature = new SuperMap.Feature.Vector();
+            var points = [];
+            for (var k = 0; k < 2; k++) {
+                if (result.tspPathList[i].route.components[0].components[j + k]) {
+                    points.push(new SuperMap.Geometry.Point(result.tspPathList[i].route.components[0].components[j + k].x, result.tspPathList[i].route.components[0].components[j + k].y));
+                }
+            }
+            var curLine = new SuperMap.Geometry.LinearRing(points);
+            pathFeature.geometry = curLine;
+            pathFeature.style = style;
+            vectorLayer.addFeatures(pathFeature);
+
+            //每隔0.01毫秒加载一条弧段
+            pathTime = setTimeout(function () {
+                addPath(result);
+            }, 0.01);
+            j++;
+        } else {
+            clearTimeout(pathTime);
+            j = 0;
+            i++;
+            allScheme(result);
+        }
+    }
+
+    function clearElements() {
+        widgets.alert.clearAlert();
+        nodeArray = [];
+        i = 0;
+        j = 0;
+        markerLayer.clearMarkers();
+        vectorLayer.removeAllFeatures();
+    }
+
+</script>
+
+</body>
+</html>

+ 323 - 0
public/supermap/examples/classic/analysis_interpolationAnalystByDensity.html

@@ -0,0 +1,323 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_interpolationAnalystByDen"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_interpolationAnalystByDen"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_density" onclick="interpolationDensity()"/>&nbsp; &nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear" onclick="removeInterpolation()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url = host + "/iserver/services/map-temperature/rest/maps/全国温度变化图",
+        url2 = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
+    var map, baseLayer, themeLayer;
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        map.allOverlays = true;
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("全国温度变化图", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.params.layersID = "[0,1,2]";
+        baseLayer.events.on({"layerInitialized": addLayer});
+    }
+
+    function addLayer() {
+        map.addLayer(baseLayer);
+        map.setCenter(new SuperMap.LonLat(531762, 3895330), 0);
+    }
+
+    //点密度插值分析
+    function interpolationDensity() {
+        widgets.alert.clearAlert();
+        removeInterpolation();
+        var interpolationParams = new SuperMap.REST.InterpolationDensityAnalystParameters({
+            //用于做插值分析的数据源中数据集的名称
+            dataset: "SamplesP@Interpolation",
+            //插值分析结果数据集的名称
+            outputDatasetName: "Density_Result",
+            //插值分析结果数据源的名称
+            outputDatasourceName: "Interpolation",
+            //结果栅格数据集存储的像素格式
+            pixelFormat: SuperMap.REST.PixelFormat.DOUBLE,
+            //插值结果栅格数据集的分辨率
+            resolution: 9000,
+            // 属性过滤条件
+//            filterQueryParameter: {
+//                attributeFilter: ""
+//            },
+            //存储用于进行插值分析的字段名称
+            zValueFieldName: "AVG_TMP",
+            //结果栅格数据集的范围
+            bounds: new SuperMap.Bounds(-2640403.6321084504, 1873792.1034850003, 3247669.390292245, 5921501.395578556)
+        });
+        var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
+            eventListeners: {
+                "processCompleted": processCompleted,
+                "processFailed": processFailed
+            }
+        });
+        interpolationService.processAsync(interpolationParams);
+    }
+
+    //插值分析成功后,使用栅格分段专题图展示
+    function processCompleted(InterpolationAnalystEventArgs) {
+        var color1 = new SuperMap.REST.ServerColor(170, 240, 233),
+            color2 = new SuperMap.REST.ServerColor(176, 244, 188),
+            color3 = new SuperMap.REST.ServerColor(218, 251, 178),
+            color4 = new SuperMap.REST.ServerColor(220, 236, 145),
+            color5 = new SuperMap.REST.ServerColor(96, 198, 66),
+            color6 = new SuperMap.REST.ServerColor(20, 142, 53),
+            color7 = new SuperMap.REST.ServerColor(85, 144, 55),
+            color8 = new SuperMap.REST.ServerColor(171, 168, 38),
+            color9 = new SuperMap.REST.ServerColor(235, 165, 9),
+            color10 = new SuperMap.REST.ServerColor(203, 89, 2),
+            color11 = new SuperMap.REST.ServerColor(157, 25, 1),
+            color12 = new SuperMap.REST.ServerColor(118, 15, 3),
+            color13 = new SuperMap.REST.ServerColor(112, 32, 7),
+            color14 = new SuperMap.REST.ServerColor(106, 45, 12),
+            color15 = new SuperMap.REST.ServerColor(129, 80, 50),
+            color16 = new SuperMap.REST.ServerColor(160, 154, 146),
+            color17 = new SuperMap.REST.ServerColor(107, 47, 14),
+            color18 = new SuperMap.REST.ServerColor(125, 75, 44),
+            color19 = new SuperMap.REST.ServerColor(146, 110, 88),
+            color20 = new SuperMap.REST.ServerColor(166, 153, 146),
+            themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -5,
+                end: -3.4,
+                color: color1
+            }),
+
+            themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -3.4,
+                end: -1.8,
+                color: color2
+            }),
+            themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -1.8,
+                end: -0.2,
+                color: color3
+            }),
+            themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -0.2,
+                end: 1.4,
+                color: color4
+            }),
+            themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 1.4,
+                end: 3,
+                color: color5
+            }),
+            themeGridRangeIteme6 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 3,
+                end: 4.6,
+                color: color6
+            }),
+            themeGridRangeIteme7 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 4.6,
+                end: 6.2,
+                color: color7
+            }),
+
+            themeGridRangeIteme8 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 6.2,
+                end: 7.8,
+                color: color8
+            }),
+            themeGridRangeIteme9 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 7.8,
+                end: 9.4,
+                color: color9
+            }),
+            themeGridRangeIteme10 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 9.4,
+                end: 11,
+                color: color10
+            }),
+            themeGridRangeIteme11 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 11,
+                end: 12.6,
+                color: color11
+            }),
+            themeGridRangeIteme12 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 12.6,
+                end: 14.2,
+                color: color12
+            }),
+            themeGridRangeIteme13 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 14.2,
+                end: 35.8,
+                color: color13
+            }),
+
+            themeGridRangeIteme14 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 35.8,
+                end: 57.4,
+                color: color14
+            }),
+            themeGridRangeIteme15 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 57.4,
+                end: 79,
+                color: color15
+            }),
+            themeGridRangeIteme16 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 79,
+                end: 90.6,
+                color: color16
+            }),
+            themeGridRangeIteme17 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 90.6,
+                end: 112.2,
+                color: color17
+            }),
+            themeGridRangeIteme18 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 112.2,
+                end: 123.8,
+                color: color18
+            }),
+            themeGridRangeIteme19 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 123.8,
+                end: 125.4,
+                color: color19
+            }),
+            themeGridRangeIteme20 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 125.4,
+                end: 135,
+                color: color20
+            }),
+
+            themeGridRange = new SuperMap.REST.ThemeGridRange({
+                reverseColor: false,
+                rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
+                //栅格分段专题图子项数组
+                items: [themeGridRangeIteme1,
+                    themeGridRangeIteme2,
+                    themeGridRangeIteme3,
+                    themeGridRangeIteme4,
+                    themeGridRangeIteme5,
+                    themeGridRangeIteme6,
+                    themeGridRangeIteme7,
+                    themeGridRangeIteme8,
+                    themeGridRangeIteme9,
+                    themeGridRangeIteme10,
+                    themeGridRangeIteme11,
+                    themeGridRangeIteme12,
+                    themeGridRangeIteme13,
+                    themeGridRangeIteme14,
+                    themeGridRangeIteme15,
+                    themeGridRangeIteme16,
+                    themeGridRangeIteme17,
+                    themeGridRangeIteme18,
+                    themeGridRangeIteme19,
+                    themeGridRangeIteme20
+                ]
+            }),
+
+            themeParameters = new SuperMap.REST.ThemeParameters({
+                //制作专题图的数据集数组
+                datasetNames: [InterpolationAnalystEventArgs.result.dataset.split('@')[0]],
+                // 制作专题图的数据集所在的数据源数组
+                dataSourceNames: ["Interpolation"],
+                joinItems: null,
+                //专题图对象列表
+                themes: [themeGridRange],
+                types: ['REGION']
+            });
+        var themeService = new SuperMap.REST.ThemeService(url, {
+            eventListeners: {
+                "processCompleted": themeCompleted,
+                "processFailed": themeFailed
+            }
+        });
+        themeService.processAsync(themeParameters);
+    }
+
+    //服务端成功返回专题图结果时调用
+    function themeCompleted(themeEventArgs) {
+        if (themeEventArgs.result.resourceInfo.id) {
+            themeLayer = new SuperMap.Layer.TiledDynamicRESTLayer("插值分析结果图", url, {
+                cacheEnabled: true,
+                transparent: true,
+                layersID: themeEventArgs.result.resourceInfo.id
+            }, {"maxResolution": "auto"});
+            themeLayer.events.on({"layerInitialized": addThemelayer});
+
+        }
+    }
+
+    //添加专题图至map
+    function addThemelayer() {
+        map.addLayer(themeLayer);
+    }
+
+    //插值分析失败后调用
+    function processFailed(ServiceFailedEventArgs) {
+        widgets.alert.showAlert(ServiceFailedEventArgs.error.errorMsg,false);
+    }
+
+    //服务端返回专题图结果失败时调用
+    function themeFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg,false);
+    }
+
+    //清除专题图图层
+    function removeInterpolation() {
+        widgets.alert.clearAlert();
+        if (map.layers.length > 1) {
+            map.removeLayer(themeLayer, true);
+        }
+    }
+</script>
+
+</body>
+</html>

+ 367 - 0
public/supermap/examples/classic/analysis_interpolationAnalystByGeometry.html

@@ -0,0 +1,367 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_interpolationAnalystByGeo"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            width: 300px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_interpolationAnalystByGeo"></h5></div>
+    <div class='panel-body content'>
+        <div class='panel'>
+            <div class='input-group'>
+                <span class='input-group-addon' data-i18n="resources.text_min"></span>
+                <input type='number' class='form-control' id='zMin' value='-5'/>
+            </div>
+        </div>
+        <div class='panel'>
+            <div class='input-group'>
+                <span class='input-group-addon' data-i18n="resources.text_max"></span>
+                <input type='number' class='form-control' id='zMax' value='28'/>
+            </div>
+        </div>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_byGeo" onclick="cretePointsAnalyst()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_delete" onclick="removeInterpolation()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url = host + "/iserver/services/map-temperature/rest/maps/全国温度变化图",
+        url2 = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
+    var map, baseLayer, themeLayer, points = [];
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        map.allOverlays = true;
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("全国温度变化图", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.params.layersID = "[0,1,2]";
+        baseLayer.events.on({"layerInitialized": addLayer});
+    }
+
+    function addLayer() {
+        map.addLayer(baseLayer);
+        map.setCenter(new SuperMap.LonLat(531762, 3895330), 0);
+    }
+
+    //离散点插值分析
+    function cretePointsAnalyst() {
+        widgets.alert.clearAlert();
+        removeInterpolation();
+        //查询,以得到用于插值分析的geometry
+        var queryParam, queryBySQLParams, queryBySQLService;
+        queryParam = new SuperMap.REST.FilterParameter({
+            name: "SamplesP@Interpolation",
+            attributeFilter: "SMID>0"
+        });
+        queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({
+            queryParams: [queryParam]
+        });
+        queryBySQLService = new SuperMap.REST.QueryBySQLService(url, {
+            eventListeners: {"processCompleted": sqlService_ProcessCompleted, "processFailed": processFailed}
+        });
+        queryBySQLService.processAsync(queryBySQLParams);
+    }
+
+    function sqlService_ProcessCompleted(queryEventArgs) {
+        var feature, recordsets = queryEventArgs.result.recordsets;
+        var z, zMin = parseFloat(document.getElementById("zMin").value),
+            zMax = parseFloat(document.getElementById("zMax").value);
+        if (recordsets) {
+            for (var i = 0; i < recordsets[0].features.length; i++) {
+                gp = recordsets[0].features[i].geometry;
+                var point = new SuperMap.Geometry.Point(gp.x, gp.y);
+                //每个插值点在插值过程中的权重值
+                z = Math.random() * (zMax - zMin) + zMin;
+                point.tag = z;
+                points.push(point);
+            }
+        }
+        //IDW插值法
+        var interpolationParams = new SuperMap.REST.InterpolationIDWAnalystParameters({
+            //插值分析类型
+            InterpolationAnalystType: "geometry",
+            //插值分析结果数据集的名称
+            outputDatasetName: "IDWcretePoints_result",
+            //插值分析结果数据源的名称
+            outputDatasourceName: "Interpolation",
+            //结果栅格数据集存储的像素格式
+            pixelFormat: SuperMap.REST.PixelFormat.double,
+            //用于做插值分析的离散点集合
+            inputPoints: points,
+            // 属性过滤条件
+            filterQueryParameter: {
+                attributeFilter: ""
+            },
+            //采取定长查找参与运算点的方式
+            searchMode: "KDTREE_FIXED_RADIUS",
+            // 查找半径,与点数据单位相同
+            searchRadius: 200,
+            resolution: 9000,
+            bounds: new SuperMap.Bounds(-2640403.6321084504, 1873792.1034850003, 3247669.390292245, 5921501.395578556)
+        });
+        var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
+            eventListeners: {
+                "processCompleted": processCompleted,
+                "processFailed": processFailed
+            }
+        });
+        interpolationService.processAsync(interpolationParams);
+    }
+
+
+    //插值分析成功后,使用栅格分段专题图显示
+    function processCompleted(InterpolationAnalystEventArgs) {
+
+        var color1 = new SuperMap.REST.ServerColor(170, 240, 233),
+            color2 = new SuperMap.REST.ServerColor(176, 244, 188),
+            color3 = new SuperMap.REST.ServerColor(218, 251, 178),
+            color4 = new SuperMap.REST.ServerColor(220, 236, 145),
+            color5 = new SuperMap.REST.ServerColor(96, 198, 66),
+            color6 = new SuperMap.REST.ServerColor(20, 142, 53),
+            color7 = new SuperMap.REST.ServerColor(85, 144, 55),
+            color8 = new SuperMap.REST.ServerColor(171, 168, 38),
+            color9 = new SuperMap.REST.ServerColor(235, 165, 9),
+            color10 = new SuperMap.REST.ServerColor(203, 89, 2),
+            color11 = new SuperMap.REST.ServerColor(157, 25, 1),
+            color12 = new SuperMap.REST.ServerColor(118, 15, 3),
+            color13 = new SuperMap.REST.ServerColor(112, 32, 7),
+            color14 = new SuperMap.REST.ServerColor(106, 45, 12),
+            color15 = new SuperMap.REST.ServerColor(129, 80, 50),
+            color16 = new SuperMap.REST.ServerColor(160, 154, 146),
+            color17 = new SuperMap.REST.ServerColor(107, 47, 14),
+            color18 = new SuperMap.REST.ServerColor(125, 75, 44),
+            color19 = new SuperMap.REST.ServerColor(146, 110, 88),
+            color20 = new SuperMap.REST.ServerColor(166, 153, 146),
+            themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -5,
+                end: -3.4,
+                color: color1
+            }),
+
+            themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -3.4,
+                end: -1.8,
+                color: color2
+            }),
+            themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -1.8,
+                end: -0.2,
+                color: color3
+            }),
+            themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -0.2,
+                end: 1.4,
+                color: color4
+            }),
+            themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 1.4,
+                end: 3,
+                color: color5
+            }),
+            themeGridRangeIteme6 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 3,
+                end: 4.6,
+                color: color6
+            }),
+            themeGridRangeIteme7 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 4.6,
+                end: 6.2,
+                color: color7
+            }),
+
+            themeGridRangeIteme8 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 6.2,
+                end: 7.8,
+                color: color8
+            }),
+            themeGridRangeIteme9 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 7.8,
+                end: 9.4,
+                color: color9
+            }),
+            themeGridRangeIteme10 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 9.4,
+                end: 11,
+                color: color10
+            }),
+            themeGridRangeIteme11 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 11,
+                end: 12.6,
+                color: color11
+            }),
+            themeGridRangeIteme12 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 12.6,
+                end: 14.2,
+                color: color12
+            }),
+            themeGridRangeIteme13 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 14.2,
+                end: 15.8,
+                color: color13
+            }),
+
+            themeGridRangeIteme14 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 15.8,
+                end: 17.4,
+                color: color14
+            }),
+            themeGridRangeIteme15 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 17.4,
+                end: 19,
+                color: color15
+            }),
+            themeGridRangeIteme16 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 19,
+                end: 20.6,
+                color: color16
+            }),
+            themeGridRangeIteme17 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 20.6,
+                end: 22.2,
+                color: color17
+            }),
+            themeGridRangeIteme18 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 22.2,
+                end: 23.8,
+                color: color18
+            }),
+            themeGridRangeIteme19 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 23.8,
+                end: 25.4,
+                color: color19
+            }),
+            themeGridRangeIteme20 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 25.4,
+                end: 27,
+                color: color20
+            }),
+
+            themeGridRange = new SuperMap.REST.ThemeGridRange({
+                reverseColor: false,
+                rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
+                //栅格分段专题图子项数组
+                items: [themeGridRangeIteme1,
+                    themeGridRangeIteme2,
+                    themeGridRangeIteme3,
+                    themeGridRangeIteme4,
+                    themeGridRangeIteme5,
+                    themeGridRangeIteme6,
+                    themeGridRangeIteme7,
+                    themeGridRangeIteme8,
+                    themeGridRangeIteme9,
+                    themeGridRangeIteme10,
+                    themeGridRangeIteme11,
+                    themeGridRangeIteme12,
+                    themeGridRangeIteme13,
+                    themeGridRangeIteme14,
+                    themeGridRangeIteme15,
+                    themeGridRangeIteme16,
+                    themeGridRangeIteme17,
+                    themeGridRangeIteme18,
+                    themeGridRangeIteme19,
+                    themeGridRangeIteme20
+                ]
+            }),
+
+            themeParameters = new SuperMap.REST.ThemeParameters({
+                //制作专题图的数据集数组
+                datasetNames: [InterpolationAnalystEventArgs.result.dataset.split('@')[0]],
+                // 制作专题图的数据集所在的数据源数组
+                dataSourceNames: ["Interpolation"],
+                joinItems: null,
+                //专题图对象列表
+                themes: [themeGridRange],
+                types: ['REGION']
+            });
+        var themeService = new SuperMap.REST.ThemeService(url, {
+            eventListeners: {
+                "processCompleted": themeCompleted,
+                "processFailed": themeFailed
+            }
+        });
+        themeService.processAsync(themeParameters);
+    }
+
+    function themeCompleted(themeEventArgs) {
+        if (themeEventArgs.result.resourceInfo.id) {
+            themeLayer = new SuperMap.Layer.TiledDynamicRESTLayer("插值分析结果图", url, {
+                cacheEnabled: true,
+                transparent: true,
+                layersID: themeEventArgs.result.resourceInfo.id
+            }, {"maxResolution": "auto"});
+            themeLayer.events.on({"layerInitialized": addThemelayer});
+
+        }
+    }
+
+    function addThemelayer() {
+        map.addLayer(themeLayer);
+
+    }
+
+    function processFailed(ServiceFailedEventArgs) {
+        widgets.alert.showAlert(ServiceFailedEventArgs.error.errorMsg,false);
+    }
+
+    function themeFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg,false);
+    }
+
+    function removeInterpolation() {
+        widgets.alert.clearAlert();
+        if (map.layers.length > 1) {
+            map.removeLayer(themeLayer, true);
+        }
+    }
+
+</script>
+
+</body>
+</html>

+ 325 - 0
public/supermap/examples/classic/analysis_interpolationAnalystByIDW.html

@@ -0,0 +1,325 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_interpolationAnalystByIDW"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            width: 250px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_interpolationAnalystByIDW"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_byIDW" onclick="interpolationIDW()"/>&nbsp; &nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear" onclick="removeInterpolation()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url = host + "/iserver/services/map-temperature/rest/maps/全国温度变化图",
+        url2 = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
+    var map, baseLayer, themeLayer;
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        map.allOverlays = true;
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("全国温度变化图", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.params.layersID = "[0,1,2]";
+        baseLayer.events.on({"layerInitialized": addLayer});
+    }
+
+    function addLayer() {
+        map.addLayer(baseLayer);
+        map.setCenter(new SuperMap.LonLat(531762, 3895330), 0);
+    }
+
+    //IDW插值分析
+    function interpolationIDW() {
+        widgets.alert.clearAlert();
+        removeInterpolation();
+        var interpolationParams = new SuperMap.REST.InterpolationIDWAnalystParameters({
+            //用于做插值分析的数据源中数据集的名称
+            dataset: "SamplesP@Interpolation",
+            //插值分析结果数据集的名称
+            outputDatasetName: "IDW_result",
+            //插值分析结果数据源的名称
+            outputDatasourceName: "Interpolation",
+            //结果栅格数据集存储的像素格式
+            pixelFormat: SuperMap.REST.PixelFormat.double,
+            // 属性过滤条件
+//            filterQueryParameter: {
+//                attributeFilter: ""
+//            },
+            //存储用于进行插值分析的字段名称
+            zValueFieldName: "AVG_TMP",
+            resolution: 7923.84989108,
+            //采取固定点数查找参与运算点的方式
+            searchMode: "KDTREE_FIXED_COUNT",
+            //固定点数查找方式下,参与差值运算的点数默认为12。
+            expectedCount: 12,
+            bounds: new SuperMap.Bounds(-2640403.6321084504, 1873792.1034850003, 3247669.390292245, 5921501.395578556)
+        });
+        var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
+            eventListeners: {
+                "processCompleted": processCompleted,
+                "processFailed": processFailed
+            }
+        });
+        interpolationService.processAsync(interpolationParams);
+    }
+
+    //插值分析成功后,使用栅格分段专题图展示
+    function processCompleted(InterpolationAnalystEventArgs) {
+        var color1 = new SuperMap.REST.ServerColor(170, 240, 233),
+            color2 = new SuperMap.REST.ServerColor(176, 244, 188),
+            color3 = new SuperMap.REST.ServerColor(218, 251, 178),
+            color4 = new SuperMap.REST.ServerColor(220, 236, 145),
+            color5 = new SuperMap.REST.ServerColor(96, 198, 66),
+            color6 = new SuperMap.REST.ServerColor(20, 142, 53),
+            color7 = new SuperMap.REST.ServerColor(85, 144, 55),
+            color8 = new SuperMap.REST.ServerColor(171, 168, 38),
+            color9 = new SuperMap.REST.ServerColor(235, 165, 9),
+            color10 = new SuperMap.REST.ServerColor(203, 89, 2),
+            color11 = new SuperMap.REST.ServerColor(157, 25, 1),
+            color12 = new SuperMap.REST.ServerColor(118, 15, 3),
+            color13 = new SuperMap.REST.ServerColor(112, 32, 7),
+            color14 = new SuperMap.REST.ServerColor(106, 45, 12),
+            color15 = new SuperMap.REST.ServerColor(129, 80, 50),
+            color16 = new SuperMap.REST.ServerColor(160, 154, 146),
+            color17 = new SuperMap.REST.ServerColor(107, 47, 14),
+            color18 = new SuperMap.REST.ServerColor(125, 75, 44),
+            color19 = new SuperMap.REST.ServerColor(146, 110, 88),
+            color20 = new SuperMap.REST.ServerColor(166, 153, 146),
+            themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -5,
+                end: -3.4,
+                color: color1
+            }),
+
+            themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -3.4,
+                end: -1.8,
+                color: color2
+            }),
+            themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -1.8,
+                end: -0.2,
+                color: color3
+            }),
+            themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -0.2,
+                end: 1.4,
+                color: color4
+            }),
+            themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 1.4,
+                end: 3,
+                color: color5
+            }),
+            themeGridRangeIteme6 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 3,
+                end: 4.6,
+                color: color6
+            }),
+            themeGridRangeIteme7 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 4.6,
+                end: 6.2,
+                color: color7
+            }),
+
+            themeGridRangeIteme8 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 6.2,
+                end: 7.8,
+                color: color8
+            }),
+            themeGridRangeIteme9 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 7.8,
+                end: 9.4,
+                color: color9
+            }),
+            themeGridRangeIteme10 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 9.4,
+                end: 11,
+                color: color10
+            }),
+            themeGridRangeIteme11 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 11,
+                end: 12.6,
+                color: color11
+            }),
+            themeGridRangeIteme12 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 12.6,
+                end: 14.2,
+                color: color12
+            }),
+            themeGridRangeIteme13 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 14.2,
+                end: 15.8,
+                color: color13
+            }),
+
+            themeGridRangeIteme14 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 15.8,
+                end: 17.4,
+                color: color14
+            }),
+            themeGridRangeIteme15 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 17.4,
+                end: 19,
+                color: color15
+            }),
+            themeGridRangeIteme16 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 19,
+                end: 20.6,
+                color: color16
+            }),
+            themeGridRangeIteme17 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 20.6,
+                end: 22.2,
+                color: color17
+            }),
+            themeGridRangeIteme18 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 22.2,
+                end: 23.8,
+                color: color18
+            }),
+            themeGridRangeIteme19 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 23.8,
+                end: 25.4,
+                color: color19
+            }),
+            themeGridRangeIteme20 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 25.4,
+                end: 27,
+                color: color20
+            }),
+
+            themeGridRange = new SuperMap.REST.ThemeGridRange({
+                reverseColor: false,
+                rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
+                //栅格分段专题图子项数组
+                items: [themeGridRangeIteme1,
+                    themeGridRangeIteme2,
+                    themeGridRangeIteme3,
+                    themeGridRangeIteme4,
+                    themeGridRangeIteme5,
+                    themeGridRangeIteme6,
+                    themeGridRangeIteme7,
+                    themeGridRangeIteme8,
+                    themeGridRangeIteme9,
+                    themeGridRangeIteme10,
+                    themeGridRangeIteme11,
+                    themeGridRangeIteme12,
+                    themeGridRangeIteme13,
+                    themeGridRangeIteme14,
+                    themeGridRangeIteme15,
+                    themeGridRangeIteme16,
+                    themeGridRangeIteme17,
+                    themeGridRangeIteme18,
+                    themeGridRangeIteme19,
+                    themeGridRangeIteme20
+                ]
+            }),
+
+            themeParameters = new SuperMap.REST.ThemeParameters({
+                //制作专题图的数据集数组
+                datasetNames: [InterpolationAnalystEventArgs.result.dataset.split('@')[0]],
+                // 制作专题图的数据集所在的数据源数组
+                dataSourceNames: ["Interpolation"],
+                joinItems: null,
+                //专题图对象列表
+                themes: [themeGridRange],
+                types: ['REGION']
+            });
+        var themeService = new SuperMap.REST.ThemeService(url, {
+            eventListeners: {
+                "processCompleted": themeCompleted,
+                "processFailed": themeFailed
+            }
+        });
+        themeService.processAsync(themeParameters);
+    }
+
+    //服务端成功返回专题图结果时调用
+    function themeCompleted(themeEventArgs) {
+        if (themeEventArgs.result.resourceInfo.id) {
+            themeLayer = new SuperMap.Layer.TiledDynamicRESTLayer("插值分析结果图", url, {
+                cacheEnabled: true,
+                transparent: true,
+                layersID: themeEventArgs.result.resourceInfo.id
+            }, {"maxResolution": "auto"});
+            themeLayer.events.on({"layerInitialized": addThemelayer});
+        }
+    }
+
+    //添加专题图至map
+    function addThemelayer() {
+        map.addLayer(themeLayer);
+    }
+
+    //插值分析失败后调用
+    function processFailed(ServiceFailedEventArgs) {
+        widgets.alert.showAlert(ServiceFailedEventArgs.error.errorMsg,false);
+    }
+
+    //服务端返回专题图结果失败时调用
+    function themeFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg,false);
+    }
+
+    //清除专题图图层
+    function removeInterpolation() {
+        widgets.alert.clearAlert();
+        if (map.layers.length > 1) {
+            map.removeLayer(themeLayer, true);
+        }
+    }
+</script>
+
+</body>
+</html>

+ 472 - 0
public/supermap/examples/classic/analysis_interpolationAnalystByKriging.html

@@ -0,0 +1,472 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<title data-i18n="resources.title_interpolationAnalystByKriging"></title>
+		<style type="text/css">
+			body {
+				margin: 0;
+				overflow: hidden;
+				background: #fff;
+				width: 100%;
+				height: 100%;
+			}
+
+			#map {
+				position: absolute;
+				width: 100%;
+				height: 100%;
+			}
+
+			#toolbar {
+				position: absolute;
+				top: 50px;
+				right: 10px;
+				text-align: center;
+				z-index: 100;
+				border-radius: 4px;
+			}
+		</style>
+	</head>
+	<body>
+		<div id="toolbar" class="panel panel-primary">
+			<div class="panel-heading">
+				<h5 class="panel-title text-center" data-i18n="resources.text_interpolationAnalystByKriging"></h5>
+			</div>
+			<div class="panel-body content">
+				<input
+					type="button"
+					class="btn btn-default"
+					data-i18n="[value]resources.text_simple"
+					onclick="interpolationSimpleKriging()"
+				/>
+				<input
+					type="button"
+					class="btn btn-default"
+					data-i18n="[value]resources.text_ordinary"
+					onclick="interpolationKriging()"
+				/>
+				<input
+					type="button"
+					class="btn btn-default"
+					data-i18n="[value]resources.text_extensive"
+					onclick="interpolationUniversalKriging()"
+				/>
+				<input
+					type="button"
+					class="btn btn-default"
+					data-i18n="[value]resources.text_input_value_clear"
+					onclick="removeInterpolation()"
+				/>
+			</div>
+		</div>
+		<div id="map"></div>
+		<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+		<script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
+		<script>
+			var host = window.isLocal ? window.server : "https://iserver.supermap.io",
+				url = host + '/iserver/services/map-temperature/rest/maps/全国温度变化图',
+				url2 = host + '/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst';
+			var map, baseLayer, themeLayer;
+
+			init();
+
+			function init() {
+				map = new SuperMap.Map('map', {
+					controls: [
+						new SuperMap.Control.ScaleLine(),
+						new SuperMap.Control.Zoom(),
+						new SuperMap.Control.Navigation({
+							dragPanOptions: {
+								enableKinetic: true,
+							},
+						}),
+					],
+					units: 'm',
+				});
+				map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+				map.allOverlays = true;
+				baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer(
+					'全国温度变化图',
+					url,
+					{
+						transparent: true,
+						cacheEnabled: true,
+					},
+					{ maxResolution: 'auto' }
+				);
+				baseLayer.params.layersID = '[0,1,2]';
+				baseLayer.events.on({ layerInitialized: addLayer });
+			}
+
+			function addLayer() {
+				map.addLayer(baseLayer);
+				map.setCenter(new SuperMap.LonLat(531762, 3895330), 0);
+			}
+
+			// var points = [
+			// 	new SuperMap.Geometry.Point(111.4687675858, 353.85481148),
+			// 	new SuperMap.Geometry.Point(111.4687675858, 408.1485649972),
+			// 	new SuperMap.Geometry.Point(208.9814293754, 408.1485649972),
+			// 	new SuperMap.Geometry.Point(208.9814293754, 353.85481148),
+      //  ];
+			var points = new SuperMap.Geometry.LinearRing([
+				new SuperMap.Geometry.Point(0, 4010338),
+				new SuperMap.Geometry.Point(1063524, 4010338),
+				new SuperMap.Geometry.Point(1063524, 3150322),
+				new SuperMap.Geometry.Point(0, 3150322),
+			]);
+			var region = new SuperMap.Geometry.Polygon([points]);
+			var clipParam = new SuperMap.REST.ClipParameter({
+				// clipRegion: new SuperMap.Geometry.Polygon(new SuperMap.Geometry.LinearRing(points)),
+				clipRegion: region,
+				isClipInRegion: true,
+				isExactClip: true,
+			});
+			console.log(clipParam);
+			//简单克吕金插值法
+			function interpolationSimpleKriging() {
+				widgets.alert.clearAlert();
+				removeInterpolation();
+				console.log(clipParam);
+				var interpolationParams = new SuperMap.REST.InterpolationKrigingAnalystParameters({
+					//用于做插值分析的数据源中数据集的名称
+					dataset: 'SamplesP@Interpolation',
+					//插值分析结果数据集的名称
+					outputDatasetName: 'SimpleKriging_Result',
+					//插值分析结果数据源的名称
+					outputDatasourceName: 'Interpolation',
+					//结果栅格数据集存储的像素格式
+					pixelFormat: SuperMap.REST.PixelFormat.double,
+					// 属性过滤条件
+					//            filterQueryParameter: {
+					//                attributeFilter: ""
+					//            },
+					//存储用于进行插值分析的字段名称
+					clipParam: clipParam,
+					zValueFieldName: 'AVG_TMP',
+					//克吕金插值的类型
+					type: 'SimpleKriging',
+					//简单克吕金类型下,插值字段的平均值。
+					mean: 11.6005,
+					searchMode: 'KDTREE_FIXED_COUNT',
+					bounds: new SuperMap.Bounds(
+						-2640403.6321084504,
+						1873792.1034850003,
+						3247669.390292245,
+						5921501.395578556
+					),
+				});
+				var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
+					eventListeners: {
+						processCompleted: processCompleted,
+						processFailed: processFailed,
+          },
+          isInTheSameDomain:true
+				});
+				interpolationService.processAsync(interpolationParams);
+			}
+
+			//普通克吕金插值法
+			function interpolationKriging() {
+				widgets.alert.clearAlert();
+				removeInterpolation();
+				var interpolationParams = new SuperMap.REST.InterpolationKrigingAnalystParameters({
+					//用于做插值分析的数据源中数据集的名称
+					dataset: 'SamplesP@Interpolation',
+					//插值分析结果数据集的名称
+					outputDatasetName: 'Kriging_Result',
+					//插值分析结果数据源的名称
+					outputDatasourceName: 'Interpolation',
+					//结果栅格数据集存储的像素格式
+					pixelFormat: SuperMap.REST.PixelFormat.double,
+					// 属性过滤条件
+					filterQueryParameter: {
+						attributeFilter: '',
+					},
+					//存储用于进行插值分析的字段名称
+					zValueFieldName: 'AVG_TMP',
+					searchRadius: '0',
+					//克吕金插值的类型
+					type: 'KRIGING',
+					clipParam: clipParam,
+					searchMode: 'KDTREE_FIXED_COUNT',
+					bounds: new SuperMap.Bounds(
+						-2640403.6321084504,
+						1873792.1034850003,
+						3247669.390292245,
+						5921501.395578556
+					),
+				});
+				var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
+					eventListeners: {
+						processCompleted: processCompleted,
+						processFailed: processFailed,
+					},
+				});
+				interpolationService.processAsync(interpolationParams);
+			}
+
+			// 泛克吕金插值法
+			function interpolationUniversalKriging() {
+				widgets.alert.clearAlert();
+				removeInterpolation();
+				var interpolationParams = new SuperMap.REST.InterpolationKrigingAnalystParameters({
+					//用于做插值分析的数据源中数据集的名称
+					dataset: 'SamplesP@Interpolation',
+					//插值分析结果数据集的名称
+					outputDatasetName: 'UniversalKriging_Result',
+					//插值分析结果数据源的名称
+					outputDatasourceName: 'Interpolation',
+					//结果栅格数据集存储的像素格式
+					pixelFormat: SuperMap.REST.PixelFormat.double,
+					// 属性过滤条件
+					filterQueryParameter: {
+						attributeFilter: '',
+					},
+					//存储用于进行插值分析的字段名称
+					zValueFieldName: 'AVG_TMP',
+					searchRadius: '0',
+					//克吕金插值的类型
+					type: 'UniversalKriging',
+					//克吕金类型中旋转角度值
+					clipParam: clipParam,
+					angle: 0,
+					//克吕金类型中块金效应值
+					nugget: 0,
+					//克吕金类型中自相关阈值,单位与原数据集单位相同
+					range: 0,
+					//克吕金类型中基台值
+					sill: 0,
+					//克吕金插值时的半变函数类型
+					variogramMode: 'SPHERICAL',
+					searchMode: 'KDTREE_FIXED_COUNT',
+					bounds: new SuperMap.Bounds(
+						-2640403.6321084504,
+						1873792.1034850003,
+						3247669.390292245,
+						5921501.395578556
+					),
+				});
+				var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
+					eventListeners: {
+						processCompleted: processCompleted,
+						processFailed: processFailed,
+					},
+				});
+				interpolationService.processAsync(interpolationParams);
+			}
+
+			//插值分析成功后,使用栅格分段专题图展示
+			function processCompleted(InterpolationAnalystEventArgs) {
+				var color1 = new SuperMap.REST.ServerColor(170, 240, 233),
+					color2 = new SuperMap.REST.ServerColor(176, 244, 188),
+					color3 = new SuperMap.REST.ServerColor(218, 251, 178),
+					color4 = new SuperMap.REST.ServerColor(220, 236, 145),
+					color5 = new SuperMap.REST.ServerColor(96, 198, 66),
+					color6 = new SuperMap.REST.ServerColor(20, 142, 53),
+					color7 = new SuperMap.REST.ServerColor(85, 144, 55),
+					color8 = new SuperMap.REST.ServerColor(171, 168, 38),
+					color9 = new SuperMap.REST.ServerColor(235, 165, 9),
+					color10 = new SuperMap.REST.ServerColor(203, 89, 2),
+					color11 = new SuperMap.REST.ServerColor(157, 25, 1),
+					color12 = new SuperMap.REST.ServerColor(118, 15, 3),
+					color13 = new SuperMap.REST.ServerColor(112, 32, 7),
+					color14 = new SuperMap.REST.ServerColor(106, 45, 12),
+					color15 = new SuperMap.REST.ServerColor(129, 80, 50),
+					color16 = new SuperMap.REST.ServerColor(160, 154, 146),
+					color17 = new SuperMap.REST.ServerColor(107, 47, 14),
+					color18 = new SuperMap.REST.ServerColor(125, 75, 44),
+					color19 = new SuperMap.REST.ServerColor(146, 110, 88),
+					color20 = new SuperMap.REST.ServerColor(166, 153, 146),
+					themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
+						start: -5,
+						end: -3.4,
+						color: color1,
+					}),
+					themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
+						start: -3.4,
+						end: -1.8,
+						color: color2,
+					}),
+					themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
+						start: -1.8,
+						end: -0.2,
+						color: color3,
+					}),
+					themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
+						start: -0.2,
+						end: 1.4,
+						color: color4,
+					}),
+					themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 1.4,
+						end: 3,
+						color: color5,
+					}),
+					themeGridRangeIteme6 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 3,
+						end: 4.6,
+						color: color6,
+					}),
+					themeGridRangeIteme7 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 4.6,
+						end: 6.2,
+						color: color7,
+					}),
+					themeGridRangeIteme8 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 6.2,
+						end: 7.8,
+						color: color8,
+					}),
+					themeGridRangeIteme9 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 7.8,
+						end: 9.4,
+						color: color9,
+					}),
+					themeGridRangeIteme10 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 9.4,
+						end: 11,
+						color: color10,
+					}),
+					themeGridRangeIteme11 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 11,
+						end: 12.6,
+						color: color11,
+					}),
+					themeGridRangeIteme12 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 12.6,
+						end: 14.2,
+						color: color12,
+					}),
+					themeGridRangeIteme13 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 14.2,
+						end: 15.8,
+						color: color13,
+					}),
+					themeGridRangeIteme14 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 15.8,
+						end: 17.4,
+						color: color14,
+					}),
+					themeGridRangeIteme15 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 17.4,
+						end: 19,
+						color: color15,
+					}),
+					themeGridRangeIteme16 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 19,
+						end: 20.6,
+						color: color16,
+					}),
+					themeGridRangeIteme17 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 20.6,
+						end: 22.2,
+						color: color17,
+					}),
+					themeGridRangeIteme18 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 22.2,
+						end: 23.8,
+						color: color18,
+					}),
+					themeGridRangeIteme19 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 23.8,
+						end: 25.4,
+						color: color19,
+					}),
+					themeGridRangeIteme20 = new SuperMap.REST.ThemeGridRangeItem({
+						start: 25.4,
+						end: 27,
+						color: color20,
+					}),
+					themeGridRange = new SuperMap.REST.ThemeGridRange({
+						reverseColor: false,
+						rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
+						//栅格分段专题图子项数组
+						items: [
+							themeGridRangeIteme1,
+							themeGridRangeIteme2,
+							themeGridRangeIteme3,
+							themeGridRangeIteme4,
+							themeGridRangeIteme5,
+							themeGridRangeIteme6,
+							themeGridRangeIteme7,
+							themeGridRangeIteme8,
+							themeGridRangeIteme9,
+							themeGridRangeIteme10,
+							themeGridRangeIteme11,
+							themeGridRangeIteme12,
+							themeGridRangeIteme13,
+							themeGridRangeIteme14,
+							themeGridRangeIteme15,
+							themeGridRangeIteme16,
+							themeGridRangeIteme17,
+							themeGridRangeIteme18,
+							themeGridRangeIteme19,
+							themeGridRangeIteme20,
+						],
+					}),
+					themeParameters = new SuperMap.REST.ThemeParameters({
+						//制作专题图的数据集数组
+						datasetNames: [InterpolationAnalystEventArgs.result.dataset.split('@')[0]],
+						// 制作专题图的数据集所在的数据源数组
+						dataSourceNames: ['Interpolation'],
+						joinItems: null,
+						//专题图对象列表
+						themes: [themeGridRange],
+						types: ['REGION'],
+					});
+				var themeService = new SuperMap.REST.ThemeService(url, {
+					eventListeners: {
+						processCompleted: themeCompleted,
+						processFailed: themeFailed,
+					},
+				});
+				themeService.processAsync(themeParameters);
+			}
+
+			//服务端成功返回专题图结果时调用
+			function themeCompleted(themeEventArgs) {
+				if (themeEventArgs.result.resourceInfo.id) {
+					themeLayer = new SuperMap.Layer.TiledDynamicRESTLayer(
+						'插值分析结果图',
+						url,
+						{
+							cacheEnabled: true,
+							transparent: true,
+							layersID: themeEventArgs.result.resourceInfo.id,
+						},
+						{ maxResolution: 'auto' }
+					);
+					themeLayer.events.on({ layerInitialized: addThemelayer });
+				}
+			}
+
+			//添加专题图至map
+			function addThemelayer() {
+				map.addLayer(themeLayer);
+			}
+
+			//插值分析失败后调用
+			function processFailed(ServiceFailedEventArgs) {
+				widgets.alert.showAlert(ServiceFailedEventArgs.error.errorMsg, false);
+			}
+
+			//服务端返回专题图结果失败时调用
+			function themeFailed(serviceFailedEventArgs) {
+				widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg, false);
+			}
+
+			//清除专题图图层
+			function removeInterpolation() {
+				widgets.alert.clearAlert();
+				if (map.layers.length > 1) {
+					map.removeLayer(themeLayer, true);
+				}
+			}
+		</script>
+	</body>
+</html>

+ 301 - 0
public/supermap/examples/classic/analysis_interpolationAnalystByRBF.html

@@ -0,0 +1,301 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_interpolationAnalystByRBF"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_interpolationAnalystByRBF"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_RBF" onclick="interpolationRBF()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear" onclick="removeInterpolation()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var  host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url=host+"/iserver/services/map-temperature/rest/maps/全国温度变化图",
+        url2=host+"/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
+    var map,baseLayer,themeLayer;
+
+    init();
+    function init(){
+        map = new SuperMap.Map("map",{controls: [
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            })], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        map.allOverlays = true;
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("全国温度变化图", url, {transparent: true, cacheEnabled: true}, {maxResolution:"auto"});
+        baseLayer.params.layersID="[0,1,2]";
+        baseLayer.events.on({"layerInitialized":addLayer});
+    }
+    function addLayer() {
+        map.addLayer(baseLayer);
+        map.setCenter(new SuperMap.LonLat(531762, 3895330), 0);
+    }
+
+    //样条插值(径向基函数插值)法
+    function interpolationRBF(){
+        widgets.alert.clearAlert();
+        removeInterpolation();
+        var interpolationParams=new SuperMap.REST.InterpolationRBFAnalystParameters({
+            //用于做插值分析的数据源中数据集的名称
+            dataset: "SamplesP@Interpolation",
+            //插值分析结果数据集的名称
+            outputDatasetName: "RBF_Result",
+            //插值分析结果数据源的名称
+            outputDatasourceName: "Interpolation",
+            //结果栅格数据集存储的像素格式
+            pixelFormat: SuperMap.REST.PixelFormat.double,
+            // 属性过滤条件
+//            filterQueryParameter: {
+//                attributeFilter: ""
+//            },
+            //存储用于进行插值分析的字段名称
+            zValueFieldName: "AVG_TMP",
+            //采取固定点数查找参与运算点的方式,此方式下,参与差值运算的点数默认为12。
+            searchMode: "KDTREE_FIXED_COUNT",
+            bounds:new SuperMap.Bounds(-2640403.6321084504, 1873792.1034850003, 3247669.390292245, 5921501.395578556)
+        });
+        var interpolationService=new SuperMap.REST.InterpolationAnalystService(url2,{
+            eventListeners: {
+                "processCompleted": processCompleted,
+                "processFailed": processFailed
+            }});
+        interpolationService.processAsync(interpolationParams);
+    }
+
+    //插值分析成功后,使用栅格分段专题图展示
+    function processCompleted(InterpolationAnalystEventArgs){
+        var color1 = new SuperMap.REST.ServerColor(170,240,233),
+            color2 = new SuperMap.REST.ServerColor(176,244,188),
+            color3 = new SuperMap.REST.ServerColor(218,251,178),
+            color4 = new SuperMap.REST.ServerColor(220,236,145),
+            color5 = new SuperMap.REST.ServerColor(96,198,66),
+            color6 = new SuperMap.REST.ServerColor(20,142,53),
+            color7 = new SuperMap.REST.ServerColor(85,144,55),
+            color8 = new SuperMap.REST.ServerColor(171,168,38),
+            color9 = new SuperMap.REST.ServerColor(235,165,9),
+            color10 = new SuperMap.REST.ServerColor(203,89,2),
+            color11= new SuperMap.REST.ServerColor(157,25,1),
+            color12= new SuperMap.REST.ServerColor(118,15,3),
+            color13= new SuperMap.REST.ServerColor(112,32,7),
+            color14= new SuperMap.REST.ServerColor(106,45,12),
+            color15= new SuperMap.REST.ServerColor(129,80,50),
+            color16= new SuperMap.REST.ServerColor(160,154,146),
+            color17= new SuperMap.REST.ServerColor(107,47,14),
+            color18= new SuperMap.REST.ServerColor(125,75,44),
+            color19= new SuperMap.REST.ServerColor(146,110,88),
+            color20= new SuperMap.REST.ServerColor(166,153,146),
+            themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
+                start:-5,
+                end:-3.4,
+                color: color1
+            }),
+
+            themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -3.4,
+                end: -1.8,
+                color: color2
+            }),
+            themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
+                start:-1.8,
+                end:-0.2,
+                color: color3
+            }),
+            themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -0.2,
+                end:  1.4,
+                color: color4
+            }),
+            themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 1.4,
+                end:  3,
+                color: color5
+            }),
+            themeGridRangeIteme6 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 3,
+                end:  4.6,
+                color: color6
+            }),
+            themeGridRangeIteme7 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 4.6,
+                end: 6.2,
+                color: color7
+            }),
+
+            themeGridRangeIteme8 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 6.2,
+                end: 7.8,
+                color: color8
+            }),
+            themeGridRangeIteme9 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 7.8,
+                end:  9.4,
+                color: color9
+            }),
+            themeGridRangeIteme10 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 9.4,
+                end:  11,
+                color: color10
+            }),
+            themeGridRangeIteme11 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 11,
+                end:  12.6,
+                color: color11
+            }),
+            themeGridRangeIteme12 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 12.6,
+                end:  14.2,
+                color: color12
+            }),
+            themeGridRangeIteme13 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 14.2,
+                end: 15.8,
+                color: color13
+            }),
+
+            themeGridRangeIteme14 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 15.8,
+                end: 17.4,
+                color: color14
+            }),
+            themeGridRangeIteme15 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 17.4,
+                end:  19,
+                color: color15
+            }),
+            themeGridRangeIteme16 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 19,
+                end:  20.6,
+                color: color16
+            }),
+            themeGridRangeIteme17 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 20.6,
+                end:  22.2,
+                color: color17
+            }),
+            themeGridRangeIteme18 = new SuperMap.REST.ThemeGridRangeItem({
+                start:  22.2,
+                end:  23.8,
+                color: color18
+            }),
+            themeGridRangeIteme19 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 23.8,
+                end:  25.4,
+                color: color19
+            }),
+            themeGridRangeIteme20 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 25.4,
+                end:  27,
+                color: color20
+            }),
+
+            themeGridRange = new SuperMap.REST.ThemeGridRange({
+                reverseColor:false,
+                rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
+                //栅格分段专题图子项数组
+                items: [themeGridRangeIteme1,
+                    themeGridRangeIteme2,
+                    themeGridRangeIteme3,
+                    themeGridRangeIteme4,
+                    themeGridRangeIteme5,
+                    themeGridRangeIteme6,
+                    themeGridRangeIteme7,
+                    themeGridRangeIteme8,
+                    themeGridRangeIteme9,
+                    themeGridRangeIteme10,
+                    themeGridRangeIteme11,
+                    themeGridRangeIteme12,
+                    themeGridRangeIteme13,
+                    themeGridRangeIteme14,
+                    themeGridRangeIteme15,
+                    themeGridRangeIteme16,
+                    themeGridRangeIteme17,
+                    themeGridRangeIteme18,
+                    themeGridRangeIteme19,
+                    themeGridRangeIteme20
+                ]
+            }),
+
+            themeParameters = new SuperMap.REST.ThemeParameters({
+                //制作专题图的数据集数组
+                datasetNames:[InterpolationAnalystEventArgs.result.dataset.split('@')[0]],
+                // 制作专题图的数据集所在的数据源数组
+                dataSourceNames: ["Interpolation"],
+                joinItems: null,
+                //专题图对象列表
+                themes: [themeGridRange],
+                types:['REGION']
+            });
+        var themeService = new SuperMap.REST.ThemeService(url, {eventListeners:{"processCompleted": themeCompleted, "processFailed": themeFailed}});
+        themeService.processAsync(themeParameters);
+    }
+    //服务端成功返回专题图结果时调用
+    function themeCompleted(themeEventArgs) {
+        if(themeEventArgs.result.resourceInfo.id) {
+            themeLayer = new SuperMap.Layer.TiledDynamicRESTLayer("插值分析结果图", url, {cacheEnabled:true,transparent: true,layersID: themeEventArgs.result.resourceInfo.id}, {"maxResolution":"auto"});
+            themeLayer.events.on({"layerInitialized":addThemelayer});
+
+        }
+    }
+    //添加专题图至map
+    function addThemelayer() {
+        map.addLayer(themeLayer);
+    }
+    //插值分析失败后调用
+    function processFailed(ServiceFailedEventArgs){
+        widgets.alert.showAlert(ServiceFailedEventArgs.error.errorMsg,false);
+    }
+    //服务端返回专题图结果失败时调用
+    function themeFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg,false);
+    }
+    //清除专题图图层
+    function removeInterpolation(){
+        widgets.alert.clearAlert();
+        if (map.layers.length >1) {
+            map.removeLayer(themeLayer, true);
+        }
+    }
+</script>
+
+</body>
+</html>

+ 222 - 0
public/supermap/examples/classic/analysis_mathExpression.html

@@ -0,0 +1,222 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_mathExpression"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_mathExpression"></h5></div>
+    <div class='panel-body content'>
+        <div class='panel'>
+            <div class='input-group'>
+                <span data-i18n="resources.text_expression"></span><span>[Jingjin.JingjinTerrain] + 600</span>
+            </div>
+        </div>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_mathExpression"
+               onclick="addResultLayer()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_clearLayer"
+               onclick="removeTheme()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var map, baseLayer, resultLayer,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url = host + "/iserver/services/map-jingjin/rest/maps/京津地区地图",
+        url2 = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })]
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("京津地区地图", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.events.on({"layerInitialized": addLayer});
+    }
+
+    function addLayer() {
+        map.addLayer(baseLayer);
+        map.setCenter(new SuperMap.LonLat(117.2, 40.11), 0);
+        map.allOverlays = true;
+    }
+
+    function addResultLayer() {
+        widgets.alert.clearAlert();
+        removeTheme();
+        //新建一个栅格代数运算服务
+        var mathExpressionAnalysisService = new SuperMap.REST.MathExpressionAnalysisService(url2, {
+            eventListeners: {
+                "processCompleted": mathExpressionAnalysisCompleted,
+                "processFailed": mathExpressionAnalysisFailed
+            }
+        });
+        //新建一个栅格代数运算参数对象
+        var mathExpressionAnalysisParameters = new SuperMap.REST.MathExpressionAnalysisParameters({
+            //指定数据集
+            dataset: "JingjinTerrain@Jingjin",
+            /*
+             //指定范围
+             extractRegion: new SuperMap.Geometry.Polygon([
+                 new SuperMap.Geometry.LinearRing([
+                new SuperMap.Geometry.Point(116, 39),
+                new SuperMap.Geometry.Point(117, 39),
+                new SuperMap.Geometry.Point(117, 40),
+                new SuperMap.Geometry.Point(116, 40)
+                ])
+             ]),
+             */
+            //要执行的栅格运算代数表达式
+            "expression": "[Jingjin.JingjinTerrain] + 600",
+            //存储结果数据集的数据源
+            "targetDatasource": "Jingjin",
+            //结果数据集名称
+            "resultGridName": "MathExpressionAnalysis_Result",
+            deleteExistResultDataset: true
+        });
+
+        mathExpressionAnalysisService.processAsync(mathExpressionAnalysisParameters);
+    }
+
+    //用栅格专题图展示分析结果
+    function mathExpressionAnalysisCompleted(mathExpressionAnalysis) {
+        var color1 = new SuperMap.REST.ServerColor(40, 140, 40),
+            color2 = new SuperMap.REST.ServerColor(170, 198, 40),
+            color3 = new SuperMap.REST.ServerColor(191, 191, 0),
+            color4 = new SuperMap.REST.ServerColor(191, 95, 0),
+            color5 = new SuperMap.REST.ServerColor(127, 0, 0),
+
+            themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 0,
+                end: 650,
+                color: color1
+            }),
+            themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 650,
+                end: 750,
+                color: color2
+            }),
+            themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 750,
+                end: 900,
+                color: color3
+            }),
+            themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 900,
+                end: 1350,
+                color: color4
+            }),
+            themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 1350,
+                end: 3600,
+                color: color5
+            }),
+
+            themeGridRange = new SuperMap.REST.ThemeGridRange({
+                reverseColor: false,
+                rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
+                //栅格分段专题图子项数组
+                items: [themeGridRangeIteme1,
+                    themeGridRangeIteme2,
+                    themeGridRangeIteme3,
+                    themeGridRangeIteme4,
+                    themeGridRangeIteme5
+                ]
+            }),
+            themeParameters = new SuperMap.REST.ThemeParameters({
+                //制作专题图的数据集(栅格代数运算的结果数据集)
+                datasetNames: [mathExpressionAnalysis.result.dataset.split('@')[0]],
+                dataSourceNames: ["Jingjin"],
+                joinItems: null,
+                //专题图对象列表
+                themes: [themeGridRange],
+                types: ['REGION']
+            });
+        var themeService = new SuperMap.REST.ThemeService(url, {
+            eventListeners: {
+                "processCompleted": themeCompleted,
+                "processFailed": themeFailed
+            }
+        });
+        themeService.processAsync(themeParameters);
+    }
+
+    function themeCompleted(themeEventArgs) {
+        if (themeEventArgs.result.resourceInfo.id) {
+            resultLayer = new SuperMap.Layer.TiledDynamicRESTLayer("栅格代数运算结果", url, {
+                cacheEnabled: false,
+                transparent: true,
+                layersID: themeEventArgs.result.resourceInfo.id
+            }, {"maxResolution": "auto"});
+            resultLayer.events.on({"layerInitialized": addThemelayer});
+        }
+    }
+
+    function addThemelayer() {
+        resultLayer.setOpacity(0.8);
+        map.addLayer(resultLayer);
+    }
+
+    function themeFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg, false);
+    }
+
+    function mathExpressionAnalysisFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg, false);
+    }
+
+    //移除专题图
+    function removeTheme() {
+        widgets.alert.clearAlert();
+        if (map.layers.length > 1) {
+            map.removeLayer(resultLayer, true);
+        }
+    }
+
+</script>
+
+</body>
+</html>

+ 126 - 0
public/supermap/examples/classic/analysis_overlayAnalystService.html

@@ -0,0 +1,126 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_overlayAnalyst"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_overlayAnalyst"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_overlayAnalyst" onclick="overlayAnalystProcess()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_removeResult" onclick="removeResult()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, local, baseLayer, resultLayer, Spatialanalyst_sample,
+        style = {
+            strokeColor: "#343434",
+            strokeWidth: 0.1,
+            pointerEvents: "visiblePainted",
+            fill: true,
+            fillColor: "#304DBE",
+            fillOpacity: 0.8
+        },
+        url = host + "/iserver/services/map-jingjin/rest/maps/京津地区人口分布图_专题图",
+        url2 = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })]
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("京津地区人口分布图_专题图", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.events.on({"layerInitialized": addLayer});
+        resultLayer = new SuperMap.Layer.Vector("叠加结果");
+    }
+
+    function addLayer() {
+        map.addLayers([baseLayer, resultLayer]);
+        map.setCenter(new SuperMap.LonLat(117, 40), 1);
+        map.allOverlays = true;
+    }
+
+    function overlayAnalystProcess() {
+        widgets.alert.clearAlert();
+        resultLayer.removeAllFeatures();
+        var overlayServiceByDatasets = new SuperMap.REST.OverlayAnalystService(url2),
+            dsOverlayAnalystParameters = new SuperMap.REST.DatasetOverlayAnalystParameters({
+                sourceDataset: "BaseMap_R@Jingjin",
+                operateDataset: "Neighbor_R@Jingjin",
+                tolerance: 0,
+                operation: SuperMap.REST.OverlayOperationType.UNION
+            });
+        overlayServiceByDatasets.events.on({
+            "processCompleted": overlayAnalystCompleted,
+            "processFailed": overlayAnalystFailed
+        });
+        overlayServiceByDatasets.processAsync(dsOverlayAnalystParameters);
+    }
+
+    function overlayAnalystCompleted(args) {
+        var feature, features = [];
+        for (var i = 0; i < args.result.recordset.features.length; i++) {
+            feature = args.result.recordset.features[i];
+            feature.style = style;
+            features.push(feature);
+        }
+        resultLayer.addFeatures(features);
+    }
+
+    function overlayAnalystFailed(args) {
+        widgets.alert.showAlert(args.error.errorMsg,false);
+    }
+
+    function removeResult() {
+       widgets.alert.clearAlert();
+        resultLayer.removeAllFeatures();
+    }
+</script>
+
+</body>
+</html>

+ 204 - 0
public/supermap/examples/classic/analysis_routeCalculateMeasure.html

@@ -0,0 +1,204 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_routeCalculateMeasure"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            width: 400px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_routeCalculateMeasure"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_queryRoute"
+               onclick="CreateRouteObj()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_queryPoint"
+               onclick="RouteCalculateMeasure()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear"
+               onclick="Remove()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layer, routeObj, vectorLayer, drawPoint, pointLayer, snap01, modifyFeature,
+        lineStyle = {
+            strokeColor: "red",
+            strokeWidth: 2,
+            pointRadius: 3,
+            pointerEvents: "visiblePainted",
+            fill: false
+        },
+        pointStyle = {
+            fillColor: '#669933',
+            fillOpacity: 0.8,
+            pointRadius: 5,
+            strokeColor: '#aaee77',
+            strokeWidth: 3
+        },
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        vectorLayer = new SuperMap.Layer.Vector("RouteLayer");
+        pointLayer = new SuperMap.Layer.Vector("pointLayer");
+
+        snap01 = new SuperMap.Snap([vectorLayer, pointLayer], 20, 20, {actived: true});  //设置actived为true的时候,捕捉已激活。
+
+
+        drawPoint = new SuperMap.Control.DrawFeature(pointLayer, SuperMap.Handler.Point);
+        drawPoint.events.on({"featureadded": drawPointCompleted});
+        drawPoint.snap = snap01;
+
+        layer.events.on({"layerInitialized": addLayer});
+
+        map = new SuperMap.Map("map", {
+            allOverlays: true, controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                }), drawPoint]
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+    }
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer, pointLayer]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 1);
+    }
+
+    //通过SQL查询路由对象
+    function CreateRouteObj() {
+        widgets.alert.clearAlert();
+        var queryParam, queryBySQLParams, queryBySQLService;
+        queryParam = new SuperMap.REST.FilterParameter({
+            name: "RouteDT_road@Changchun",
+            attributeFilter: "RouteID=1690"
+        });
+        queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({
+            queryParams: [queryParam]
+        });
+        queryBySQLService = new SuperMap.REST.QueryBySQLService(url1, {
+            eventListeners: {
+                "processCompleted": processCompleted,
+                "processFailed": processFailed
+            }
+        });
+        queryBySQLService.processAsync(queryBySQLParams);
+    }
+
+    //路由对象查询成功,初始化routeObj的值,同时将查询结果绘制在地图上
+    function processCompleted(queryEventArgs) {
+
+        routeObj = geo = queryEventArgs.result.recordsets[0].features[0].geometry;
+        var feature = new SuperMap.Feature.Vector();
+        feature.geometry = geo;
+        feature.style = lineStyle;
+        vectorLayer.addFeatures(feature);
+        widgets.alert.showAlert(resources.msg_querySuccess, true);
+    }
+
+    //路由对象查询失败,显示提示信息
+    function processFailed() {
+        widgets.alert.showAlert(resources.msg_queryFailure, false);
+    }
+
+    //激活画点控件,判断routeObj是否为空,如果为空则禁止下一步操作
+    function RouteCalculateMeasure() {
+        widgets.alert.clearAlert();
+        if (!routeObj) {
+            widgets.alert.showAlert(resources.msg_getRoute, false);
+            return;
+        }
+        drawPoint.activate();
+    }
+
+    //绘制点完成触发事件,先将点绘制在地图上,然后以点的geometry和查询结果
+    // routeObj为参数初始化"点定里程"的参数类。
+    function drawPointCompleted(drawGeometryArgs) {
+        var feature = new SuperMap.Feature.Vector();
+        var geometry = drawGeometryArgs.feature.geometry
+        feature.geometry = geometry;
+        feature.style = pointStyle;
+        pointLayer.addFeatures(feature);
+
+        //创建“点定里程”参数类。
+        var parameters = new SuperMap.REST.RouteCalculateMeasureParameters({
+            "sourceRoute": routeObj,
+            "tolerance": 10,
+            "point": geometry,
+            "isIgnoreGap": false
+        });
+
+        //创建“点定里程”服务类。
+        var routeCalculateMeasureService = new SuperMap.REST.RouteCalculateMeasureService(url2, {
+                eventListeners: {
+                    "processCompleted": routeCalculateMeasureCompleted,
+                    'processFailed': routeCalculateMeasureFailed
+                }
+            }
+        );
+        //执行相关操作
+        routeCalculateMeasureService.processAsync(parameters);
+    }
+
+    //“点定里程”查询完成,提示返回信息
+    function routeCalculateMeasureCompleted(e) {
+        widgets.alert.showAlert(resources.msg_MByQuery + e.result.measure, true);
+    }
+
+    //“点定里程”查询失败,提示服务端返回的信息
+    function routeCalculateMeasureFailed(e) {
+        widgets.alert.showAlert(e.error.errorMsg, false);
+    }
+
+    //移除图面要素,并使画点控件失效,同时将路由对象置空,去掉提示信息
+    function Remove() {
+        widgets.alert.clearAlert();
+        vectorLayer.removeAllFeatures();
+        pointLayer.removeAllFeatures();
+        drawPoint.deactivate();
+        routeObj = null;
+    }
+</script>
+
+</body>
+</html>

+ 205 - 0
public/supermap/examples/classic/analysis_routeLocatorLine.html

@@ -0,0 +1,205 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_routeLocatorLine"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            width: 360px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_routeLocatorLine"></h5></div>
+    <div class='panel-body content'>
+        <div class='panel'>
+            <div class='input-group'>
+                <span class='input-group-addon' data-i18n="resources.text_startRoute"></span>
+                <input type='number' class='form-control' id='startMeasure' value='10'/>
+            </div>
+        </div>
+        <div class='panel'>
+            <div class='input-group'>
+                <span class='input-group-addon' data-i18n="resources.text_endRoute"></span>
+                <input type='number' class='form-control' id='endMeasure' value='240'/>
+            </div>
+        </div>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_queryRoute"
+               style="margin-bottom: 10px"
+               onclick="CreateRouteObj()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_locationLine"
+               style="margin-bottom: 10px" onclick="RouteLocator()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear"
+               style="margin-bottom: 10px" onclick="Remove()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layer, routeObj, vectorLayer,
+        lineStyle = {
+            strokeColor: "red",
+            strokeWidth: 5,
+            pointRadius: 3
+        },
+        lineStyle2 = {
+            strokeColor: "#669933",
+            strokeWidth: 3,
+            pointRadius: 3
+        },
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
+
+    var feature;
+
+    init();
+
+    function init() {
+        //初始化图层
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        vectorLayer = new SuperMap.Layer.Vector("RouteLayer");
+
+        //图层初始化完毕调用添加图层函数
+        layer.events.on({"layerInitialized": addLayer});
+        map = new SuperMap.Map("map", {
+            allOverlays: true, controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })]
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+    }
+
+    //添加必要图层
+    function addLayer() {
+        map.addLayers([layer, vectorLayer]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 1);
+    }
+
+    //通过SQL查询路由对象
+    function CreateRouteObj() {
+        widgets.alert.clearAlert();
+        var queryParam, queryBySQLParams, queryBySQLService;
+        queryParam = new SuperMap.REST.FilterParameter({
+            name: "RouteDT_road@Changchun",
+            attributeFilter: "RouteID=1690"
+        });
+        queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({
+            queryParams: [queryParam]
+        });
+        queryBySQLService = new SuperMap.REST.QueryBySQLService(url1, {
+            eventListeners: {
+                "processCompleted": processCompleted,
+                "processFailed": processFailed
+            }
+        });
+        queryBySQLService.processAsync(queryBySQLParams);
+    }
+
+    //路由对象查询成功,初始化routeObj的值,同时将查询结果绘制在地图上
+    function processCompleted(queryEventArgs) {
+        routeObj = geo = queryEventArgs.result.recordsets[0].features[0].geometry;
+        var feature = new SuperMap.Feature();
+        feature.geometry = geo;
+        feature.style = lineStyle;
+        vectorLayer.addFeatures(feature);
+        widgets.alert.showAlert(resources.msg_queryRouteSuccess, true);
+    }
+
+    //路由对象查询失败,显示提示信息
+    function processFailed() {
+        widgets.alert.showAlert(resources.msg_queryRouteFailure, false);
+    }
+
+    //"路由定线"操作,其中将routeObj和里程值作为参数传递到参数对象中
+    function RouteLocator() {
+        widgets.alert.clearAlert();
+        if (feature != null) {
+            vectorLayer.removeFeatures(feature);
+            feature = null;
+        }
+
+        if (!routeObj) {
+            widgets.alert.showAlert(resources.msg_getRoute, false);
+            return;
+        }
+        var routeLocatorParameters_point = new SuperMap.REST.RouteLocatorParameters({
+            "sourceRoute": routeObj,
+            "type": "LINE",
+            "startMeasure": parseFloat(document.getElementById('startMeasure').value),
+            "endMeasure": parseFloat(document.getElementById('endMeasure').value),
+            "isIgnoreGap": true
+        });
+        var routeLocatorService = new SuperMap.REST.RouteLocatorService(url2,
+            {
+                eventListeners: {
+                    "processCompleted": routeLocatorCompleted,
+                    'processFailed': routeLocatorFailed
+                }
+            }
+        )
+        routeLocatorService.processAsync(routeLocatorParameters_point);
+    }
+
+    //"里程定线"操作成功触发该函数,并显示提示信息
+    function routeLocatorCompleted(e) {
+        feature = new SuperMap.Feature.Vector();
+        var geometry = e.result.resultGeometry;
+        feature.geometry = geometry;
+        feature.style = lineStyle2;
+        vectorLayer.addFeatures(feature);
+        widgets.alert.showAlert(resources.msg_locLineSuccess, true);
+    }
+
+    //"里程定线"操作失败触发该函数,并显示提示信息
+    function routeLocatorFailed(e) {
+        widgets.alert.showAlert(resources.msg_locLineFailed, false);
+    }
+
+    //移除要素,并重置里程值
+    function Remove() {
+        widgets.alert.clearAlert();
+        vectorLayer.removeAllFeatures();
+        document.getElementById("startMeasure").value = "10";
+        document.getElementById("endMeasure").value = "240";
+        routeObj = null;
+    }
+
+</script>
+
+</body>
+</html>

+ 204 - 0
public/supermap/examples/classic/analysis_routeLocatorPoint.html

@@ -0,0 +1,204 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_routeLocatorPoint"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            width:400px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_routeLocatorPoint"></h5></div>
+    <div class='panel-body content'>
+        <div class='panel'>
+            <div class='input-group'>
+                <span class='input-group-addon' data-i18n="resources.text_routPoint"></span>
+                <input type='number' class='form-control' id='locateMeasure' value='10'/>
+            </div>
+        </div>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_queryRoute"
+               style="  margin-bottom: 10px;"
+               onclick="CreateRouteObj()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_locationPoint"
+               style="  margin-bottom: 10px;"
+               onclick="RouteLocator()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear"
+               style="  margin-bottom: 10px;" onclick="Remove()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layer, routeObj, pointLayer, vectorLayer, feature,
+        lineStyle = {
+            strokeColor: "red",
+            strokeWidth: 2,
+            pointRadius: 3,
+            pointerEvents: "visiblePainted",
+            fill: false
+        },
+        pointStyle = {
+            fillColor: '#669933',
+            fillOpacity: 0.8,
+            pointRadius: 5,
+            strokeColor: '#aaee77',
+            strokeWidth: 3
+        },
+        url = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        //初始化图层
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("changchun", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        vectorLayer = new SuperMap.Layer.Vector("RouteLayer");
+        pointLayer = new SuperMap.Layer.Vector("pointLayer");
+
+        //图层初始化完毕调用添加图层函数
+        layer.events.on({"layerInitialized": addLayer});
+        map = new SuperMap.Map("map", {
+            allOverlays: true, controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })]
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+    }
+
+    //添加必要图层
+    function addLayer() {
+        map.addLayers([layer, vectorLayer, pointLayer]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 1);
+    }
+
+    //通过SQL查询路由对象
+    function CreateRouteObj() {
+        widgets.alert.clearAlert();
+        var queryParam, queryBySQLParams, queryBySQLService;
+        queryParam = new SuperMap.REST.FilterParameter({
+            name: "RouteDT_road@Changchun",
+            attributeFilter: "RouteID=1690"
+        });
+        queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({
+            queryParams: [queryParam]
+        });
+        queryBySQLService = new SuperMap.REST.QueryBySQLService(url, {
+            eventListeners: {
+                "processCompleted": processCompleted,
+                "processFailed": processFailed
+            }
+        });
+        queryBySQLService.processAsync(queryBySQLParams);
+    }
+
+    //路由对象查询成功,初始化routeObj的值,同时将查询结果绘制在地图上
+    function processCompleted(queryEventArgs) {
+        routeObj = geo = queryEventArgs.result.recordsets[0].features[0].geometry;
+        var feature = new SuperMap.Feature();
+        feature.geometry = geo;
+        feature.style = lineStyle;
+        vectorLayer.addFeatures(feature);
+        widgets.alert.showAlert(resources.msg_queryRouteSuccess, true);
+    }
+
+    //路由对象查询失败,显示提示信息
+    function processFailed() {
+        widgets.alert.showAlert(resources.msg_queryRouteFailure, false);
+    }
+
+    //"路由定点"操作,其中将routeObj和里程值作为参数传递到参数对象中
+    function RouteLocator() {
+        widgets.alert.clearAlert();
+        if (feature != null) {
+            pointLayer.removeFeatures(feature);
+            feature = null;
+        }
+
+        if (!routeObj) {
+            widgets.alert.showAlert(resources.msg_getRoute, false);
+            return;
+        }
+        var routeLocatorParameters_point = new SuperMap.REST.RouteLocatorParameters({
+            "sourceRoute": routeObj,
+            "type": "POINT",
+            "measure": parseFloat(document.getElementById('locateMeasure').value),
+            "offset": 0,
+            "isIgnoreGap": true
+        });
+        var routeLocatorService = new SuperMap.REST.RouteLocatorService(url2,
+            {
+                eventListeners: {
+                    "processCompleted": routeLocatorCompleted,
+                    'processFailed': routeLocatorFailed
+                }
+            }
+        )
+        routeLocatorService.processAsync(routeLocatorParameters_point);
+    }
+
+    //"里程定点"操作成功触发该函数,并显示提示信息
+    function routeLocatorCompleted(e) {
+        feature = new SuperMap.Feature.Vector();
+        var geometry = e.result.resultGeometry;
+        feature.geometry = geometry;
+        feature.style = pointStyle;
+        pointLayer.addFeatures(feature);
+        widgets.alert.showAlert(resources.msg_locPointSuccess, true);
+    }
+
+    //"里程定点"操作失败触发该函数,并显示提示信息
+    function routeLocatorFailed(e) {
+        widgets.alert.showAlert(resources.msg_locPointFailed, false);
+    }
+
+    //移除要素,并重置里程值
+    function Remove() {
+        widgets.alert.clearAlert();
+        vectorLayer.removeAllFeatures();
+        pointLayer.removeAllFeatures();
+        //$('#locateMeasure').val('10');
+        document.getElementById("locateMeasure").value = "10";
+        routeObj = null;
+    }
+
+</script>
+
+</body>
+</html>

+ 168 - 0
public/supermap/examples/classic/analysis_serviceAreas.html

@@ -0,0 +1,168 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_serviceAreas"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_serviceAreas"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_serviceCenter"
+               onclick="selectCenters()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_submit"
+               onclick="findServiceAreas()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear"
+               onclick="clearElements()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var local, map, layer, vectorLayer, markerLayer, drawPoint,
+        centersArray = [], weightsArray = [], n = 0,
+        style = {
+            strokeColor: "#304DBE",
+            strokeWidth: 1,
+            pointerEvents: "visiblePainted",
+            fillColor: "#304DBE",
+            fillOpacity: 0.4
+        },
+        host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun";
+
+    init();
+
+    function init() {
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        drawPoint = new SuperMap.Control.DrawFeature(vectorLayer, SuperMap.Handler.Point);
+        drawPoint.events.on({"featureadded": drawCompleted});
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                }),
+                drawPoint], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        markerLayer = new SuperMap.Layer.Markers("Markers");
+    }
+
+    function addLayer() {
+
+        map.addLayers([layer, vectorLayer, markerLayer]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 1);
+    }
+
+    function selectCenters() {
+        clearElements();
+        drawPoint.activate();
+    }
+
+    function drawCompleted(drawGeometryArgs) {
+        var point = drawGeometryArgs.feature.geometry,
+            size = new SuperMap.Size(44, 33),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
+            icon = new SuperMap.Icon("./images/marker.png", size, offset);
+        markerLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(point.x, point.y), icon));
+        centersArray.push(point);
+        n++;
+        weightsArray.push(400 + n * 100);
+    }
+
+    function findServiceAreas() {
+        vectorLayer.removeAllFeatures();
+        drawPoint.deactivate();
+        var findServiceAreasService, parameter, analystParameter, resultSetting;
+        resultSetting = new SuperMap.REST.TransportationAnalystResultSetting({
+            returnEdgeFeatures: true,
+            returnEdgeGeometry: true,
+            returnEdgeIDs: true,
+            returnNodeFeatures: true,
+            returnNodeGeometry: true,
+            returnNodeIDs: true,
+            returnPathGuides: true,
+            returnRoutes: true
+        });
+        analystParameter = new SuperMap.REST.TransportationAnalystParameter({
+            resultSetting: resultSetting,
+            weightFieldName: "length"
+        });
+        parameter = new SuperMap.REST.FindServiceAreasParameters({
+            centers: centersArray,
+            isAnalyzeById: false,
+            parameter: analystParameter,
+            weights: weightsArray
+        });
+        findServiceAreasService = new SuperMap.REST.FindServiceAreasService(url2, {
+            eventListeners: {"processCompleted": processCompleted}
+        });
+        findServiceAreasService.processAsync(parameter);
+    }
+
+    function processCompleted(findServiceAreasEventArgs) {
+        vectorLayer.removeAllFeatures();
+        var result = findServiceAreasEventArgs.result,
+            features = [];
+        if (result.serviceAreaList) {
+            for (var i = 0, serviceAreaList = result.serviceAreaList, len = serviceAreaList.length; i < len; i++) {
+                var feature = new SuperMap.Feature.Vector();
+                feature.geometry = serviceAreaList[i].serviceRegion;
+                feature.style = style;
+                features.push(feature);
+            }
+        }
+        vectorLayer.addFeatures(features);
+    }
+
+    function clearElements() {
+        n = 0;
+        centersArray = [];
+        weightsArray = [];
+        markerLayer.clearMarkers();
+        vectorLayer.removeAllFeatures();
+    }
+</script>
+
+</body>
+</html>

+ 136 - 0
public/supermap/examples/classic/analysis_surfaceAnalyst.html

@@ -0,0 +1,136 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_surfaceAnalyst"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_surfaceAnalyst"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_contourLine"
+               onclick="surfaceAnalystProcess()"/>&nbsp; &nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_remove" onclick="removeData()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var map, local, baseLayer, resultLayer, Spatialanalyst_sample,
+        points = new SuperMap.Geometry.LinearRing([
+            new SuperMap.Geometry.Point(0, 4010338),
+            new SuperMap.Geometry.Point(1063524, 4010338),
+            new SuperMap.Geometry.Point(1063524, 3150322),
+            new SuperMap.Geometry.Point(0, 3150322)
+        ]),
+        region = new SuperMap.Geometry.Polygon([points]),
+        host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url = host + "/iserver/services/map-temperature/rest/maps/全国温度变化图",
+        url2 = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        map.allOverlays = true;
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("全国温度变化图", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.events.on({"layerInitialized": addLayer});
+        resultLayer = new SuperMap.Layer.Vector("等值线");
+    }
+
+    function addLayer() {
+        map.addLayers([baseLayer, resultLayer]);
+        map.setCenter(new SuperMap.LonLat(531762, 3580330), 2);
+    }
+
+    function surfaceAnalystProcess() {
+        widgets.alert.clearAlert();
+        resultLayer.removeAllFeatures();
+        var surfaceAnalystService = new SuperMap.REST.SurfaceAnalystService(url2),
+            surfaceAnalystParameters = new SuperMap.REST.SurfaceAnalystParametersSetting({
+                datumValue: 0,
+                interval: 2,
+                resampleTolerance: 0,
+                smoothMethod: SuperMap.REST.SmoothMethod.BSPLINE,
+                smoothness: 3,
+                clipRegion: region
+            }),
+            params = new SuperMap.REST.DatasetSurfaceAnalystParameters({
+                extractParameter: surfaceAnalystParameters,
+                dataset: "SamplesP@Interpolation",
+                resolution: 9000,
+                zValueFieldName: "AVG_TMP"
+            });
+        surfaceAnalystService.events.on({
+            "processCompleted": surfaceAnalystCompleted,
+            "processFailed": surfaceAnalystFailed
+        });
+        surfaceAnalystService.processAsync(params);
+    }
+
+    function surfaceAnalystCompleted(args) {
+        var features = args.result.recordset.features;
+        for (var len = features.length, i = 0; i < len; i++) {
+            style = {
+                strokeColor: "#304DBE",
+                fillOpacity: 0
+            }
+            features[i].style = style;
+        }
+        resultLayer.addFeatures(args.result.recordset.features);
+    }
+
+    function surfaceAnalystFailed(args) {
+        widgets.alert.showAlert(args.error.errorMsg, false);
+    }
+
+    function removeData() {
+        widgets.alert.clearAlert();
+        resultLayer.removeAllFeatures();
+    }
+</script>
+
+</body>
+</html>

+ 200 - 0
public/supermap/examples/classic/analysis_terrainCurvatureCalculation.html

@@ -0,0 +1,200 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_terrainCurvatureCalculation"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_terrainCurvatureCalculation"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_terrainCurvatureCalculation"
+               onclick="addResultLayer()"/>&nbsp;
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_clearLayer"
+               onclick="removeTheme()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var map, baseLayer, layersID, resultLayer,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url = host + "/iserver/services/map-jingjin/rest/maps/京津地区地图",
+        url2 = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })]
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("京津地区地图", url, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.events.on({"layerInitialized": addLayer});
+    }
+
+    function addLayer() {
+        map.addLayer(baseLayer);
+        map.setCenter(new SuperMap.LonLat(117.2, 40.11), 0);
+        map.allOverlays = true;
+    }
+
+    function addResultLayer() {
+        widgets.alert.clearAlert();
+        removeTheme();
+
+        //创建地形曲率计算服务实例
+        var terrainCurvatureCalculationService = new SuperMap.REST.TerrainCurvatureCalculationService(url2, {
+            eventListeners: {
+                "processCompleted": terrainCurvatureCalculationCompleted,
+                "processFailed": terrainCurvatureCalculationFailed
+            }
+        });
+
+        //创建地形曲率计算参数实例
+        var terrainCurvatureCalculationParameters = new SuperMap.REST.TerrainCurvatureCalculationParameters({
+            dataset: "JingjinTerrain@Jingjin",
+            zFactor: 1.0,
+            averageCurvatureName: "CurvatureA",
+            deleteExistResultDataset: true
+        });
+
+        //向 iServer 发起地形曲率计算请求
+        terrainCurvatureCalculationService.processAsync(terrainCurvatureCalculationParameters);
+    }
+
+    //用栅格专题图展示分析结果
+    function terrainCurvatureCalculationCompleted(terrainCurvatureCalculation) {
+        var color1 = new SuperMap.REST.ServerColor(0, 0, 255),
+            color2 = new SuperMap.REST.ServerColor(0, 0, 125),
+            color3 = new SuperMap.REST.ServerColor(0, 125, 125),
+            color4 = new SuperMap.REST.ServerColor(0, 125, 0),
+            color5 = new SuperMap.REST.ServerColor(0, 255, 0),
+
+            themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -9000000,
+                end: -1000,
+                color: color1
+            }),
+            themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -1000,
+                end: -1,
+                color: color2
+            }),
+            themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
+                start: -1,
+                end: 1,
+                color: color3
+            }),
+            themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 1,
+                end: 1000,
+                color: color4
+            }),
+            themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
+                start: 1000,
+                end: 20000000,
+                color: color5
+            }),
+
+            themeGridRange = new SuperMap.REST.ThemeGridRange({
+                reverseColor: false,
+                rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
+                //栅格分段专题图子项数组
+                items: [themeGridRangeIteme1,
+                    themeGridRangeIteme2,
+                    themeGridRangeIteme3,
+                    themeGridRangeIteme4,
+                    themeGridRangeIteme5
+                ]
+            }),
+            themeParameters = new SuperMap.REST.ThemeParameters({
+                //制作专题图的数据集(地形曲率计算的结果数据集)
+                datasetNames: [terrainCurvatureCalculation.result.averageCurvatureResult.dataset.split('@')[0]],
+                dataSourceNames: ["Jingjin"],
+                joinItems: null,
+                themes: [themeGridRange],
+                types: ['REGION']
+            });
+        var themeService = new SuperMap.REST.ThemeService(url, {
+            eventListeners: {
+                "processCompleted": themeCompleted,
+                "processFailed": themeFailed
+            }
+        });
+        themeService.processAsync(themeParameters);
+    }
+
+    function themeCompleted(themeEventArgs) {
+        if (themeEventArgs.result.resourceInfo.id) {
+            resultLayer = new SuperMap.Layer.TiledDynamicRESTLayer("地形曲率计算结果", url, {
+                cacheEnabled: false,
+                transparent: true,
+                layersID: themeEventArgs.result.resourceInfo.id
+            }, {"maxResolution": "auto"});
+            resultLayer.events.on({"layerInitialized": addThemelayer});
+        }
+    }
+
+    function addThemelayer() {
+        //将专题图添加到地图
+        map.addLayer(resultLayer);
+    }
+
+    function themeFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg, false);
+    }
+
+    function terrainCurvatureCalculationFailed(serviceFailedEventArgs) {
+        widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg, false);
+    }
+
+    //移除专题图
+    function removeTheme() {
+        widgets.alert.clearAlert();
+        if (map.layers.length > 1) {
+            map.removeLayer(resultLayer, true);
+        }
+    }
+</script>
+</body>
+</html>

+ 153 - 0
public/supermap/examples/classic/analysis_thiessenAnalyst.html

@@ -0,0 +1,153 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_thiessenAnalyst"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_thiessenAnalyst"></h5></div>
+    <div class='panel-body content'>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_datasetThiessen"
+               onclick="bufferAnalystProcess()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_geoThiessen"
+               onclick="geometryAnalystProcess()"/>
+        <input type="button" class="btn btn-default" data-i18n="[value]resources.text_removeResult"
+               onclick="removeResult()"/>
+    </div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script>
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, local, baseLayer, resultLayer, spatialAnalystURL,
+        url1 = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        url2 = host + "/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })], units: "m"
+        });
+        map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
+        map.allOverlays = true;
+        baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("Changchun", url1, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        baseLayer.events.on({"layerInitialized": addLayer});
+        resultLayer = new SuperMap.Layer.Vector("分析结果");
+
+    }
+
+    function addLayer() {
+        map.addLayers([baseLayer, resultLayer]);
+        map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 0);
+    }
+
+    //数据集泰森多边形
+    function bufferAnalystProcess() {
+        widgets.alert.clearAlert();
+        resultLayer.removeAllFeatures();
+        var myThiessenAnalystService = new SuperMap.REST.ThiessenAnalystService(url2),
+            dThiessenAnalystParameters = new SuperMap.REST.DatasetThiessenAnalystParameters({
+                dataset: "Factory@Changchun"
+            });
+        myThiessenAnalystService.events.on({
+            "processCompleted": thiessenAnalystCompleted,
+            "processFailed": thiessenAnalystFailed
+        });
+        myThiessenAnalystService.processAsync(dThiessenAnalystParameters);
+    }
+
+    //几何泰森多边形
+    function geometryAnalystProcess() {
+        widgets.alert.clearAlert();
+        resultLayer.removeAllFeatures();
+        //新建几何对象数组
+        var points = [
+            new SuperMap.Geometry.Point(5238.998556, -1724.229865),
+            new SuperMap.Geometry.Point(4996.270055, -2118.538477),
+            new SuperMap.Geometry.Point(5450.34263, -2070.794081),
+            new SuperMap.Geometry.Point(5317.70775, -2521.162355),
+            new SuperMap.Geometry.Point(5741.149405, -1970.130198),
+            new SuperMap.Geometry.Point(4716.133098, -1575.858795),
+            new SuperMap.Geometry.Point(5447.671615, -2255.928819),
+            new SuperMap.Geometry.Point(4783.423507 - 1135.598744),
+            new SuperMap.Geometry.Point(5472.712382, -2189.15344),
+            new SuperMap.Geometry.Point(5752.716961, -2425.40363)];
+
+        var myThiessenAnalystService = new SuperMap.REST.ThiessenAnalystService(url2); //初始化泰森多边形分析服务类
+        var gThiessenAnalystParameters = new SuperMap.REST.GeometryThiessenAnalystParameters({points: points});   //初始化泰森多边形分析参数基类
+        myThiessenAnalystService.events.on({
+            "processCompleted": thiessenAnalystCompleted,
+            "processFailed": thiessenAnalystFailed
+        });
+        //向iserver发送请求
+        myThiessenAnalystService.processAsync(gThiessenAnalystParameters);
+
+
+    }
+
+    //请求成功
+    function thiessenAnalystCompleted(serviceEventArgs) {
+        resultLayer.removeAllFeatures();
+        var feature, polygonFeature, features = [];
+        for (var i = 0; i < serviceEventArgs.result.regions.length; i++) {
+            feature = serviceEventArgs.result.regions[i];
+            polygonFeature = new SuperMap.Feature.Vector(feature);
+            features.push(polygonFeature);
+        }
+        resultLayer.addFeatures(features);
+    }
+
+    //请求失败
+    function thiessenAnalystFailed(serviceEventArgs) {
+        widgets.alert.showAlert(serviceEventArgs.error.errorMsg, false);
+    }
+
+    function removeResult() {
+        widgets.alert.clearAlert();
+        resultLayer.removeAllFeatures();
+    }
+</script>
+
+</body>
+</html>

+ 878 - 0
public/supermap/examples/classic/analysis_trafficTransfer.html

@@ -0,0 +1,878 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_trafficTransfer"></title>
+    <style type="text/css">
+        body {
+            margin: 0;
+            overflow: hidden;
+            background: #fff;
+            width: 100%;
+            height: 100%
+        }
+
+        #map {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+        }
+
+        #toolbar {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+            width: 380px;
+            text-align: center;
+            z-index: 100;
+            border-radius: 4px;
+        }
+    </style>
+</head>
+<body>
+<div id="toolbar" class="panel panel-primary toolbar">
+    <div class='panel-heading'><h5 class='panel-title text-center' data-i18n="resources.text_trafficTransfer">
+    </h5></div>
+    <div class='panel'>
+        <div class='input-group'>
+            <div id='result' style="width: 360px" class='container'></div>
+        </div>
+    </div>
+    <div id="func" style="margin: 10px 0 10px 0;"></div>
+</div>
+<div id="map"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+
+<script>
+    var map, layer, start, end, vectorLayer, markerLayer, startLayer, endLayer, tempRedLayer,
+        globeStartName, globeEndName, popwin,
+        noStart = false, noEnd = false, isStartKey = false, isEndKey = false,
+        styleLine = {
+            strokeColor: "blue",
+            strokeWidth: 3,
+            strokeLinecap: "round",
+            strokeDashstyle: "solid"
+        },
+        styleLineRed = {
+            strokeColor: "red",
+            strokeWidth: 4,
+            strokeLinecap: "round",
+            strokeDashstyle: "solid"
+        };
+
+    var size = new SuperMap.Size(21, 21);
+    var offset = new SuperMap.Pixel(-(size.w / 2), -size.h);
+    var iconstart = new SuperMap.Icon("../img/start_trans.png", size, offset);
+    var iconend = new SuperMap.Icon("../img/end_trans.png", size, offset);
+
+    //起点搜索文本提示信息框
+    function addStartSugText() {
+        var inputDiv = $("<div class='start_end_input'></div>")
+        $("<span>" + resources.text_startPoint + ":" + "</span>").appendTo(inputDiv);
+        var input = $("<input type='search' width='60px' id='startInput' value='省汽修' text='26,3111.42533851,-5527.73795456'/>");
+        var p = new SuperMap.Geometry.Point(3111.42533851, -5527.73795456);
+        startLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(p.x, p.y), iconstart));
+        input.keyup(findStartStops);
+        input.keydown(updateStartInputByResult);
+        input.appendTo(inputDiv);
+        inputDiv.appendTo($("#func"));
+
+        var dataList = $("<div id='startSugPopup' class='sugpopup'></div>");
+        $("<ul id='startSugList' class='dropList'></ul>").appendTo(dataList);
+        dataList.appendTo(inputDiv);
+
+        function findStartStops(event) {
+            clear();
+            var code = event.keyCode;
+            if (isStartKey) return;
+            if (code === 37 || code === 38 || code === 39 || code === 40 || code === 13) return;
+            markerLayer.clearMarkers();
+            startLayer.clearMarkers();
+            vectorLayer.removeAllFeatures();
+            $("#startInput").attr("text", "");
+            var txt = $("#endInput").attr("text");
+            if (txt) {
+                var end = txt.split(",");
+                endLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(end[1], end[2]), iconend));
+            }
+
+            var list = $("#startSugList");
+            list.empty();
+            var popup = $("#startSugPopup");
+            var startName = event.target.value;
+            if (!startName) {
+                popup.css("display", "none");
+                return;
+            }
+
+            var params = new SuperMap.REST.StopQueryParameters({
+                keyWord: startName,
+                returnPosition: true
+            });
+            var iserver = new SuperMap.REST.StopQueryService(traffic_transfer, {
+                eventListeners: {
+                    processCompleted: stopQuerySucceed,
+                    processFailed: stopQueryFailed
+                }
+            });
+            iserver.processAsync(params);
+
+            //返回根据模糊的地名搜索得到的跟地名有关的所有公交站点的结果
+            function stopQuerySucceed(stopQueryEvent) {
+                popup.addClass("show").css("display", "block");
+                if (!stopQueryEvent.result.transferStopInfos.length) {
+                    $("<li>" + resources.text_notFindSPoint + "</li>").appendTo(list);
+                    noStart = true;
+                } else {
+                    noStart = false;
+                    for (var i = 0, len = stopQueryEvent.result.transferStopInfos.length; i < len; i++) {
+                        var station = stopQueryEvent.result.transferStopInfos[i];
+                        var value = station.stopID + "," + station.position.x + "," + station.position.y;
+                        $("<li id='" + value + "'>" + station.name + "</li>").appendTo(list);
+                        list.find("li").click(function () {
+                            var input = $("#startInput");
+                            input.val($(this).text());
+                            input.attr("text", $(this).attr("id"));
+                            $("#startSugList").empty();
+                            popup.removeClass("show");
+                            var arr = $(this).attr("id").split(",");
+                            startLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(arr[1], arr[2]), iconstart));
+                            map.setCenter(new SuperMap.LonLat(arr[1], arr[2]), 0);
+                        }).hover(
+                            function () {
+                                $("#startSugList li.dropListMouseOver").removeClass("dropListMouseOver");
+                                $(this).addClass("dropListMouseOver");
+                            },
+                            function () {
+                                $(this).removeClass("dropListMouseOver");
+                            }
+                        );
+                    }
+                }
+            }
+
+            function stopQueryFailed(result) {
+                widgets.alert.showAlert(result, false);
+            }
+        }
+
+        function updateStartInputByResult(event) {
+            clear();
+            var code = event.keyCode, current, input;
+            if (code === 38 || code === 40) {
+                isStartKey = true;
+            } else if (code === 13) {
+            } else {
+                isStartKey = false;
+                return;
+            }
+            current = $("#startSugList li.dropListMouseOver");
+            input = $("#startInput");
+            if (code === 13) {
+                if (current.length !== 0) {
+                    input.val(current.text());
+                    input.attr("text", current.attr("id"));
+                    $("#startSugList").empty();
+                    $("#startSugPopup").removeClass("show");
+                    var arr = current.attr("id").split(",");
+                    startLayer.clearMarkers();
+                    startLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(arr[1], arr[2]), iconstart));
+                    map.setCenter(new SuperMap.LonLat(arr[1], arr[2]), 0);
+                }
+                return;
+            }
+            if (code === 38) {
+                if (current.length !== 0) {
+                    current.removeClass("dropListMouseOver");
+                    current = current.prev();
+                    if (current.length === 0) {
+                        current = $("#startSugPopup li:last-child");
+                    }
+                } else {
+                    current = $("#startSugPopup li:last-child");
+                }
+                current.addClass("dropListMouseOver");
+                input.val(current.text());
+                input.attr("text", current.attr("id"));
+            } else if (code === 40) {
+                if (current.length !== 0) {
+                    current.removeClass("dropListMouseOver");
+                    current = current.next();
+                    if (current.length === 0) {
+                        current = $("#startSugPopup li:first-child");
+                    }
+                } else {
+                    current = $("#startSugPopup li:first-child");
+                }
+                current.addClass("dropListMouseOver");
+                input.val(current.text());
+                input.attr("text", current.attr("id"));
+            }
+        }
+    }
+
+    //终点搜索文本提示信息框
+    function addEndSugText() {
+        var inputDiv = $("<div class='start_end_input'></div>")
+        $("<span>" + resources.text_endPoint + ":" + "</span>").appendTo(inputDiv);
+        var input = $("<input type='search' width='60px' id='endInput' value='中安大厦' text='180,6055.3431955,-4270.0725196'/>");
+        var p = new SuperMap.Geometry.Point(6055.3431955, -4270.0725196);
+        startLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(p.x, p.y), iconend));
+        input.keyup(findEndStops);
+        input.keydown(updateEndInputByResult);
+        input.appendTo(inputDiv);
+        inputDiv.appendTo($("#func"));
+
+        var dataList = $("<div id='endSugPopup' class='sugpopup'></div>");
+        $("<ul id='endSugList' class='dropList'></ul>").appendTo(dataList);
+        dataList.appendTo(inputDiv);
+
+        function findEndStops(event) {
+            clear();
+            var code = event.keyCode;
+            if (isEndKey) return;
+            if (code === 37 || code === 38 || code === 39 || code === 40 || code === 13) return;
+            markerLayer.clearMarkers();
+            vectorLayer.removeAllFeatures();
+            endLayer.clearMarkers();
+            $("#endInput").attr("text", "");
+            var txt = $("#startInput").attr("text");
+            if (txt) {
+                var start = txt.split(",");
+                startLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(start[1], start[2]), iconstart));
+            }
+
+            var list = $("#endSugList");
+            list.empty();
+            var popup = $("#endSugPopup");
+            var endName = event.target.value;
+            if (!endName) {
+                popup.css("display", "none");
+                return;
+            }
+            var params = new SuperMap.REST.StopQueryParameters({
+                keyWord: endName,
+                returnPosition: true
+            });
+            var iserver = new SuperMap.REST.StopQueryService(traffic_transfer, {
+                eventListeners: {
+                    processCompleted: stopQuerySucceed,
+                    processFailed: stopQueryFailed
+                }
+            });
+            iserver.processAsync(params);
+
+            function stopQuerySucceed(stopQueryEvent) {
+                popup.addClass("show").css("display", "block");
+                if (!stopQueryEvent.result.transferStopInfos.length) {
+                    $("<li>" + resources.text_notFindEPoint + "</li>").appendTo(list);
+                    noEnd = true;
+                } else {
+                    noEnd = false;
+                    for (var i = 0, len = stopQueryEvent.result.transferStopInfos.length; i < len; i++) {
+                        var station = stopQueryEvent.result.transferStopInfos[i];
+                        var value = station.stopID + "," + station.position.x + "," + station.position.y;
+                        $("<li id='" + value + "'>" + station.name + "</li>").appendTo(list);
+                        list.find("li").click(function () {
+                            var input = $("#endInput");
+                            input.val($(this).text());
+                            input.attr("text", $(this).attr("id"));
+                            $("#endSugList").empty();
+                            popup.removeClass("show");
+                            var arr = $(this).attr("id").split(",");
+                            endLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(arr[1], arr[2]), iconend));
+                            map.setCenter(new SuperMap.LonLat(arr[1], arr[2]), 0);
+                        }).hover(
+                            function () {
+                                $("#endSugList li.dropListMouseOver").removeClass("dropListMouseOver");
+                                $(this).addClass("dropListMouseOver");
+                            },
+                            function () {
+                                $(this).removeClass("dropListMouseOver");
+                            }
+                        );
+                    }
+                }
+            }
+
+            function stopQueryFailed(result) {
+                widgets.alert.showAlert(result, false);
+            }
+        }
+
+        function updateEndInputByResult(event) {
+            clear();
+            var code = event.keyCode, current, input;
+            if (code === 38 || code === 40) {
+                isStartKey = true;
+            } else if (code === 13) {
+            } else {
+                isStartKey = false;
+                return;
+            }
+            current = $("#endSugList li.dropListMouseOver");
+            input = $("#endInput");
+            if (code === 13) {
+                if (current.length !== 0) {
+                    input.val(current.text());
+                    input.attr("text", current.attr("id"));
+                    $("#endSugList").empty();
+                    $("#endSugPopup").removeClass("show");
+                    var arr = current.attr("id").split(",");
+                    endLayer.clearMarkers();
+                    endLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(arr[1], arr[2]), iconend));
+                    map.setCenter(new SuperMap.LonLat(arr[1], arr[2]), 0);
+                }
+                return;
+            }
+            if (code === 38) {
+                if (current.length !== 0) {
+                    current.removeClass("dropListMouseOver");
+                    current = current.prev();
+                    if (current.length === 0) {
+                        current = $("#endSugList li:last-child");
+                    }
+                } else {
+                    current = $("#endSugList li:last-child");
+                }
+                current.addClass("dropListMouseOver");
+                input.val(current.text());
+                input.attr("text", current.attr("id"));
+
+            } else if (code === 40) {
+                if (current.length !== 0) {
+                    current.removeClass("dropListMouseOver");
+                    current = current.next();
+                    if (current.length === 0) {
+                        current = $("#endSugList li:first-child");
+                    }
+                } else {
+                    current = $("#endSugList li:first-child");
+                }
+                current.addClass("dropListMouseOver");
+                input.val(current.text());
+                input.attr("text", current.attr("id"));
+            }
+        }
+    }
+
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        changChun_Map = host + "/iserver/services/map-changchun/rest/maps/长春市区图",
+        traffic_transfer = host + "/iserver/services/traffictransferanalyst-sample/restjsr/traffictransferanalyst/Traffic-Changchun";
+
+    init();
+
+    function init() {
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.ScaleLine(),
+                new SuperMap.Control.Zoom(),
+                new SuperMap.Control.MousePosition(),
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                })]
+        });
+        vectorLayer = new SuperMap.Layer.Vector("Vector Layer");
+        tempRedLayer = new SuperMap.Layer.Vector("Red Layer");
+        markerLayer = new SuperMap.Layer.Markers("Marker Layer");
+        startLayer = new SuperMap.Layer.Markers("start Layer");
+        endLayer = new SuperMap.Layer.Markers("end Layer");
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", changChun_Map, {
+            transparent: true,
+            cacheEnabled: true
+        }, {maxResolution: "auto"});
+        layer.events.on({"layerInitialized": addLayer});
+
+        function addLayer() {
+            map.addLayers([layer, vectorLayer, markerLayer, startLayer, endLayer, tempRedLayer]);
+            map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 0);
+            addStartSugText();
+            addEndSugText();
+            addDropDownMenu(resources.text_transferScheme);
+            addDropDownMenuItem(resources.text_minTime, lessTime);
+            addDropDownMenuItem(resources.text_minDistance, minDistance);
+            addDropDownMenuItem(resources.text_lessWalk, lessWalk);
+            addDropDownMenuItem(resources.text_lessTransfer, lessTransfer);
+        }
+
+        function getStartEndStopID() {
+            if (!$("#startInput").attr("value")) {
+                widgets.alert.showAlert(resources.msg_query + resources.msg_selectSPoint, true);
+                return;
+            }
+            if (!$("#endInput").attr("value")) {
+                widgets.alert.showAlert(resources.msg_query + resources.msg_selectEPoint, true);
+                return;
+            }
+
+            var start = $("#startInput").attr("text");
+            var startList = $("#startSugList li");
+            if (startList.length === 1 && startList.html() !== resources.text_notFindSPoint) {
+                $("#startInput").attr("text", startList.attr("id"));
+                $("#startInput").attr("value", startList.html());
+                start = startList.attr("id").split(",")[0];
+            } else {
+                if (start) {
+                    start = parseInt(start.split(",")[0]);
+                } else {
+                    var startStop = $("#startSugList").find("li")[0];
+                    var startStopID = startStop.getAttribute("id");
+                    var startStopName = startStop.innerHTML;
+                    if (!startStopID) {
+                        widgets.alert.showAlert(resources.msg_query + resources.msg_noSInfo, false);
+                        return;
+                    }
+                    $("#startInput").attr("text", startStopID);
+                    $("#startInput").attr("value", startStopName);
+                    start = parseInt(startStopID.split(",")[0]);
+                }
+            }
+            var end = $("#endInput").attr("text");
+            var endList = $("#endSugList li");
+            if (endList.length === 1 && endList.html() !== resources.text_notFindEPoint) {
+                $("#endInput").attr("text", endList.attr("id"));
+                $("#endInput").attr("value", endList.html());
+                end = endList.attr("id").split(",")[0];
+            } else {
+                if (end) {
+                    end = parseInt(end.split(",")[0]);
+                } else {
+                    var endStop = $("#endSugList").find("li")[0];
+                    var endStopID = endStop.getAttribute("id");
+                    var endStopName = endStop.innerHTML;
+                    if (!endStopID) {
+                        widgets.alert.showAlert(resources.msg_query + resources.msg_noEInfo, false);
+                        return;
+                    }
+                    $("#endInput").attr("text", endStopID);
+                    $("#endInput").attr("value", endStopName);
+                    end = parseInt(endStopID.split(",")[0]);
+                }
+            }
+
+            $("#startSugList").empty();
+            $("#startSugPopup").removeClass("show");
+            $("#endSugList").empty();
+            $("#endSugPopup").removeClass("show");
+
+            return [start, end];
+        }
+
+        //最小时间公交换乘
+        function lessTime() {
+            clear();
+            window.closeWindow();
+            var stopIDs = getStartEndStopID();
+            if (stopIDs) {
+                executeTrafficTransfer(stopIDs, SuperMap.REST.TransferTactic.LESS_TIME);
+            }
+        }
+
+        //最短距离的公交换乘
+        function minDistance() {
+            clear();
+            window.closeWindow();
+            var stopIDs = getStartEndStopID();
+            if (stopIDs) {
+                executeTrafficTransfer(stopIDs, SuperMap.REST.TransferTactic.MIN_DISTANCE);
+            }
+        }
+
+        //最少步行公交换乘
+        function lessWalk() {
+            clear();
+            window.closeWindow();
+            var stopIDs = getStartEndStopID();
+            if (stopIDs) {
+                executeTrafficTransfer(stopIDs, SuperMap.REST.TransferTactic.LESS_WALK);
+            }
+        }
+
+        //少换乘公交换乘
+        function lessTransfer() {
+            clear();
+            window.closeWindow();
+            var stopIDs = getStartEndStopID();
+            if (stopIDs) {
+                executeTrafficTransfer(stopIDs, SuperMap.REST.TransferTactic.LESS_TRANSFER);
+            }
+        }
+
+        //定义公交换乘,points表示起始点坐标,transferTactic表示换乘策略类型
+        //包括时间最短、距离最短、最少换乘、最少步行四种选择
+        function executeTrafficTransfer(points, transferTactic) {
+            if (noStart) {
+                widgets.alert.showAlert(resources.msg_query + resources.text_notFindSPoint, false);
+                return;
+            }
+            if (noEnd) {
+                widgets.alert.showAlert(resources.msg_query + resources.text_notFindEPoint, false);
+                return;
+            }
+            window.paths = {};
+            window.paths["points"] = points;
+            vectorLayer.removeAllFeatures();
+            execTransSolutionsQuery(points, transferTactic, "NONE");
+        }
+    }
+
+    //transGuide代表换乘方式,transSolutions代表换乘方案,indexX代表方案索引号
+    function fillTransferInfo(transGuide, transSolutions, indexX) {
+        markerLayer.clearMarkers();
+        vectorLayer.removeAllFeatures();
+        tempRedLayer.removeAllFeatures();
+        if (popwin) map.removePopup(popwin);
+        if (transGuide && transGuide.items.length) {
+            var items = transGuide.items;
+            for (var itemIndex = 0, itemLen = items.length; itemIndex < itemLen; itemIndex++) {
+                var feature = new SuperMap.Feature.Vector();
+                feature.geometry = items[itemIndex].route;
+                feature.style = styleLine;
+                vectorLayer.addFeatures(feature);
+            }
+            markerLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(items[0].startPosition.x, items[0].startPosition.y), iconstart));
+            markerLayer.addMarker(new SuperMap.Marker(new SuperMap.LonLat(items[items.length - 1].endPosition.x, items[items.length - 1].endPosition.y), iconend));
+        }
+
+        var table = $("<table id='trafficRes' class='table table-bordered'></table>");
+        var startStop = $("<tr></tr>");
+        $("<td class='start_transfer' ></td>").appendTo(startStop);
+        $("<td colspan='2'><span class='busLink bgSpan'><span style='display:none'>" + transGuide.items[0].startPosition.x + "," + transGuide.items[0].startPosition.y + "</span>" + transGuide.items[0].startStopName + "</span></td>").appendTo(startStop);
+        startStop.appendTo(table);
+        var indexY = 0;
+        for (var iiii = 0, iiiiLen = transGuide.items.length; iiii < iiiiLen; iiii++) {
+            var item = transGuide.items[iiii];
+            var tr2 = $("<tr></tr>");
+            if (item.isWalking) {
+                $("<td class='step_transfer' ></td>").appendTo(tr2);
+                $("<td>" + resources.text_walkTO + "<a class='busLink'><span style='display:none'>" + item.endPosition.x + "," + item.endPosition.y + "</span>" + item.endStopName + "</a></td>").appendTo(tr2);
+                $("<td>" + parseInt(item.distance) + resources.msg_m + "</td>").appendTo(tr2);
+            } else {
+                var otherLines = transSolutions[indexX].linesItems[indexY],
+                    links = "";
+                if (otherLines && otherLines.lineItems.length > 1) {
+                    links = "</br>" + resources.text_alsoRide;
+                    for (var oti = 0, otLen = otherLines.lineItems.length; oti < otLen; oti++) {
+                        var line = otherLines.lineItems[oti];
+                        if (item.lineName !== line.lineName) {
+                            var other = indexX + "," + indexY + "," + oti + ",0";
+                            links += "<a class='busLink'><span style='display:none'>" + other + "</span>" + line.lineName + "</a>";
+                        }
+                    }
+                }
+                $("<td class='bus_transfer'></td>").appendTo(tr2);
+                var points = item.route.components, pointStr = "";
+                for (var i = 0; i < points.length; i++) {
+                    pointStr += points[i].x + " " + points[i].y;
+                    if (i != points.length - 1) {
+                        pointStr += ",";
+                    }
+                }
+                $("<td>" + resources.text_ride + "<a class='busLink'>" + item.lineName + "<span style='display:none'>" + pointStr + "</span></a>" + resources.text_debus1 + "<a class='busLink'><span style='display:none'>" + item.endPosition.x + "," + item.endPosition.y + "</span>" + item.endStopName + "</a>" + resources.text_debus2 + links + "</td>").appendTo(tr2);
+                $("<td>" + item.passStopCount + resources.text_stops + "</td>").appendTo(tr2);
+                indexY++;
+            }
+            tr2.appendTo(table);
+        }
+        var endStop = $("<tr></tr>");
+        endStop.appendTo(table);
+        $("<td class='end_transfer' ></td>").appendTo(endStop);
+        $("<td colspan='2'><span class='busLink bgSpan'><span style='display:none'>" + transGuide.items[transGuide.items.length - 1].endPosition.x + "," + transGuide.items[transGuide.items.length - 1].endPosition.y + "</span>" + transGuide.items[transGuide.items.length - 1].endStopName + "</span></td>").appendTo(endStop);
+
+        return table;
+    }
+
+    function execTransSolutionsQuery(points, tactic, preference, chked) {
+        //配置公交换乘参数
+        var params = new SuperMap.REST.TransferSolutionParameters({
+            solutionCount: 6,//最大换乘导引数量
+            transferTactic: tactic,//公交换乘策略类型
+            transferPreference: preference,
+            walkingRatio: 10,//步行与公交的消耗权重比
+            points: points  //起始点坐标
+        });
+        // 配置公交换乘服务,监听两个事件,processCompleted和processFailed,服务端成功返回查询结果时触发
+        //processCompleted 事件,服务端返回查询结果失败时触发 processFailed 事件。
+        var iserver = new SuperMap.REST.TransferSolutionService(traffic_transfer, {
+            eventListeners: {
+                processCompleted: transferSolutionsSucceed,
+                processFailed: transferSolutionsFailed
+            }
+        });
+        //execute
+        iserver.processAsync(params);
+
+        //执行公交换乘成功返回结果
+        function transferSolutionsSucceed(event) {
+            $("#result").empty();
+            markerLayer.clearMarkers();
+            startLayer.clearMarkers();
+            endLayer.clearMarkers();
+            //在地图上叠加符号信息
+            var transGuide = event.result.transferGuide,
+                transSolutions = event.result.solutionItems,
+                Solutions = [];
+
+            for (var j = 0; j < transSolutions.length; j++) {
+                var linesItems = transSolutions[j].linesItems, transSolution = [];
+                for (var jj = 0; jj < linesItems.length; jj++) {
+                    var lineItems = linesItems[jj].lineItems, items = [];
+                    for (var jjj = 0; jjj < lineItems.length; jjj++) {
+                        var lineItem = lineItems[jjj];
+                        items.push("{'lineID':" + lineItem.lineID + ",'startStopIndex':" + lineItem.startStopIndex + ",'endStopIndex':" + lineItem.endStopIndex + "}");
+                    }
+                    transSolution.push(items);
+                }
+                Solutions.push(transSolution);
+            }
+            window.paths["transSolutions"] = transSolutions;
+            window.paths["solutions"] = Solutions;
+            if (!transGuide || !transSolutions) return;
+
+            var transRes = $("<div class='transferResult'></div>");
+            var solution, lines, line,
+                dispStatus = "block",
+                strMessage = "";
+            for (var i = 0, iLen = transSolutions.length; i < iLen; i++) {
+                solution = transSolutions[i];
+                var title = "";
+                for (var ii = 0, iiLen = solution.linesItems.length; ii < iiLen; ii++) {
+                    lines = solution.linesItems[ii];
+                    for (var iii = 0, iiiLen = lines.lineItems.length; iii < iiiLen; iii++) {
+                        line = lines.lineItems[iii];
+                        if (iii !== iiiLen - 1) {
+                            title += line.lineName + "/";
+                        } else {
+                            title += line.lineName;
+                        }
+                    }
+                    if (ii !== iiLen - 1) {
+                        title += " → ";
+                    }
+                }
+                //存放默认路径,默认取数组的第一个元素
+                var path = "[", pLine;
+                var pathLines = solution.linesItems;
+                for (var pi = 0, pLen = pathLines.length; pi < pLen; pi++) {
+                    pLine = pathLines[pi].lineItems[0];
+                    path += "{'lineID':" + pLine.lineID + ",'startStopIndex':" + pLine.startStopIndex + ",'endStopIndex':" + pLine.endStopIndex + "}";
+                    if (pi !== pLen - 1) path += ",";
+                }
+                path += "]";
+                var index = "solutions_" + i;
+                window.paths[index] = path;
+
+                $("<div class='transferSolution' id='transferSolution-" + i + "'><span class='transferIndex'>" + resources.text_scheme + (i + 1) + ":</span>" + title + "</div>").appendTo(transRes);
+
+                if (i !== 0) {
+                    dispStatus = "none";
+                }
+                var list = $("<div class='transferInfo' id='transferInfo-" + i + "' style='display:" + dispStatus + "'></div>").appendTo(transRes);
+                list.appendTo(transRes);
+                if (i !== 0) {
+
+                } else {
+                    fillTransferInfo(transGuide, transSolutions, 0, 0).appendTo(list);
+                }
+            }
+
+            strMessage += transRes.html();
+
+            showWindow(strMessage, chked);
+            bindSolutionsClickEvent();
+            bindPreferenceClickEvent();
+            setPopup();
+
+            function bindSolutionsClickEvent() {
+                for (var i = 0; i < 6; i++) {
+                    $("#transferSolution-" + i).click(toggleGuideItems);
+                }
+
+                function toggleGuideItems(e) {
+                    for (var i = 0; i < 6; i++) {
+                        $("#transferInfo-" + i).hide(500);
+                    }
+                    var id = parseInt(e.currentTarget.id.split("-")[1]);
+                    $("#transferInfo-" + id).show(500);
+                    var transLines = window.paths["solutions_" + id];
+                    execTransPathQuery(id, transLines);
+                }
+            }
+
+            function bindPreferenceClickEvent() {
+                $("#preferenceCheck").click(setTransferPreference);
+
+                function setTransferPreference(e) {
+                    var preference = SuperMap.REST.TransferPreference.NONE;
+                    var chked = "unchecked";
+                    if (e.currentTarget.checked) {
+                        preference = SuperMap.REST.TransferPreference.NO_SUBWAY;
+                        chked = "checked";
+                    }
+                    execTransSolutionsQuery(points, tactic, preference, chked);
+                }
+            }
+        }
+
+        //执行公交换乘失败返回结果
+        function transferSolutionsFailed(event) {
+            widgets.alert.showAlert("错误提示:" + event.error.errorMsg, false);
+        }
+    }
+
+    function execTransPathQuery(id, transLines) {
+        var params = new SuperMap.REST.TransferPathParameters({
+            points: window.paths["points"],
+            transferLines: transLines
+        });
+        var iserver = new SuperMap.REST.TransferPathService(traffic_transfer, {
+            eventListeners: {
+                processCompleted: transferPathSucceed,
+                processFailed: transferPathFailed
+            }
+        });
+        iserver.processAsync(params);
+
+        function transferPathSucceed(event) {
+            $("#transferInfo-" + id).empty();
+            var transGuide = event.result.transferGuide;
+            transSolutions = window.paths["transSolutions"];
+            map.setCenter(new SuperMap.LonLat(4503.6240321526, -3861.911472192499), 0);
+            fillTransferInfo(transGuide, transSolutions, id).appendTo($("#transferInfo-" + id));
+            setPopup();
+        }
+
+        function transferPathFailed(event) {
+
+        }
+    }
+
+    function setPopup() {
+        $(".busLink").click(function () {
+            if (popwin) map.removePopup(popwin);
+            tempRedLayer.removeAllFeatures();
+            var points = this.children[0].innerText.split(","), lonLat;
+            if (points.length === 2) {
+                lonLat = new SuperMap.LonLat(points[0], points[1]);
+                var contentHTML = "<div style='font-size:.8em; opacity: 0.8; overflow-y:hidden;'><br>";
+                contentHTML += this.innerHTML + "<br></div>";
+                //初始化一个弹出窗口,当某个地图要素被选中时会弹出此窗口,用来显示选中地图要素的属性信息
+                if (popwin) map.removePopup(popwin);
+                popwin = new SuperMap.Popup.FramedCloud("chicken",
+                    lonLat,
+                    null,
+                    contentHTML,
+                    null,
+                    true,
+                    null,
+                    true);
+                map.addPopup(popwin);
+                map.setCenter(lonLat, 2);
+            } else if (points.length === 4 && points[3] === "0") {
+                var linesItems = window.paths["solutions"][points[0]], lineStr = "[";
+                for (var i = 0; i < linesItems.length; i++) {
+                    var lineItem = linesItems[i][0], j = parseInt(points[1]);
+                    if (i !== j) {
+                        lineStr += lineItem;//"{'lineID':" + lineItem.lineID + ",'startStopIndex':" + lineItem.startStopIndex + ",'endStopIndex':" + lineItem.endStopIndex + "}";
+                    } else if (i === j) {
+                        lineItem = linesItems[points[1]][points[2]];
+                        lineStr += lineItem;//"{'lineID':" + lineItem.lineID + ",'startStopIndex':" + lineItem.startStopIndex + ",'endStopIndex':" + lineItem.endStopIndex + "}"
+                    }
+                    if (i !== linesItems.length - 1) {
+                        lineStr += ",";
+                    }
+                }
+                lineStr += "]";
+                $("#transferInfo-" + points[0]).hide(500);
+                execTransPathQuery(points[0], lineStr);
+                $("#transferInfo-" + points[0]).show(500);
+            } else {
+                var linePoints = [];
+                for (var i = 0; i < points.length; i++) {
+                    var arr = points[i].split(" ");
+                    var point = new SuperMap.Geometry.Point(arr[0], arr[1]);
+                    linePoints.push(point);
+                }
+                var lineString = new SuperMap.Geometry.LineString(linePoints);
+                var feature = new SuperMap.Feature.Vector();
+                feature.geometry = lineString;
+                feature.style = styleLineRed;
+                tempRedLayer.addFeatures(feature);
+                lonLat = lineString.getBounds().getCenterLonLat();
+                map.setCenter(lonLat, 2);
+                map.zoomToExtent(lineString.getBounds());
+            }
+        });
+    }
+
+    function clear() {
+        $('div').remove('#mapAlert');
+        tempRedLayer.removeAllFeatures();
+        vectorLayer.removeAllFeatures();
+        popwin && map && map.removePopup(popwin);
+    }
+
+    function showWindow(winMessage, chked) {
+        if (document.getElementById("popupWin")) {
+            $("#popupWin").css("display", "block");
+        } else {
+            $("<div id='popupWin'></div>").addClass("popupWindow").appendTo($("#result"));
+        }
+        if (chked !== "checked") {
+            chked = "unchecked";
+        }
+        var str = "";
+        str += '<div class="winTitle" onMouseDown="startMove(this,event)" onMouseUp="stopMove(this,event)"><span class="title_left">' + resources.text_trafficTransferScheme + '</span><span class="title_right"><a href="javascript:closeWindow()" title="关闭窗口">' + resources.text_close + '</a></span><br style="clear:right"/></div>';  //标题栏
+        str += '<div class="transferPreference"><span class="floatLeft">' + resources.text_ridePreference + '</span><input type="checkbox" class="floatLeft" id="preferenceCheck" ' + chked + '/><span class="floatLeft">' + resources.text_noSubway + '</span></div>';
+        str += '<div class="winContent" style="overflow-y: auto;">';
+        str += winMessage;
+        str += '</div>';
+        $("#popupWin").html(str);
+    }
+
+    window.closeWindow = function () {
+        $("#result").empty();
+        $("#popupWin").css("display", "none");
+        $("#win_bg").css("display", "none");
+    }
+    window.startMove = function (o, e) {
+        var wb;
+        if (SuperMap.Browser.name === "msie" && e.button === 1) wb = true;
+        else if (e.button === 0) wb = true;
+        if (wb) {
+            var x_pos = parseInt(e.clientX - o.parentNode.offsetLeft);
+            var y_pos = parseInt(e.clientY - o.parentNode.offsetTop);
+            if (y_pos <= o.offsetHeight) {
+                document.documentElement.onmousemove = function (mEvent) {
+                    var eEvent = (SuperMap.Browser.name === "msie") ? event : mEvent;
+                    o.parentNode.style.left = eEvent.clientX - x_pos + "px";
+                    o.parentNode.style.top = eEvent.clientY - y_pos + "px";
+                }
+            }
+        }
+    }
+    window.stopMove = function (o, e) {
+        document.documentElement.onmousemove = null;
+    }
+
+    //添加下拉菜单
+    function addDropDownMenu(name) {
+        $("<div class='btn-group'><a class='btn btn-info dropdown-toggle' data-toggle='dropdown' href='#'>" + name + "<span class='caret'></span></a><ul class='dropdown-menu' id='menuList'></ul>").appendTo($("#func"));
+    }
+
+    function addDropDownMenuItem(name, callback) {
+        var li = $("<li><a href='javascript:void(0)'>" + name + "</a></li>");
+        li.click(callback);
+        li.appendTo($("#menuList"));
+    }
+
+</script>
+
+</body>
+</html>

+ 173 - 0
public/supermap/examples/classic/buffersAnalystJobService.html

@@ -0,0 +1,173 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <title data-i18n="resources.title_buffersAnalystJobService"></title>
+    <script type="text/javascript" include="jquery,bootstrap,widgets" src="../js/include-web.js"></script>
+    <style>
+        .control {
+            position: absolute;
+            top: 50px;
+            right: 10px;
+        }
+
+        #map {
+            position: absolute;
+        }
+    </style>
+</head>
+
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+    <div id="map" style="width: 100%;height:100%"></div>
+    <div id="control" class="control" style='width:350px'>
+        <div class="panel panel-default">
+            <div class="panel-heading">
+                <h3 class="panel-title" data-i18n="resources.text_buffersAnalystJobService"></h3>
+            </div>
+            <div class="panel-body">
+                <div class="input-group">
+                    <span class="input-group-addon"><span data-i18n="resources.text_inputData"></span><span data-i18n="[title]resources.text_requiredField"
+                            style="color: red;"> * </span> </span>
+                    <input id="datasetName" type="text" class="form-control" value="samples_processing_newyorkPoint_P" />
+                </div>
+                <p></p>
+                <div class='input-group'>
+                    <span class='input-group-addon' data-i18n="resources.text_analysisRange"></span>
+                    <input id='bounds' type='text' class='form-control' value='-74.150, 40.550, -73.750, 40.950' />
+                </div>
+                <p></p>
+                <div class='input-group'>
+                    <span class='input-group-addon' data-i18n="resources.text_bufferDistance"></span>
+                    <input id='distace' type='text' class='form-control' value='15' />
+                </div>
+                <p></p>
+                <div class='input-group'>
+                    <span class='input-group-addon' data-i18n="resources.text_bufferDistanceField"></span>
+                    <input id='distanceField' type='text' class='form-control' value='pickup_latitude' />
+                </div>
+                <p></p>
+                <div class='input-group'>
+                    <span class='input-group-addon' data-i18n="resources.text_bufferDistanceUnit"></span>
+                    <select class='form-control' id='distanceUnit' name='distanceUnit'>
+                        <option value='Meter' selected='selected'>Meter</option>
+                        <option value='Kilometer'>Kilometer</option>
+                        <option value='Yard'>Yard</option>
+                        <option value='Foot'>Foot</option>
+                        <option value='Mile'>Mile</option>
+                    </select></div>
+                <p></p>
+                <div class='input-group'>
+                    <span class='input-group-addon' data-i18n="resources.text_fusionField"></span>
+                    <input id='dissoveField' type='text' class='form-control' value='pickup_longitude' />
+                </div>
+                <p></p>
+                <div align="right">
+                    <input type="button" id='btn' class="btn btn-primary" data-i18n="[value]resources.text_analyst" />
+                </div>
+            </div>
+        </div>
+    </div>
+    <script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
+    <script type="text/javascript">
+        var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+        var resultLayer,
+            processingsUrl = host + "/iserver/services/distributedanalyst/rest/v1/jobs",
+            mapURL = host + "/iserver/services/map-world/rest/maps/World",
+            map = new SuperMap.Map("map", {
+                controls: [
+                    new SuperMap.Control.Navigation(),
+                    new SuperMap.Control.Zoom(),
+                    new SuperMap.Control.LayerSwitcher()
+
+                ],
+                allOverlays: true
+            });
+        map.addControl(new SuperMap.Control.MousePosition());
+        var layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", mapURL, null, {
+            maxResolution: "auto"
+        });
+        layer.events.on({
+            "layerInitialized": addLayer
+        });
+
+        function addLayer() {
+            map.addLayers([layer]);
+            map.setCenter(new SuperMap.LonLat(-73.95, 40.75), 12);
+        }
+
+        var processingService = new SuperMap.REST.ProcessingService(processingsUrl, {
+            withCredentials: window.isLocal
+        });
+        SuperMap.SecurityManager.registerToken(processingsUrl, window.exampleToken);
+
+        function getBounds() {
+            if ($('#bounds').val() === "") {
+                return "";
+            }
+            var bounds = [];
+            $('#bounds').val().split(',').map(function (el) {
+                bounds.push(parseFloat(el));
+            });
+            return new SuperMap.Bounds(
+                bounds[0],
+                bounds[1],
+                bounds[2],
+                bounds[3]
+            );
+        }
+
+        $('#btn').on('click', function () {
+            if ($('#msg_container')[0]) {
+                $('#msg_container').remove();
+            }
+            widgets.loader.showLoader();
+            if (map && resultLayer) {
+                map.removeLayer(resultLayer);
+            }
+            var buffersAnalystJobsParameter = new SuperMap.BuffersAnalystJobsParameter({
+                datasetName: $('#datasetName').val(),
+                bounds: getBounds(),
+                distance: $('#distace').val(),
+                distanceField: $('#distanceField').val(),
+                distanceUnit: $('#distanceUnit option:selected').attr('value'),
+                dissolveField: $('#dissoveField').val()
+            });
+            processingService.addBuffersJob(buffersAnalystJobsParameter, function (serviceResult) {
+                if (serviceResult.error) {
+                    widgets.loader.removeLoader();
+                    var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error.code;
+                    widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
+                    return;
+                }
+                serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
+                    if (info.serviceType === 'RESTMAP') {
+                        SuperMap.FetchRequest.get(info.serviceAddress + '/maps').then(function (
+                            response) {
+                            return response.json();
+                        }).then(function (result) {
+                            var mapUrl = result[0].path;
+                            resultLayer = new SuperMap.Layer.TiledDynamicRESTLayer(
+                                "resultLayer", mapUrl, {
+                                    transparent: true
+                                });
+                            resultLayer.events.on({
+                                "layerInitialized": addLayer
+                            });
+
+                            function addLayer() {
+                                map.addLayer(resultLayer);
+                                widgets.loader.removeLoader();
+                            }
+                        });
+                    }
+                });
+            });
+        });
+    </script>
+</body>
+
+</html>

File diff suppressed because it is too large
+ 1285 - 0
public/supermap/examples/classic/config.js


+ 116 - 0
public/supermap/examples/classic/controler_areaMeasure.html

@@ -0,0 +1,116 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title data-i18n="resources.title_areaMeasure"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            left: 50px;
+            top: 10px;
+            text-align: center;
+            background: #FFF;
+            display: inline-block;
+            z-index: 1000;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_areaMeasure"></h5>
+    </div>
+    <div class='panel-body content' id='params'>
+        <div  class='button-group'>
+            <input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.text_input_value_areaMeasure" onclick="areaMeasure()"/>
+            <input type='button' id='btn2' class='btn btn-primary' data-i18n="[value]resources.text_input_value_clear" onclick="clearFeatures()"/>
+        </div>
+    </div>
+</div>
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layer, drawPolygon, polygonLayer;
+    style = {
+        strokeColor: "#304DBE",
+        strokeWidth: 2,
+        pointerEvents: "visiblePainted",
+        fillColor: "#304DBE",
+        fillOpacity: 0.8
+    },
+        url=host+"/iserver/services/map-world/rest/maps/World";
+        //新建面矢量图层
+        polygonLayer = new SuperMap.Layer.Vector("polygonLayer");
+        //对面图层应用样式style(前面有定义)
+        polygonLayer.style = style;
+        /*
+         注册featureadded事件,触发drawCompleted()方法
+         例如注册"loadstart"事件的单独监听
+         events.on({ "loadstart": loadStartListener });
+         */
+        //创建画面控制,图层是polygonLayer
+        drawPolygon = new SuperMap.Control.DrawFeature(polygonLayer, SuperMap.Handler.Polygon);
+        drawPolygon.events.on({"featureadded": drawCompleted});
+        //定义layer图层,TiledDynamicRESTLayer:分块动态 REST 图层
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, { transparent: true, cacheEnabled: true }, { maxResolution: "auto" });
+        //为图层初始化完毕添加addLayer()事件
+        layer.events.on({"layerInitialized":addLayer});
+        map = new SuperMap.Map("map",{controls: [
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }}),
+            drawPolygon]
+        });
+
+    function addLayer() {
+        map.addLayers([layer,  polygonLayer]);
+        map.setCenter(new SuperMap.LonLat(0, 0), 1);
+    }
+
+    function areaMeasure(){
+        widgets.alert.clearAlert();
+        clearFeatures();
+        drawPolygon.activate();
+    }
+
+    //绘完触发事件
+    function drawCompleted(drawGeometryArgs) {
+        //停止画面控制
+
+        drawPolygon.deactivate();
+        //获得图层几何对象
+        var geometry = drawGeometryArgs.feature.geometry,
+            measureParam = new SuperMap.REST.MeasureParameters(geometry), /* MeasureParameters:量算参数类。 客户端要量算的地物间的距离或某个区域的面积*/
+            myMeasuerService = new SuperMap.REST.MeasureService(url); //量算服务类,该类负责将量算参数传递到服务端,并获取服务端返回的量算结果
+        myMeasuerService.events.on({ "processCompleted": measureCompleted });
+
+        //对MeasureService类型进行判断和赋值,当判断出是LineString时设置MeasureMode.DISTANCE,否则是MeasureMode.AREA
+
+        myMeasuerService.measureMode = SuperMap.REST.MeasureMode.AREA;
+
+        myMeasuerService.processAsync(measureParam); //processAsync负责将客户端的量算参数传递到服务端。
+    }
+
+    //测量结束调用事件
+    function measureCompleted(measureEventArgs) {
+        var   area = measureEventArgs.result.area,
+            unit = measureEventArgs.result.unit;
+        widgets.alert.showAlert(resources.msg_measureResult + area + resources.msg_sqm,true);
+    }
+    //移除图层要素
+    function clearFeatures(){
+        polygonLayer.removeAllFeatures();
+        widgets.alert.clearAlert();
+    }
+
+</script>
+</body>
+</html>

+ 39 - 0
public/supermap/examples/classic/controler_attribution.html

@@ -0,0 +1,39 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_attribution"></title>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layerWorld, url = host + "/iserver/services/map-world/rest/maps/World";
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.Navigation({
+                    dragPanOptions: {
+                        enableKinetic: true
+                    }
+                }),
+                new SuperMap.Control.LayerSwitcher()
+            ]
+        });
+        //初始化版权控件类
+        attribution = new SuperMap.Control.Attribution();
+        layerWorld = new SuperMap.Layer.TiledDynamicRESTLayer("World", url);   //获取World地图服务地址
+        layerWorld.events.on({"layerInitialized": addLayer});
+    function addLayer() {
+        map.addLayers([layerWorld]);
+        layerWorld.attribution = "powered by <a target='_blank' href='http://www.supermap.com/cn" + "'>SuperMap</a> |detail in <a style='white-space: nowrap' target='_blank' href='" + url + "'>World</a>";
+        map.addControl(attribution);
+        map.setCenter(new SuperMap.LonLat(80, 40), 4);
+    }
+</script>
+</body>
+</html>

+ 69 - 0
public/supermap/examples/classic/controler_changeControlsSkin.html

@@ -0,0 +1,69 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_changeControlsSkin"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            right: 50px;
+            top: 50px;
+            text-align: center;
+            background: #FFF;
+            z-index: 1000;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_changeControlsSkin"></h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <div align='center' class='button-group'>
+            <input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.text_input_value_change" onclick="changeSkin()"/>
+        </div>
+    </div>
+</div>
+
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var map, layer,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io",
+        url = host + "/iserver/services/map-china400/rest/maps/China";
+    function addMap() {
+        //初始化地图
+        map = new SuperMap.Map("map", {
+            controls: [
+                new SuperMap.Control.Navigation(),
+                new SuperMap.Control.OverviewMap,
+                new SuperMap.Control.Zoom()
+            ]
+        });
+        //初始化图层
+        layer = new SuperMap.Layer.TiledDynamicRESTLayer("China", url, null, {maxResolution: "auto"});
+        //监听图层信息加载完成事件
+        layer.events.on({"layerInitialized": addLayer});
+    }
+    addMap();
+    //异步加载图层
+    function addLayer() {
+        map.addLayer(layer);
+        map.setCenter(new SuperMap.LonLat(0, 0), 4);
+    }
+
+    //切换LayerSwitcher OverviewMap Zoom Skin风格 系统提供白色和蓝色两种配色方案,系统默认为白色
+    function changeSkin() {
+        map.destroy();
+        SuperMap.Control.SKIN = SuperMap.Control.SKIN === "BLUE" ? "WHITE" : "BLUE";
+        addMap();
+    }
+</script>
+</body>
+</html>

+ 122 - 0
public/supermap/examples/classic/controler_distanceMeasure.html

@@ -0,0 +1,122 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_distanceMeasure"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            left: 50px;
+            top: 10px;
+            text-align: center;
+            background: #FFF;
+            z-index: 1000;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_distanceMeasure"></h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <div align='right' class='button-group'>
+            <input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.text_input_value_distanceMeasure" onclick="distanceMeasure()"/>
+            <input type='button' id='btn2' class='btn btn-primary' data-i18n="[value]resources.text_input_value_clear" onclick="clearFeatures()"/>
+        </div>
+    </div>
+</div>
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map,layer, drawLine, lineLayer,
+        style = {
+            strokeColor: "#304DBE",
+            strokeWidth: 2,
+            pointerEvents: "visiblePainted",
+            fillColor: "#304DBE",
+            fillOpacity: 0.8
+        },
+        url = host + "/iserver/services/map-world/rest/maps/World";
+    //新建线矢量图层
+    lineLayer = new SuperMap.Layer.Vector("lineLayer");
+    //对线图层应用样式style(前面有定义)
+    lineLayer.style = style;
+
+
+    //创建画线控制,图层是lineLayer;这里DrawFeature(图层,类型,属性);multi:true在将要素放入图层之前是否现将其放入几何图层中
+    drawLine = new SuperMap.Control.DrawFeature(lineLayer, SuperMap.Handler.Path, {multi: true});
+
+    /*
+     注册featureadded事件,触发drawCompleted()方法
+     例如注册"loadstart"事件的单独监听
+     events.on({ "loadstart": loadStartListener });
+     */
+    drawLine.events.on({"featureadded": drawCompleted});
+    //定义layer图层,TiledDynamicRESTLayer:分块动态 REST 图层
+    layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {
+        transparent: true,
+        cacheEnabled: true
+    }, {maxResolution: "auto"});
+    //为图层初始化完毕添加addLayer()事件
+    layer.events.on({"layerInitialized": addLayer});
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.LayerSwitcher(),
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            }),
+            drawLine]
+    });
+    function addLayer() {
+        map.addLayers([layer, lineLayer]);
+        map.setCenter(new SuperMap.LonLat(0, 0), 1.5);
+    }
+    function distanceMeasure() {
+        widgets.alert.clearAlert();
+        clearFeatures();
+        drawLine.activate();
+    }
+
+    //绘完触发事件
+    function drawCompleted(drawGeometryArgs) {
+        //停止画面控制
+        drawLine.deactivate();
+        //获得图层几何对象
+        var geometry = drawGeometryArgs.feature.geometry,
+            measureParam = new SuperMap.REST.MeasureParameters(geometry), /* MeasureParameters:量算参数类。 客户端要量算的地物间的距离或某个区域的面积*/
+            myMeasuerService = new SuperMap.REST.MeasureService(url); //量算服务类,该类负责将量算参数传递到服务端,并获取服务端返回的量算结果
+        myMeasuerService.events.on({"processCompleted": measureCompleted});
+
+        //对MeasureService类型进行判断和赋值,当判断出是LineString时设置MeasureMode.DISTANCE,否则是MeasureMode.AREA
+
+        myMeasuerService.measureMode = SuperMap.REST.MeasureMode.DISTANCE;
+
+        myMeasuerService.processAsync(measureParam); //processAsync负责将客户端的量算参数传递到服务端。
+    }
+
+    //测量结束调用事件
+    function measureCompleted(measureEventArgs) {
+        var distance = measureEventArgs.result.distance;
+        var unit = measureEventArgs.result.unit;
+        widgets.alert.showAlert(resources.msg_measureResult + distance + resources.msg_m,true);
+    }
+
+    //移除图层要素
+    function clearFeatures() {
+        lineLayer.removeAllFeatures();
+        widgets.alert.clearAlert();
+    }
+
+</script>
+</body>
+</html>

+ 113 - 0
public/supermap/examples/classic/controler_dragFeature.html

@@ -0,0 +1,113 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_dragFeature"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            left: 50px;
+            top: 10px;
+            text-align: center;
+            background: #FFF;
+            z-index: 1000;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_dragFeature"></h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <p></p>
+        <div align='right' class='button-group'>
+            <input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.text_input_value_dragFea" onclick="activateDragFeature()"/>
+            <input type='button' id='btn2' class='btn btn-primary' data-i18n="[value]resources.text_input_value_notDrag" onclick="deactivateDragFeature()"/>
+        </div>
+    </div>
+</div>
+
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layer, vectorLayer, dragFeature;
+    url = host + "/iserver/services/map-world/rest/maps/World";
+    //新建矢量图层
+    vectorLayer = new SuperMap.Layer.Vector("vectorlayer");
+    addData();
+    dragFeature = new SuperMap.Control.DragFeature(vectorLayer);
+    //定义layer图层,TiledDynamicRESTLayer:分块动态 REST 图层
+    layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {
+        transparent: true,
+        cacheEnabled: true
+    }, {maxResolution: "auto"});
+    //为图层初始化完毕添加addLayer()事件
+    layer.events.on({"layerInitialized": addLayer});
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.LayerSwitcher(),
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            }),
+            dragFeature]
+    });
+
+    function addLayer() {
+        map.addLayers([layer, vectorLayer]);
+        map.setCenter(new SuperMap.LonLat(0, 0), 1);
+    }
+
+    function addData() {
+        var point_data = [[-55, 34], [-90, -45], [44, -50], [100, 33], [94, 57]];
+        var point_features = [];
+        for (var i = 0, len = point_data.length; i < len; i++) {
+            var point = new SuperMap.Geometry.Point(point_data[i][0], point_data[i][1]);
+            var feature = new SuperMap.Feature.Vector(point);
+            point_features.push(feature);
+        }
+        vectorLayer.addFeatures(point_features);
+
+        var line_data = [[113, 19], [107, -2], [92, 13], [90, 21], [82, 12], [74, 3], [64, 22], [52, 8], [71, 0], [91, 3]];
+        var points = [];
+        for (var i = 0, len = line_data.length; i < len; i++) {
+            var point = new SuperMap.Geometry.Point(line_data[i][0], line_data[i][1]);
+            points.push(point);
+        }
+        var line = new SuperMap.Geometry.LineString(points);
+        var line_feature = new SuperMap.Feature.Vector(line);
+        vectorLayer.addFeatures([line_feature]);
+
+        var polygon_data = [[-16, 30], [-16, 0], [50, 0], [50, 30]];
+        var points = [];
+        for (var i = 0, len = polygon_data.length; i < len; i++) {
+            var point = new SuperMap.Geometry.Point(polygon_data[i][0], polygon_data[i][1]);
+            points.push(point);
+        }
+        var linearRing = new SuperMap.Geometry.LinearRing(points);
+        var polygon = new SuperMap.Geometry.Polygon([linearRing]);
+        var polygon_feature = new SuperMap.Feature.Vector(polygon);
+        vectorLayer.addFeatures([polygon_feature]);
+    }
+
+    //激活拖拽要素控件
+    function activateDragFeature() {
+        dragFeature.activate();
+    }
+
+    //注销拖拽要素控件
+    function deactivateDragFeature() {
+        dragFeature.deactivate();
+    }
+</script>
+</body>
+</html>

+ 73 - 0
public/supermap/examples/classic/controler_dragpan.html

@@ -0,0 +1,73 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_dragpan"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            right: 50px;
+            top: 50px;
+            text-align: center;
+            background: #FFF;
+            z-index: 1000;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_dragpan"></h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <p></p>
+        <div align='right' class='button-group'>
+            <input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.text_input_value_dragMap" onclick="activated()"/>
+            <input type='button' id='btn2' class='btn btn-primary' data-i18n="[value]resources.text_input_value_notDrag" onclick="deactivated()"/>
+        </div>
+    </div>
+</div>
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layerWorld;
+    var url = host + "/iserver/services/map-world/rest/maps/World";
+
+    //初始化地图拖拽控件类
+    dragPan = new SuperMap.Control.DragPan();
+    //当该属性为true,拖拽地图时,鼠标移动到地图可视区域外依然有效。默认为false
+    dragPan.documentDrag = true;
+    //设置是否使用拖拽动画。默认为false,不使用动画
+    dragPan.enableKinetic = true;
+    //执行动画的间隔,默认为10,单位是毫秒
+    dragPan.kineticInterval = 20;
+    //初始化地图类,添加地图拖拽控件到Map
+    map = new SuperMap.Map("map", {
+        controls: [dragPan]
+    });
+    layerWorld = new SuperMap.Layer.TiledDynamicRESTLayer("World", url);  //获取图层服务地址
+    layerWorld.events.on({"layerInitialized": addLayer});
+    //添加地图图层到map
+    function addLayer() {
+        map.addLayers([layerWorld]);
+        map.setCenter(new SuperMap.LonLat(80, 37), 4);
+    }
+
+    //激活控件
+    function activated() {
+        dragPan.activate();
+    }
+
+    //注销控件
+    function deactivated() {
+        dragPan.deactivate();
+    }
+
+</script>
+</body>
+</html>

+ 154 - 0
public/supermap/examples/classic/controler_drawGeometry.html

@@ -0,0 +1,154 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title data-i18n="resources.title_drawGeometry"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            left: 50px;
+            top: 10px;
+            text-align: center;
+            background: #FFF;
+            z-index: 1000;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_drawGeometry"></h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <p></p>
+        <div align='right' class='button-group'>
+            <input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.text_input_value_drawPoint" onclick="draw_point()"/>
+            <input type='button' id='btn2' class='btn btn-primary' data-i18n="[value]resources.text_input_value_drawLine" onclick="draw_line()"/>
+            <input type='button' id='btn3' class='btn btn-primary' data-i18n="[value]resources.text_input_value_drawPolygon" onclick="draw_polygon()"/>
+            <input type='button' id='btn4' class='btn btn-primary' data-i18n="[value]resources.text_input_value_select" onclick="selectFeature()"/>
+            <input type='button' id='btn5' class='btn btn-primary' data-i18n="[value]resources.text_input_value_modify" onclick="modifyFeature()"/>
+            <input type='button' id='btn6' class='btn btn-primary' value='Undo' onclick="undo()"/>
+            <input type='button' id='btn7' class='btn btn-primary' value='Redo' onclick="redo()"/>
+            <input type='button' id='btn8' class='btn btn-primary' data-i18n="[value]resources.text_input_value_clear" onclick="clearFeatures()"/>
+        </div>
+    </div>
+</div>
+
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var map, layer, drawPoint, drawLine, drawPolygon, vecotrLayer, selectCtrl,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    url = host + "/iserver/services/map-china400/rest/maps/China_4326";
+    //新建面矢量图层
+    vecotrLayer = new SuperMap.Layer.Vector("polygonLayer");
+    drawPoint = new SuperMap.Control.DrawFeature(vecotrLayer, SuperMap.Handler.Point, {multi: true});
+    drawLine = new SuperMap.Control.DrawFeature(vecotrLayer, SuperMap.Handler.Path, {multi: true});
+    drawPolygon = new SuperMap.Control.DrawFeature(vecotrLayer, SuperMap.Handler.Polygon);
+    modifyCtrl = new SuperMap.Control.ModifyFeature(vecotrLayer);
+    selectCtrl = new SuperMap.Control.SelectFeature(vecotrLayer, {
+        onSelect: function (feature) {
+            //选中要素操作
+        },
+        onUnselect: function (feature) {
+            //未选中要素操作
+        },
+        callbacks: {
+            dblclick: function (feature) {
+                //双击逻辑回调
+            }
+        },
+        hover: false,
+        repeat: false
+    });
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation(),
+            new SuperMap.Control.LayerSwitcher()
+            , drawPoint, drawLine, drawPolygon, selectCtrl, modifyCtrl]
+    });
+    layer = new SuperMap.Layer.CloudLayer();
+    addLayer();
+    //layer.events.on({"layerInitialized":addLayer});
+    vecotrLayer.style = {
+        fillColor: "blue",
+        fillOpacity: 1,
+        hoverFillColor: "white",
+        hoverFillOpacity: 0.8,
+        strokeColor: "#ee9900",
+        strokeOpacity: 1,
+        strokeWidth: 1,
+        strokeLinecap: "round",
+        strokeDashstyle: "solid",
+        hoverStrokeColor: "red",
+        hoverStrokeOpacity: 1,
+        hoverStrokeWidth: 0.2,
+        pointRadius: 6,
+        hoverPointRadius: 1,
+        hoverPointUnit: "%",
+        pointerEvents: "visiblePainted",
+        cursor: "inherit",
+        fontColor: "#000000",
+        labelAlign: "cm",
+        labelOutlineColor: "white",
+        labelOutlineWidth: 3
+    };
+    function addLayer() {
+
+        map.addLayers([layer, vecotrLayer]);
+        //显示地图范围
+        map.setCenter(new SuperMap.LonLat(0, 0), 0);
+    }
+    function draw_point() {
+        deactiveAll();
+        drawPoint.activate();
+
+    }
+    function draw_line() {
+        deactiveAll();
+        drawLine.activate();
+    }
+
+    function draw_polygon() {
+        deactiveAll();
+        drawPolygon.activate();
+    }
+    function deactiveAll() {
+        drawPoint.deactivate();
+        drawLine.deactivate();
+        drawPolygon.deactivate();
+        selectCtrl.deactivate();
+        modifyCtrl.deactivate();
+    }
+
+    function selectFeature() {
+        deactiveAll();
+        selectCtrl.activate();
+    }
+
+    function modifyFeature() {
+        deactiveAll();
+        modifyCtrl.activate();
+    }
+
+    function undo() {
+        modifyCtrl.undo();
+    }
+
+    function redo() {
+        modifyCtrl.redo();
+    }
+
+    function clearFeatures() {
+        deactiveAll();
+        vecotrLayer.removeAllFeatures();
+    }
+
+</script>
+</body>
+</html>

+ 157 - 0
public/supermap/examples/classic/controler_featureSnap.html

@@ -0,0 +1,157 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_featureSnap"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            left: 50px;
+            top: 10px;
+            text-align: center;
+            background: #FFF;
+            z-index: 1000;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.text_featureSnap"></h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <p></p>
+        <div align='right' class='button-group'>
+            <input type='button' id='switchSnap' class='btn btn-primary' data-i18n="[value]resources.text_input_value_closeSnap" onclick="switch_snap()"/>
+            <input type='button' id='btn2' class='btn btn-primary' data-i18n="[value]resources.text_input_value_addData" onclick="addData()"/>
+            <input type='button' id='btn3' class='btn btn-primary' data-i18n="[value]resources.text_input_value_clear" onclick="clearFeatures()"/>
+        </div>
+    </div>
+</div>
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layer, vector, modifyFeature, snapState = true, dataAdded = false,
+        switchSnap,
+        snap01,
+        url = host + "/iserver/services/map-world/rest/maps/World";
+    //新建矢量图层
+    vector = new SuperMap.Layer.Vector("vectorLayer");
+    //创建捕捉对象,第一个参数指的是需要进行捕捉的要素图层,后面两个参数分别是点要素和线要素的捕捉容限,第四个参数是附加参数
+
+    snap01 = new SuperMap.Snap([vector], 10, 10, {actived: true});
+    //矢量要素编辑控件
+    modifyFeature = new SuperMap.Control.ModifyFeature(vector);
+    modifyFeature.snap = snap01;
+
+    //定义layer图层,TiledDynamicRESTLayer:分块动态 REST 图层
+    layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {
+        transparent: true,
+        cacheEnabled: true
+    }, {maxResolution: "auto"});
+    switchSnap = document.getElementById("switchSnap");
+    //为图层初始化完毕添加addLayer()事件
+    layer.events.on({"layerInitialized": addLayer});
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.LayerSwitcher(),
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            }),
+            modifyFeature]
+    });
+    addData();
+
+    function addLayer() {
+        map.addLayers([layer, vector]);
+        map.setCenter(new SuperMap.LonLat(0, 0), 1);
+
+    }
+
+    function edit_feature() {
+        deactiveAll();
+        modifyFeature.activate();
+        snap01.on();
+        snapState = true;
+    }
+
+    function deactivate_snap_all() {
+        snapState = false;
+        snap01.off();
+    }
+
+    function activate_snap_all() {
+        snapState = true;
+        snap01.on();
+    }
+
+    function switch_snap() {
+        snapState ? switchSnap.value = resources.text_input_value_openSnap : switchSnap.value = resources.text_input_value_closeSnap;
+        snapState ? deactivate_snap_all() : activate_snap_all();
+    }
+
+    function deactiveAll() {
+        modifyFeature.deactivate();
+        deactivate_snap_all();
+    }
+
+    //移除图层要素
+    function clearFeatures() {
+        deactiveAll();
+        widgets.alert.clearAlert();
+        dataAdded = false;
+        vector.removeAllFeatures();
+    }
+
+    function addData() {
+        if (!dataAdded) {
+            //点数据
+            var point_data = [[-55, 34], [-90, -45], [44, -50], [100, 33], [94, 57]];
+            var point_features = [];
+            for (var i = 0, len = point_data.length; i < len; i++) {
+                var point = new SuperMap.Geometry.Point(point_data[i][0], point_data[i][1]);
+                var feature = new SuperMap.Feature.Vector(point);
+                point_features.push(feature);
+            }
+            //线数据
+            var line_data = [[113, 19], [107, -2], [92, 13], [90, 21], [82, 12], [74, 3], [64, 22], [52, 8], [71, 0], [91, 3]];
+            var points = [];
+            for (var i = 0, len = line_data.length; i < len; i++) {
+                var point = new SuperMap.Geometry.Point(line_data[i][0], line_data[i][1]);
+                points.push(point);
+            }
+            var line = new SuperMap.Geometry.LineString(points);
+            var line_feature = new SuperMap.Feature.Vector(line);
+            //面数据
+            var polygon_data = [[-16, 30], [-16, 0], [50, 0], [50, 30]];
+            var points = [];
+            for (var i = 0, len = polygon_data.length; i < len; i++) {
+                var point = new SuperMap.Geometry.Point(polygon_data[i][0], polygon_data[i][1]);
+                points.push(point);
+            }
+            var linearRing = new SuperMap.Geometry.LinearRing(points);
+            var polygon = new SuperMap.Geometry.Polygon([linearRing]);
+            var polygon_feature = new SuperMap.Feature.Vector(polygon);
+            point_features.push(line_feature);
+            point_features.push(polygon_feature);
+            vector.addFeatures(point_features);
+
+            dataAdded = true;
+        } else {
+            widgets.alert.showAlert(resources.msg_loadedData, true, 220);
+        }
+        edit_feature();
+    }
+
+</script>
+</body>
+</html>

+ 105 - 0
public/supermap/examples/classic/controler_geolocate.html

@@ -0,0 +1,105 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_geolocateControl"></title>
+    <style type="text/css">
+        .editPane {
+            position: absolute;
+            right: 50px;
+            top: 50px;
+            text-align: center;
+            background: #FFF;
+            z-index: 1000;
+        }
+    </style>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+
+<div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
+    <div class='panel-heading'>
+        <h5 class='panel-title text-center' data-i18n="resources.title_geolocateControl"></h5>
+    </div>
+    <div class='panel-body' id='params'>
+        <p></p>
+        <div align='center' class='button-group'>
+            <input type='button' id='btn' class='btn btn-primary' data-i18n="[value]resources.text_input_value_location" onclick="geoLocation()"/>
+        </div>
+    </div>
+</div>
+
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var map, layer, positionLayer,geolocate,
+        host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    url = host + "/iserver/services/map-china400/rest/maps/China";
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.ScaleLine(),
+            new SuperMap.Control.Zoom(),
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            })],
+        projection: "EPSG:3857"
+    });
+    //添加geo定位控件
+    geolocate = new SuperMap.Control.Geolocate({
+        bind: false,
+        geolocationOptions: {
+            enableHighAccuracy: false,
+            maximumAge: 0
+        },
+        eventListeners: {
+            "locationupdated": getGeolocationCompleted,
+            "locationfailed": getGeolocationFailed
+        }
+    });
+    //激活控件
+    map.addControl(geolocate);
+    //初始化图层
+    positionLayer = new SuperMap.Layer.Markers("Markers");
+    layer = new SuperMap.Layer.TiledDynamicRESTLayer("China", url, {
+        transparent: true,
+        cacheEnabled: true,
+        redirect: true
+    }, {maxResolution: "auto"});
+    layer.events.on({"layerInitialized": addLayer});
+
+    function addLayer() {
+        var center = new SuperMap.LonLat(11733502.481499, 4614406.969325);
+        map.addLayers([layer, positionLayer]);
+        map.setCenter(center, 4);
+    }
+
+    function geoLocation() {
+        if (!geolocate.active) {
+            geolocate.activate();
+        }
+        geolocate.getCurrentLocation();
+    }
+
+    //更新定位
+    function getGeolocationCompleted(event) {
+        var lonLat = new SuperMap.LonLat(event.point.x, event.point.y);
+        positionLayer.clearMarkers()
+        size = new SuperMap.Size(44, 33),
+            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
+            icon = new SuperMap.Icon("./images/marker.png", size, offset);
+        positionLayer.addMarker(new SuperMap.Marker(lonLat, icon));
+        map.setCenter(lonLat);
+    }
+    function getGeolocationFailed(event) {
+        widgets.alert.showAlert(resources.msg_geoLocate,false,350);
+    }
+
+
+</script>
+</body>
+</html>

+ 47 - 0
public/supermap/examples/classic/controler_layerswitcher.html

@@ -0,0 +1,47 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_layerSwitcher"></title>
+    <script type="text/javascript" src="../js/include-web.js"></script>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, worldLayer, layer;
+    var url = host + "/iserver/services/map-world/rest/maps/World";
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.Navigation({     //添加Navigation控件到map
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            }),
+            new SuperMap.Control.LayerSwitcher()
+        ], allOverlays: true
+    });
+
+    var options = {numZoomLevels: 12, useCanvas: false};
+    var bounds = new SuperMap.Bounds(-180, -90, 180, 90);
+    layer = new SuperMap.Layer.Image(        //image图层
+        'World_Day',
+        'images/Day.jpg',
+        bounds,
+        options
+    );
+    worldLayer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {transparent: true, cacheEnabled: true});   //获取World地图服务地址
+    worldLayer.events.on({"layerInitialized": addLayer});
+
+    function addLayer() {
+        map.addLayers([worldLayer, layer]);
+        map.setCenter(new SuperMap.LonLat(0, 0), 2);
+    }
+
+</script>
+</body>
+</html>

+ 51 - 0
public/supermap/examples/classic/controler_navigation.html

@@ -0,0 +1,51 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_navigation"></title>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layerWorld;
+    var url = host + "/iserver/services/map-world/rest/maps/World";
+
+    map = new SuperMap.Map("map", {
+        controls: [    //初始化Map类,添加控件到map
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {          //传给 DragPan 控件的属性
+                    enableKinetic: true    //设置使用拖拽动画,默认为false
+                },
+                autoActivate: true,        //添加到地图的控件是否自动生效,默认为true
+                documentDrag: true,        //允许拖拽地图,使地图能够平移到视图窗口外。默认为false
+                handleRightClicks: true,   //是否响应右键点击,默认为false
+                //zoomBoxEnabled:false,   //是否允许用户绘制缩放框,默认为true
+                zoomBoxKeyMask: 4,         //同时按下Alt时绘制缩放框,默认为SuperMap.Handler.MOD_SHIFT,默认值为1
+                //zoomWheelEnabled:false, //是否允许用户滑动鼠标滚轴缩放地图,默认为true
+                pinchZoomOptions: {        //传给 PinchZoom 控件的属性
+                    autoActivate: false    //将该类添加到地图上时,自动激活该控件,默认为true
+                }
+            })], allOverlays: true
+    },notice());
+    function notice() {
+        widgets.alert.showAlert(resources.msg_navigation,true,300,false,0.8);
+    }
+    layerWorld = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {
+        transparent: true,
+        cacheEnabled: true
+    }, {maxResolution: "auto"});   //获取图层服务地址
+    layerWorld.events.on({"layerInitialized": addLayer});
+    //将地图加入map
+    function addLayer() {
+        map.addLayer(layerWorld);
+        map.setCenter(new SuperMap.LonLat(0, 0), 2);
+    }
+</script>
+</body>
+</html>

+ 41 - 0
public/supermap/examples/classic/controler_overviewmap.html

@@ -0,0 +1,41 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_overviewmap"></title>
+    <script type="text/javascript" src="../js/include-web.js"></script>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layerWorld;
+    var url = host + "/iserver/services/map-world/rest/maps/World";
+
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            })]
+    });
+    //初始化鹰眼控件类
+    overviewmap = new SuperMap.Control.OverviewMap();
+    //属性minRectSize:鹰眼范围矩形边框的最小的宽度和高度。默认为8pixels
+    overviewmap.minRectSize = 20;
+    layerWorld = new SuperMap.Layer.TiledDynamicRESTLayer("World", url);     //获取图层服务地址
+    layerWorld.events.on({"layerInitialized": addLayer});
+    //添加地图图层、鹰眼控件到map
+    function addLayer() {
+        map.addLayers([layerWorld]);
+        map.addControl(overviewmap);
+        map.setCenter(new SuperMap.LonLat(118, 40), 6);
+    }
+</script>
+</body>
+</html>

+ 54 - 0
public/supermap/examples/classic/controler_panzoombar.html

@@ -0,0 +1,54 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_panzoombar"></title>
+    <script type="text/javascript" src="../js/include-web.js"></script>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layerWorld;
+    var url = host + "/iserver/services/map-world/rest/maps/World";
+
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            })]
+    });
+
+    //初始化复杂缩放控件类
+    panzoombar = new SuperMap.Control.PanZoomBar();
+    // 是否固定缩放级别为[0,16]之间的整数,默认为false
+    panzoombar.forceFixedZoomLevel = true;
+    //是否显示滑动条,默认值为false
+    panzoombar.showSlider = true;
+    /*点击箭头移动地图时,所移动的距离占总距离(上下移动的总距离为高度,左右移动的总距离为宽度)
+     的百分比,默认为null。 例如:如果slideRatio 设为0.5, 则垂直上移地图半个地图高度.*/
+    panzoombar.slideRatio = 0.5;
+    //设置缩放条滑块的高度,默认为120
+    panzoombar.sliderBarHeight = 180;
+    //设置缩放条滑块的宽度,默认为13
+    panzoombar.sliderBarWidth = 17;
+    map.addControl(panzoombar);
+    layerWorld = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {
+        transparent: true,
+        cacheEnabled: true
+    }, {maxResolution: "auto"});    //获取图层服务地址
+    layerWorld.events.on({"layerInitialized": addLayer});
+    //添加地图图层、控件PanZoomBar到map
+    function addLayer() {
+        map.addLayer(layerWorld);
+        map.setCenter(new SuperMap.LonLat(0, 0), 0);
+    }
+</script>
+</body>
+</html>

+ 42 - 0
public/supermap/examples/classic/controler_scaleline.html

@@ -0,0 +1,42 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_scaleline"></title>
+    <script type="text/javascript" src="../js/include-web.js"></script>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layerWorld;
+    var url = host + "/iserver/services/map-world/rest/maps/World";
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.Navigation({
+                dragPanOptions: {
+                    enableKinetic: true
+                }
+            })]
+    });
+    //初始化比例尺控件类
+    scaleline = new SuperMap.Control.ScaleLine();
+    //是否使用依地量算,默认为false。推荐地图投影为EPSG:4326时设置为false;使用EPSG:900913时设置为true。为true时,比例值按照当前视图中心的水平线计算。
+    scaleline.geodesic = true;
+
+    layerWorld = new SuperMap.Layer.TiledDynamicRESTLayer("World", url);    //获取图层服务地址
+    layerWorld.events.on({"layerInitialized": addLayer});
+
+    //添加地图图层、比例尺控件到map
+    function addLayer() {
+        map.addLayers([layerWorld]);
+        map.addControl(scaleline);
+        map.setCenter(new SuperMap.LonLat(118, 40), 6);
+    }
+</script>
+</body>
+</html>

+ 39 - 0
public/supermap/examples/classic/controler_zoom.html

@@ -0,0 +1,39 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_zoom"></title>
+    <script type="text/javascript" src="../js/include-web.js"></script>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layerWorld;
+    var url = host + "/iserver/services/map-world/rest/maps/World";
+    map = new SuperMap.Map("map", {
+        controls: []
+    });
+
+    //初始化简易缩放控件类
+    zoom = new SuperMap.Control.Zoom();
+    //加载控件
+    map.addControl(zoom);
+    //获取图层服务地址
+    layerWorld = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {
+        transparent: true,
+        cacheEnabled: true
+    }, {maxResolution: "auto"});
+    layerWorld.events.on({"layerInitialized": addLayer});
+    //添加地图图层、缩放控件到map
+    function addLayer() {
+        map.addLayer(layerWorld);
+        map.setCenter(new SuperMap.LonLat(0, 0), 2);
+    }
+</script>
+</body>
+</html>

+ 48 - 0
public/supermap/examples/classic/controler_zoomBox.html

@@ -0,0 +1,48 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title data-i18n="resources.title_zoomBox"></title>
+</head>
+<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
+<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
+<script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
+<script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
+<script type="text/javascript">
+    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
+    var map, layerWorld;
+    var url = host + "/iserver/services/map-world/rest/maps/World";
+    map = new SuperMap.Map("map", {
+        controls: [
+            new SuperMap.Control.Navigation()]
+    }, notice());
+    function notice() {
+        widgets.alert.showAlert(resources.msg_zoomBox,true,300,false,0.8);
+    }
+    //初始化拉框缩放控件类
+    zoombox = new SuperMap.Control.ZoomBox({
+        keyMask: SuperMap.Handler.MOD_SHIFT, "autoActivate": true    //设置keyMask属性,使同时按住Shift绘矩形框
+    });
+    //是否将该控件设置为拉框缩小,默认为false,拉框放大
+    zoombox.out = false;
+    map.addControl(zoombox);//添加控件
+    //获取图层服务地址
+    layerWorld = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {
+        transparent: true,
+        cacheEnabled: true
+    }, {maxResolution: "auto"});
+
+    layerWorld.events.on({"layerInitialized": addLayer});
+
+    //添加地图图层、拉框缩放控件到map
+    function addLayer() {
+        map.addLayer(layerWorld);
+        map.setCenter(new SuperMap.LonLat(0, 0), 1);
+    }
+
+</script>
+</body>
+</html>

File diff suppressed because it is too large
+ 324 - 0
public/supermap/examples/classic/data/animationExtendLineData.js


File diff suppressed because it is too large
+ 73 - 0
public/supermap/examples/classic/data/animationLineData.js


File diff suppressed because it is too large
+ 38 - 0
public/supermap/examples/classic/data/animationPolygonData.js


File diff suppressed because it is too large
+ 2 - 0
public/supermap/examples/classic/data/sampleData1.js


File diff suppressed because it is too large
+ 2 - 0
public/supermap/examples/classic/data/sampleData2.js


File diff suppressed because it is too large
+ 2 - 0
public/supermap/examples/classic/data/sampleData3.js


File diff suppressed because it is too large
+ 2 - 0
public/supermap/examples/classic/data/sampleData4.js


File diff suppressed because it is too large
+ 2 - 0
public/supermap/examples/classic/data/sampleData5.js


File diff suppressed because it is too large
+ 2 - 0
public/supermap/examples/classic/data/sampleData6.js


File diff suppressed because it is too large
+ 2 - 0
public/supermap/examples/classic/data/sampleData7.js


File diff suppressed because it is too large
+ 2 - 0
public/supermap/examples/classic/data/sampleData8.js


+ 63 - 0
public/supermap/examples/classic/editor-wechat.html

@@ -0,0 +1,63 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8" />
+    <title data-i18n="resources.title_editorClassic"></title>
+    <link rel="shortcut icon" type="image/x-icon" href="../../web/img/favicon.ico" />
+    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport" />
+    <script
+      type="text/javascript"
+      include="jquery,bootstrap,template,admin-lte,ace,i18n"
+      src="../js/include-web.js"
+    ></script>
+    <link rel="stylesheet" href="../css/common.css" />
+    <link rel="stylesheet" href="../css/header.css" />
+    <link rel="stylesheet" href="../css/sideBar.css" />
+    <link rel="stylesheet" href="../css/editor.css" />
+    <script type="text/javascript" src="../js/utils.js"></script>
+    <style>
+      /* 删除头部和侧边栏 */
+      header {
+        display: none;
+      }
+      aside {
+        display: none;
+      }
+      .content-wrapper {
+        margin: 0px !important;
+      }
+      .ace_layer .ace_gutter-layer {
+        width: 40px !important;
+      }
+      .ace_gutter-cell {
+        padding-left: 0px;
+      }
+    </style>
+  </head>
+  <body class="hold-transition skin-blue sidebar-mini sidebar-collapse">
+    <!-- ./wrapper -->
+    <div class="wrapper"></div>
+    <script>
+      $('.wrapper').load('../template/editor.html', function() {
+        var navigation = {
+          nav: {
+            title: 'SuperMap iClient 10i(2020)',
+            path: '../../web/',
+            isLocal: window.isLocal
+          }
+        };
+        utils.loadTemplate('.icl-header', '../template/header.html', navigation);
+        $body = $('body');
+        $body.append("<script type='text/javascript' src='./config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/localization.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/common.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/sidebar.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/editor.js'><\/script>");
+      });
+    </script>
+    <!-- ./wrapper end-->
+  </body>
+</html>

+ 48 - 0
public/supermap/examples/classic/editor.html

@@ -0,0 +1,48 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title data-i18n="resources.title_editorClassic"></title>
+    <link rel="shortcut icon" type="image/x-icon" href="../../web/img/favicon.ico"/>
+    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
+    <script type="text/javascript"  include="jquery,bootstrap,template,admin-lte,ace,i18n"
+            src="../js/include-web.js"></script>
+    <link rel="stylesheet" href="../css/common.css">
+    <link rel="stylesheet" href="../css/header.css">
+    <link rel="stylesheet" href="../css/sideBar.css">
+    <link rel="stylesheet" href="../css/editor.css">
+    <script type="text/javascript" src="../js/utils.js"></script>
+</head>
+<body class="hold-transition skin-blue sidebar-mini sidebar-collapse">
+
+<!-- ./wrapper -->
+<div class="wrapper"></div>
+<script>
+    $('.wrapper').load("../template/editor.html", function () {
+        var navigation = {
+            nav: {
+                title: "SuperMap iClient 10i(2020)",
+                path: "../../web/",
+                isLocal: window.isLocal
+            }
+        };
+        utils.loadTemplate(".icl-header", "../template/header.html", navigation);
+        $body = $('body');
+        $body.append("<script type='text/javascript' src='../openlayers/config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../mapboxgl/config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../leaflet/config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../component/config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='./config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/localization.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/common.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/sidebar.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/editor.js'><\/script>");
+    })
+</script>
+<!-- ./wrapper end-->
+
+</body>
+</html>

+ 87 - 0
public/supermap/examples/classic/examples-wechat.html

@@ -0,0 +1,87 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <title data-i18n="resources.title_examplesClassic"></title>
+    <link rel="shortcut icon" type="image/x-icon" href="../../web/img/favicon.ico" />
+    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport" />
+    <script
+      type="text/javascript"
+      include="jquery,bootstrap,template,admin-lte,jquery.scrollto,i18n,lazyload"
+      src="../js/include-web.js"
+    ></script>
+    <link rel="stylesheet" href="../css/common.css" />
+    <link rel="stylesheet" href="../css/header.css" />
+    <link rel="stylesheet" href="../css/sideBar.css" />
+    <link rel="stylesheet" href="../css/examples.css" />
+    <script type="text/javascript" src="../js/utils.js"></script>
+    <style>
+      /* 删除头部和侧边栏 */
+      header {
+        display: none;
+      }
+      aside {
+        display: none;
+      }
+      .content-wrapper {
+        margin: 0px;
+      }
+      .examples-container {
+        margin-top: 0px;
+      }
+      #charts-list {
+        padding: 5px;
+      }
+      .category,
+      .box.box-default,
+      .box-body {
+        padding: 0;
+      }
+      .box-header {
+        padding: 2px;
+      }
+      .col-xs-6 {
+        padding: 0 5px 2px;
+      }
+      .category-title {
+        font-size: 18px;
+      }
+      .box-header > .fa,
+      .box-header > .glyphicon,
+      .box-header > .ion,
+      .box-header .box-title {
+        font-size: 15px;
+        margin-left: -15px;
+      }
+    </style>
+  </head>
+  <body class="hold-transition skin-blue sidebar-mini" data-spy="scroll" data-target="#scrollSpy">
+    <!-- ./wrapper -->
+    <div class="wrapper"></div>
+    <script>
+      $('.wrapper').load('../template/example.html', function() {
+        var navigation = {
+          nav: {
+            title: 'SuperMap iClient 10i(2020)',
+            path: '../../web/',
+            isLocal: window.isLocal
+          }
+        };
+        utils.loadTemplate('.icl-header', '../template/header.html', navigation);
+
+        $body = $('body');
+        $body.append("<script type='text/javascript' src='./config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/localization.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/common.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/sidebar.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/example.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/wechat.js'><\/script>");
+      });
+    </script>
+    <!-- ./wrapper end-->
+  </body>
+</html>

+ 53 - 0
public/supermap/examples/classic/examples.html

@@ -0,0 +1,53 @@
+<!--********************************************************************
+* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
+*********************************************************************-->
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <title data-i18n="resources.title_examplesClassic"></title>
+    <link rel="shortcut icon" type="image/x-icon" href="../../web/img/favicon.ico"/>
+    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
+    <script type="text/javascript" 
+            include="jquery,bootstrap,template,admin-lte,jquery.scrollto,i18n,lazyload"
+            src="../js/include-web.js"></script>
+    <link rel="stylesheet" href="../css/common.css">
+    <link rel="stylesheet" href="../css/header.css">
+    <link rel="stylesheet" href="../css/sideBar.css">
+    <link rel="stylesheet" href="../css/examples.css">
+    <script type="text/javascript" src="../js/utils.js"></script>
+</head>
+<body class="hold-transition skin-blue sidebar-mini" data-spy="scroll" data-target="#scrollSpy">
+
+<!-- ./wrapper -->
+<div class="wrapper"></div>
+<script>
+    $('.wrapper').load("../template/example.html", function () {
+        var navigation = {
+            nav: {
+                title: "SuperMap iClient 10i(2020)",
+                path: "../../web/",
+                isLocal: window.isLocal
+            }
+        };
+        utils.loadTemplate(".icl-header", "../template/header.html", navigation);
+
+        $body = $('body');
+        $body.append("<script type='text/javascript' src='../openlayers/config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../mapboxgl/config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../leaflet/config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../component/config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='./config.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/localization.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/common.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/sidebar.js'><\/script>");
+        $body.append("<script type='text/javascript' src='../js/example.js'><\/script>");
+        utils.loadTemplate(".icl-footer", "../template/footer.html", navigation);
+    });
+</script>
+<!-- ./wrapper end-->
+
+
+</body>
+</html>

BIN
public/supermap/examples/classic/images/BasicCell/1001.png


BIN
public/supermap/examples/classic/images/BasicCell/1003.png


BIN
public/supermap/examples/classic/images/BasicCell/1004.png


BIN
public/supermap/examples/classic/images/BasicCell/1013.png


BIN
public/supermap/examples/classic/images/BasicCell/1014.png


BIN
public/supermap/examples/classic/images/BasicCell/1016.png


BIN
public/supermap/examples/classic/images/BasicCell/1017.png


BIN
public/supermap/examples/classic/images/BasicCell/1019.png


BIN
public/supermap/examples/classic/images/BasicCell/1022.png


BIN
public/supermap/examples/classic/images/BasicCell/1023.png


BIN
public/supermap/examples/classic/images/BasicCell/1024.png


BIN
public/supermap/examples/classic/images/BasicCell/1025.png


BIN
public/supermap/examples/classic/images/BasicCell/1026.png


BIN
public/supermap/examples/classic/images/BasicCell/1028.png


BIN
public/supermap/examples/classic/images/BasicCell/24.png


BIN
public/supermap/examples/classic/images/BasicCell/26.png


BIN
public/supermap/examples/classic/images/BasicCell/28.png


BIN
public/supermap/examples/classic/images/BasicCell/29.png


BIN
public/supermap/examples/classic/images/BasicCell/31.png


BIN
public/supermap/examples/classic/images/BasicCell/32.png


BIN
public/supermap/examples/classic/images/BasicCell/320.png


BIN
public/supermap/examples/classic/images/BasicCell/321.png


BIN
public/supermap/examples/classic/images/BasicCell/34.png


BIN
public/supermap/examples/classic/images/BasicCell/350.png


BIN
public/supermap/examples/classic/images/BasicCell/360.png


BIN
public/supermap/examples/classic/images/BasicCell/370.png


+ 0 - 0
public/supermap/examples/classic/images/BasicCell/380.png


Some files were not shown because too many files changed in this diff