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);
})
}