loca可视化map同一图层,对不同的脉冲线设置不同是style

 


 
 let pLineData = {
    type: "FeatureCollection",
    features: [
      {
        type: "Feature",
        //properties对象中的值可以单独传递到setStyle的属性中做回调函数的参数
        //意味的可以通过该对象获取每一组数单独的一些值,在  layer.setStyle设置不同的style而不是一个定值
        
        properties: { type: 1 },
        geometry: {
          type: "LineString",
          coordinates: [[116.417458, 39.934026]],
        },
      },
      // {
      //   type: "Feature",
      //   properties: { type: 2 },
      //   geometry: {
      //     type: "LineString",
      //     coordinates: [
      //       [126.128627, 41.146943],
      //       [126.12425, 41.137959],
      //       [126.113693, 41.128908],
      //     ],
      //   },
      // },
    ],
  };
  data.forEach((item) => {
    if (item.coord) {
      try {
        const coord = JSON.parse(item.coord);
        let obj = {
          type: "Feature",
          properties: { type: 2 },
          geometry: {
            type: "LineString",
            coordinates: coord,
          },
        };
        pLineData.features.push(obj);
      } catch (error) {}
    }
  });
  let geo = new Loca.GeoJSONSource({
    data: pLineData, //数据格式
  });
        // 颜色配置
        var headColors = ['#ECFFB1', '#146968', '#146968', '#146968', '#146968', '#146968', '#146968', '#146968'];
        var trailColors = [
            'rgba(255,178,6, 0.2)',
            'rgba(255,178,6, 0.2)',
            'rgba(20,105,104, 0.2)',
            'rgba(20,105,104, 0.2)',
            'rgba(20,105,104, 0.2)',
            'rgba(20,105,104, 0.2)',
            'rgba(20,105,104, 0.2)',
            'rgba(20,105,104, 0.2)',
        ];
  let layer = new Loca.PulseLineLayer({
    // loca,
    // zIndex: 100000000,
    opacity: 1,
    visible: true,
    zooms: [2, 22],
  });

  layer.setSource(geo);
  layer.setStyle({
    altitude: 0,
    //这三个参数可以通过feature获取pLineData中不同段的properties值做不同效果
    lineWidth: (_, feature) => feature.properties.lineWidthRatio * 1 + 3,
    headColor: (_, feature) => headColors[feature.properties.type],
    trailColor: (_, feature) => trailColors[feature.properties.type],
    // lineWidth: Number(10)/20,
    // // 脉冲头颜色
    // headColor: "rgb(204, 154, 155)",
    // // 脉冲尾颜色
    // trailColor: "rgba(192, 53, 50, 0.9)",
    // // 脉冲长度,0.25 表示一段脉冲占整条路的 1/4
    interval: 0.5,
    // 脉冲线的速度,几秒钟跑完整段路
    duration: 3000,
  });
  loca.add(layer);
  loca.animate.start();

你可能感兴趣的:(map,前端,vue.js)