gisGIS相关

js 对数组中的轨迹数据按名称标记分割

2018-08-24  本文已影响2人  gis杭州

实际应用场景是,请求返回的数据并不是连续的轨迹数据,而是按FILENAME为标记分段的轨迹。如果不加以分割,直接加载画线就会存在“飞线”,如下图:


飞线 修改后

在此仅用于记录如何处理这种情况的数组分割。代码如下:

// 画路轨
function drawLocus(list) {
  var lineArr = [];
  for (var k = 0; k < list.length; k++) {
    var lg = list[k].STATIONLG;
    var la = list[k].STATIONLA;
    var gcj02Point = [];

    //对坐标加偏移后叠加
    require([ "hxdiGisModules/coordtransform" ], function(
      coordtransform) {
      gcj02Point = coordtransform.wgs84togcj02(lg, la);
    });
    lineArr.push(gcj02Point);
    if (list[k + 1]) {
      if (list[k].FILENAME !== list[k + 1].FILENAME) {
        require(
          [ "esri/symbols/SimpleLineSymbol",
            "esri/Color" ],
          function(SimpleLineSymbol, Color) {
            var linesymbol = new SimpleLineSymbol(
              SimpleLineSymbol.STYLE_SOLID,
              new Color([
                  Math.ceil(Math.random() * 250),
                  Math.ceil(Math.random() * 250),
                  Math.ceil(Math.random() * 250)
                ]), 5);
            createPolyLine(lineArr, linesymbol);
          })

        lineArr = [];//绘制完毕后将lineArr置空
      }

    }
  }
  require(
    [ "esri/symbols/SimpleLineSymbol", "esri/Color" ],
    function(SimpleLineSymbol, Color) {
      var linesymbol = new SimpleLineSymbol(
        SimpleLineSymbol.STYLE_SOLID,
        new Color([
            Math.ceil(Math.random() * 250),
            Math.ceil(Math.random() * 250),
            Math.ceil(Math.random() * 250) 
        ]), 5);
      createPolyLine(lineArr, linesymbol);
    })

}

function createPolyLine(lineArr, linesymbol) {
  require([
    "esri/geometry/Polyline", "esri/graphic",
    "dojo/domReady!" ], 
    function(Polyline, Graphic) {

    var polylineJson = {
      "paths" : [ lineArr ],
      "spatialReference" : {
        "wkid" : 4326
      }
    };

    var polyline = new Polyline(polylineJson);

    var linegraphic = new Graphic(polyline, linesymbol);
    polylineGraphicLayer.add(linegraphic);

  })

}
上一篇 下一篇

猜你喜欢

热点阅读