GraphicsLayer 与 FeatureLayer

GraphicsLayer和FeatureLayer是ArcGIS中的两种图层类型。GraphicsLayer是内存中的图层,由人为创建的Graphic组成,包含Geometry、Symbol和Attributes。而FeatureLayer是从ArcGIS Server服务读取数据,拥有URL属性,自动填充Graphic的Geometry和Attributes,适用于显示服务图层的要素信息。
摘要由CSDN通过智能技术生成

结构树:

 |–TiledMapServiceLayer
  |       |–ArcGISTiledMapServiceLayer

  |–DynamicLayer
  |       |–DynamicMapServiceLayer
  |                 |– ArcGISDynamicMapServiceLayer
  |                 |–ArcGISImageServiceLayer
  |                 |–GPResultImageLayer
  |– GraphicsLayer
  |       |– FeatureLayer
  |–ElementLayer 

 Layer最基本的基类,

ArcGISTiledMapServiceLayer和ArcGISDynamicMapServiceLaye

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来给你提供一份代码示例,实现你所需的功能: ```javascript require([ "esri/Map", "esri/views/MapView", "esri/layers/FeatureLayer", "esri/Graphic", "esri/geometry/geometryEngine", "esri/geometry/Polygon", "esri/geometry/Extent", "esri/layers/GraphicsLayer", "esri/widgets/Draw" ], function(Map, MapView, FeatureLayer, Graphic, geometryEngine, Polygon, Extent, GraphicsLayer, Draw) { // 创建地图 var map = new Map({ basemap: "streets" }); // 创建地图视图 var view = new MapView({ container: "viewDiv", map: map, center: [-118.80500, 34.02700], // 设置地图中心点 zoom: 13 // 设置缩放级别 }); // 创建 FeatureLayer var featureLayer = new FeatureLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/2" }); // 添加 FeatureLayer 到地图 map.add(featureLayer); // 创建一个 GraphicsLayer,用于存储符合要求的要素 var graphicsLayer = new GraphicsLayer(); map.add(graphicsLayer); // 创建 Draw 工具 var draw = new Draw({ view: view }); // 创建多边形按钮 var polygonButton = document.createElement("button"); polygonButton.innerHTML = "绘制多边形"; polygonButton.addEventListener("click", function() { drawPolygon(); }); view.ui.add(polygonButton, "top-right"); // 创建矩形按钮 var rectangleButton = document.createElement("button"); rectangleButton.innerHTML = "绘制矩形"; rectangleButton.addEventListener("click", function() { drawRectangle(); }); view.ui.add(rectangleButton, "top-right"); // 绘制多边形 function drawPolygon() { // 清空 GraphicsLayer graphicsLayer.removeAll(); // 设置 Draw 工具为多边形 draw.active = "polygon"; // 监听 draw-end 事件 draw.on("draw-end", function(event) { // 获取用户绘制的多边形 var polygon = new Polygon(event.geometry); // 遍历 FeatureLayer 中的要素 featureLayer.queryFeatures().then(function(results) { results.features.forEach(function(feature) { // 判断要素是否包含在用户绘制的多边形内部 if (geometryEngine.contains(polygon, feature.geometry)) { // 将符合要求的要素添加到 GraphicsLayergraphicsLayer.add(new Graphic(feature.geometry, null, feature.attributes)); } }); }); }); } // 绘制矩形 function drawRectangle() { // 清空 GraphicsLayer graphicsLayer.removeAll(); // 设置 Draw 工具为矩形 draw.active = "rectangle"; // 监听 draw-end 事件 draw.on("draw-end", function(event) { // 获取用户绘制的矩形 var extent = new Extent(event.geometry); var polygon = Polygon.fromExtent(extent); // 遍历 FeatureLayer 中的要素 featureLayer.queryFeatures().then(function(results) { results.features.forEach(function(feature) { // 判断要素是否包含在用户绘制的矩形内部 if (geometryEngine.contains(polygon, feature.geometry)) { // 将符合要求的要素添加到 GraphicsLayergraphicsLayer.add(new Graphic(feature.geometry, null, feature.attributes)); } }); }); }); } }); ``` 这个代码示例创建了一个地图视图,加载了一个包含多个多边形要素的 FeatureLayer,并提供了两个按钮,用于绘制多边形和矩形。当用户绘制完形状后,代码会判断 FeatureLayer 中的每个要素是否包含在用户绘制的形状内部,如果是,则将要素添加到一个 GraphicsLayer 中,并将其突出显示。同时,代码还会输出符合要求的要素的属性信息。 希望这个代码示例能够帮助到你。如果你有任何问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值