ArcGIS API For JavaScript - 图层要素缓冲

柔光的暖阳◎ 2021-07-25 16:02 577阅读 0赞

详情请参考 ArcGIS API For JavaScript 官网:https://developers.arcgis.com/javascript/3/jssamples/layers_kmlbuffer.html

  1. @{
  2. Layout = null;
  3. }
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta name="viewport" content="width=device-width" />
  8. <title>title</title>
  9. @*加载高德地图*@
  10. <script type="text/javascript">
  11. var dojoConfig = {
  12. async: true,
  13. parseOnLoad: true,
  14. packages: [{
  15. name: "js",
  16. location: location.pathname.replace(/\/[^/]*$/, '') + '/js'
  17. }]
  18. };
  19. </script>
  20. <script src="~/Scripts/jquery-3.3.1.js"></script>
  21. <script src="~/Scripts/init.js"></script>
  22. <link href="~/Content/esri.css" rel="stylesheet" />
  23. <link href="~/Content/tundra.css" rel="stylesheet" />
  24. <style>
  25. * {
  26. margin: 0;
  27. padding: 0;
  28. }
  29. html, body, #map {
  30. width: 100%;
  31. height: 100%;
  32. position: absolute;
  33. }
  34. .list {
  35. width: 12%;
  36. background-color: rgba(22, 59, 90, 0.8);
  37. color: #fff;
  38. position: absolute;
  39. }
  40. select {
  41. width: 90%;
  42. margin: 10px 5%;
  43. border-radius: 5px;
  44. height: 26px;
  45. }
  46. </style>
  47. <script>
  48. var map;
  49. var findTask, findParams, findParams2;
  50. var urlMap = 'http://xxx:6080/arcgis/rest/services/njcs/MapServer'
  51. var stationUrl = 'http://xxx:6080/arcgis/rest/services/njcs/MapServer/0'
  52. var lineUrl = 'http://xxx:6080/arcgis/rest/services/njcs/MapServer/1'
  53. require(["esri/map", "js/gaodeLayer", "esri/layers/ArcGISDynamicMapServiceLayer", "esri/tasks/GeometryService", "esri/tasks/BufferParameters", "dojo/domReady!"],
  54. function (Map, gaodeLayer, ArcGISDynamicMapServiceLayer,
  55. GeometryService, BufferParameters) {
  56. /* code goes here */
  57. map = new Map("map", {
  58. center: [120.075892, 31.526844],
  59. zoom: 7,//缩放等级
  60. logo: false, //logo
  61. slider: false, //缩小按钮
  62. });
  63. var serverLayer = new ArcGISDynamicMapServiceLayer(urlMap, { "opacity": 0.6 });
  64. var baselayer1 = new gaodeLayer();//默认加载矢量 new gaodeLayer({layertype:"road"});也可以
  65. map.addLayer(baselayer1);//添加高德地图到map容器
  66. map.addLayer(serverLayer);
  67. });
  68. </script>
  69. </head>
  70. <body>
  71. <div id="map"></div>
  72. <div class="list">
  73. <select id="selected" onchange="changeSelect()"></select>
  74. </div>
  75. </body>
  76. </html>
  77. <script>
  78. window.onload = function () {
  79. var queryTask = new esri.tasks.QueryTask(lineUrl);
  80. var query = new esri.tasks.Query();
  81. query.where = ("OBJECTID<4000");
  82. query.returnGeometry = true;
  83. query.outFields = ["*"];
  84. queryTask.execute(query, addLine);
  85. }
  86. function addLine(featureSet) {
  87. var feature = featureSet.features;
  88. var inner = "";
  89. var temp = [];
  90. for (var i = 0; i < feature.length; i++) {
  91. if (temp.indexOf(feature[i].attributes.linename) == -1 && feature[i].attributes.linename != "") {
  92. temp.push(feature[i].attributes.linename)
  93. inner += "<option>" + feature[i].attributes.linename +"</option>"
  94. }
  95. }
  96. document.getElementById("selected").innerHTML = "<option>---请选择---</option>" + inner;
  97. }
  98. function changeSelect() {
  99. var line = $("#selected option:selected").text();
  100. var queryTask = new esri.tasks.QueryTask(lineUrl);
  101. var query = new esri.tasks.Query();
  102. query.where = ("linename = '" + line +"'");
  103. query.returnGeometry = true;
  104. query.outFields = ["*"];
  105. queryTask.execute(query, centerLine);
  106. }
  107. function centerLine(featureSet) {
  108. console.log(featureSet)
  109. var feature = featureSet.features;
  110. for (var i = 0; i < feature.length; i++) {
  111. var graphic = feature[i];
  112. switch (graphic.geometry.type) {
  113. case "point":
  114. var symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_CIRCLE, 15, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 1), new dojo.Color([0, 255, 0, 0.25]));
  115. break;
  116. case "polyline":
  117. var symbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 1);
  118. break;
  119. case "polygon":
  120. var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 255, 0, 0.25]));
  121. break;
  122. }
  123. graphic.setSymbol(symbol);
  124. map.graphics.add(graphic);
  125. //开始缓冲
  126. var sGeometry = graphic.geometry;
  127. //创建几何服务
  128. var gsvc = new esri.tasks.GeometryService("http://xxx:6080/arcgis/rest/services/Utilities/Geometry/GeometryServer");
  129. var params = new esri.tasks.BufferParameters();
  130. //要缓冲的图形
  131. params.geometries = [sGeometry];
  132. //缓冲的距离
  133. params.distances = [500];
  134. //缓冲的距离单位
  135. params.unit = esri.tasks.GeometryService.UNIT_METER;
  136. //params.bufferSpatialReference = new esri.SpatialReference({ wkid: 32662 });
  137. params.outSpatialReference = map.spatialReference;
  138. //开始缓冲
  139. gsvc.buffer(params, function (result) {
  140. var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0, 0.65]), 2), new dojo.Color([255, 0, 0, 0.35]));
  141. //创建Graphic
  142. var graphic = new esri.Graphic(result[0], symbol)
  143. //将每一个结果都放在map中
  144. map.graphics.add(graphic)
  145. });
  146. }
  147. if (sGeometry.type == "point") {
  148. //var hsymbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE, 15, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0,0,255]),2), new dojo.Color([255,0,0,0.25]));
  149. //sGrapphic.setSymbol(hsymbol);
  150. var cPoint = new esri.geometry.Point();
  151. cPoint.x = sGeometry.x;
  152. cPoint.y = sGeometry.y;
  153. map.centerAt(cPoint);
  154. }
  155. else {
  156. var sExtent = sGeometry.getExtent();
  157. map.setExtent(sExtent);
  158. }
  159. }
  160. </script>

发表评论

表情:
评论列表 (有 0 条评论,577人围观)

还没有评论,来说两句吧...

相关阅读