You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:将GPS坐标数组拆分为10批的TypeScript/JavaScript实现

适配Azure Maps lineLayer的坐标数组拆分方案

核心逻辑

将任意长度的坐标数组拆分为最多10批,每批基础大小为总长度 ÷ 10取整,最后一批自动容纳剩余的所有坐标项;之后提取每批的第一个点用于渐变线路绘制。

TypeScript实现示例

// 定义坐标点类型(可根据实际结构调整)
interface Point {
  latitude: number;
  longitude: number;
  temperature: number;
}

// 拆分坐标数组为最多10批的函数
function splitPointsIntoChunks(points: Point[]): Point[][] {
  const chunkCount = 10;
  const chunkSize = Math.floor(points.length / chunkCount);
  const chunks: Point[][] = [];

  for (let i = 0; i < chunkCount; i++) {
    const startIndex = i * chunkSize;
    // 最后一批取从startIndex到数组末尾的所有项
    const endIndex = i === chunkCount - 1 ? points.length : startIndex + chunkSize;
    chunks.push(points.slice(startIndex, endIndex));
  }

  // 过滤掉空数组(当总长度小于10时会出现)
  return chunks.filter(chunk => chunk.length > 0);
}

// 主逻辑处理
this.finalTemp = 75;
const points: Point[] = []; // 替换为你的GPS返回坐标数组

// 拆分坐标数组
const pointChunks = splitPointsIntoChunks(points);

// 提取每批第一个点并计算进度值
const gradientPoints = pointChunks.map(chunk => {
  const firstPoint = chunk[0];
  const progressValue = firstPoint.temperature / this.finalTemp;
  return {
    ...firstPoint,
    progressValue
    // 这里可添加颜色生成逻辑,比如根据progressValue生成渐变颜色
  };
});

// 后续使用gradientPoints绘制Azure Maps lineLayer
// 示例:构建渐变线路数据源(根据Azure Maps要求调整)
const lineData = {
  type: 'Feature',
  geometry: {
    type: 'LineString',
    coordinates: gradientPoints.map(p => [p.longitude, p.latitude])
  },
  properties: {
    // 可添加渐变相关属性,比如颜色数组
    strokeColors: gradientPoints.map(p => `rgba(255, ${Math.floor((1 - p.progressValue) * 255)}, 0, 1)`)
  }
};

代码说明

  1. 拆分逻辑:通过Math.floor(points.length / 10)计算每批基础大小,最后一批直接取到数组末尾,确保总批数不超过10,且自动容纳剩余项
  2. 空批过滤:当坐标总数小于10时,拆分后会出现空数组,通过filter过滤掉这些无效批次
  3. 进度值计算:提取每批第一个点后,按原有逻辑计算温度进度值,后续可直接用于生成渐变颜色
  4. 适配Azure Maps:最终的gradientPoints包含绘制渐变线路所需的关键坐标和进度数据,可直接用于构建lineLayer的数据源

内容的提问来源于stack exchange,提问作者Eric Elliston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:05:23