arcgis API参考(Reference)之 FeatureLayer

一、概述

import FeatureLayer from “@arcgis/core/layers/FeatureLayer”;
ES模块最新的引入方式,对vue这鸡儿很友好
支持Map Service or Feature Service

layer = new FeatureLayer({
  id: layerid, //图层唯一ID
  title: layerItem.name, //图层名称
  url: layerItem.url, //REST地图服务的URL
  visible: layerItem.visible,
  outFields: ["*"],
});

this.map = new Map({
  layers: [layer ],
});
let centerPoint = new Point({
  x: 114.395879,
  y: 30.503787,
  spatialReference: 4490,
});
this.mapView = new MapView({
  container: containerId,
  map: this.map,
  center: centerPoint,
  padding: { top: 110 },
});

二、创建一个FeatureLayer有三种方法

  1. url

    const layer = new FeatureLayer({
      // URL to the service
      url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0"
    });
    
  2. item id

    const lyr = new FeatureLayer({
      portalItem: {  // autocasts as new PortalItem()
        id: "caa9bd9da1f4487cb4989824053bb847"
      }  // the first layer in the service is returned
    }); 
    
    
  3. source

    从客户端特性创建一个特性层时,objectId字段必须在fields数组中或通过objectIdField设置。
    可以在下面的例子上添加字段属性,但是不可以删除,这个建议不要用,这就相当于前端自己发了个简易的地图服务

    var features = [
     {
       geometry: {
         type: "point",
         x: -100,
         y: 38
       },
       attributes: {
         ObjectID: 1,
         DepArpt: "KATL",
         MsgTime: Date.now(),
         FltId: "UAL1"
       }
     },
     ...
    ];
    
    // geometryType and spatialReference of the layer
    // will be inferred from the first feature in the array
    // if it has a geometry.
    var layer = new FeatureLayer({
      source: features,  // autocast as a Collection of new Graphic()
      objectIdField: "ObjectID"
    });
    

三、查询

view.whenLayerView(featureLayer).then(function (layerView) {
  layerView.watch("updating", function (value) {
    if (!value) {
      // wait for the layer view to finish updating

      // query all the features available for drawing.
      layerView
        .queryFeatures({
          geometry: view.extent,
          returnGeometry: true,
          orderByFields: ["GEOID"]
        })
        .then(function (results) {
        })
        .catch(function (error) {
          console.error("query failed: ", error);
        });
    }
  });
});

四、数据可视化(render属性)

layer.renderer = {
  type: "simple",  // autocasts as new SimpleRenderer()
  symbol: {
    type: "simple-marker",  // autocasts as new SimpleMarkerSymbol()
    size: 6,
    color: "black",
    outline: {  // autocasts as new SimpleLineSymbol()
      width: 0.5,
      color: "white"
    }
  }
};

建议:如果可以在所有的图层添加title和id

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值