一、概述
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有三种方法
-
url
const layer = new FeatureLayer({ // URL to the service url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0" });
-
item id
const lyr = new FeatureLayer({ portalItem: { // autocasts as new PortalItem() id: "caa9bd9da1f4487cb4989824053bb847" } // the first layer in the service is returned });
-
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