arcgis 4 与deckgl 整合 (二)
针对deckgl TripsLayer
我们构建采集器,目的是支持多种数据类型到 TripsLayer, 并且支持arcgis 服务
-
const axios = require('axios')
-
-
export default class TripsLayerParser {
-
static getDataFromUrl(url: string) {
-
return new Promise((resolve => {
-
const queryUrl = `${url}/query?where=1%3D1&text=&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=%5B%5D&returnGeometry=true&returnTrueCurves=false&maxAllowableOffset=&geometryPrecision=&outSR=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&returnDistinctValues=false&resultOffset=&resultRecordCount=&queryByDistance=&returnExtentsOnly=false&datumTransformation=¶meterValues=&rangeValues=&f=geojson`;
-
axios.get(queryUrl).then((r: any) => {
-
let data = this.getTimestampFromGeoJson(r.data);
-
resolve(data);
-
});
-
}));
-
}
-
-
static getDataFromJsonUrl(url: string) {
-
return new Promise((resolve => {
-
axios.get(url).then((r: any) => {
-
let data = this.getTimestampFromGeoJson(r.data);
-
resolve(data);
-
});
-
}));
-
}
-
-
static getDataFromArray(array: any) {
-
return this.getTimestampFromArray(array);
-
}
-
-
private static getTimestampFromArray(lines: any) {
-
let data: any = [];
-
lines.forEach((line: any) => {
-
data.push({
-
path: line.geometry,
-
timestamps: this.getRandomTimestamp(line.geometry.length)
-
});
-
});
-
return data;
-
}
-
-
private static getTimestampFromGeoJson(dataArray: any) {
-
let lines = dataArray.features;
-
-
let data: any = [];
-
lines.forEach((line: any) => {
-
if (line.geometry.type === "MultiLineString") {
-
for (let item of line.geometry.coordinates) {
-
data.push({
-
path: item,
-
timestamps: this.getRandomTimestamp(item.length)
-
});
-
}
-
} else {
-
data.push({
-
path: line.geometry.coordinates,
-
timestamps: this.getRandomTimestamp(line.geometry.coordinates.length)
-
});
-
}
-
});
-
return data;
-
}
-
-
private static getRandomTimestamp(length: number) {
-
let timestamps: any = [];
-
for (let i = 0; i < length; i++) {
-
timestamps.push(i * 100);
-
}
-
return timestamps;
-
}
-
}
封装的
```javascript
import BaseLayer from "./BaseLayer";
import TripsLayerParser from "./TripsLayerParser";
import ColorManager from "./ColorManager";
const {TripsLayer} = require("@deck.gl/geo-layers");
export default class DeckTripsLayer extends BaseLayer {
view: any;
options: any;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律