fix segment highlight when no match for last message lat/lon
This commit is contained in:
parent
bfe5770193
commit
597303a6d3
1 changed files with 31 additions and 23 deletions
|
|
@ -73,7 +73,7 @@ BR.TrackMessages = L.Class.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
// highlight track segment (graph edge) on row hover
|
// highlight track segment (graph edge) on row hover
|
||||||
this._setEdges(this._table, polyline);
|
this._setEdges(polyline, segments);
|
||||||
$('#datatable tbody tr').hover(L.bind(this._handleHover, this), L.bind(this._handleHoverOut, this));
|
$('#datatable tbody tr').hover(L.bind(this._handleHover, this), L.bind(this._handleHoverOut, this));
|
||||||
|
|
||||||
console.timeEnd('datatable');
|
console.timeEnd('datatable');
|
||||||
|
|
@ -139,37 +139,45 @@ BR.TrackMessages = L.Class.extend({
|
||||||
return empty;
|
return empty;
|
||||||
},
|
},
|
||||||
|
|
||||||
_getRowLatLng: function(row) {
|
_getMessageLatLng: function(message) {
|
||||||
var data = row.data(),
|
var lon = message[0] / 1000000,
|
||||||
lon = data[0] / 1000000,
|
lat = message[1] / 1000000;
|
||||||
lat = data[1] / 1000000;
|
|
||||||
|
|
||||||
return L.latLng(lat, lon);
|
return L.latLng(lat, lon);
|
||||||
},
|
},
|
||||||
|
|
||||||
_setEdges: function(table, polyline) {
|
_setEdges: function(polyline, segments) {
|
||||||
var trackLatLngs = polyline.getLatLngs(),
|
var messages, segLatLngs, length, si, mi, latLng, i, segIndex,
|
||||||
index = 0;
|
baseIndex = 0;
|
||||||
|
|
||||||
this._track = polyline;
|
|
||||||
// track latLngs index for end node of edge
|
// track latLngs index for end node of edge
|
||||||
this._edges = [];
|
this._edges = [];
|
||||||
|
this._track = polyline;
|
||||||
|
|
||||||
table.rows().indexes().each(L.bind(function(rowIndex) {
|
for (si = 0; si < segments.length; si++) {
|
||||||
var row = table.row(rowIndex),
|
messages = segments[si].feature.properties.messages;
|
||||||
latLng = this._getRowLatLng(row),
|
segLatLngs = segments[si].getLatLngs();
|
||||||
i;
|
length = segLatLngs.length;
|
||||||
|
segIndex = 0;
|
||||||
|
|
||||||
for (i = index; i < trackLatLngs.length; i++) {
|
for (mi = 1; mi < messages.length; mi++) {
|
||||||
if (latLng.equals(trackLatLngs[i])) {
|
latLng = this._getMessageLatLng(messages[mi]);
|
||||||
break;
|
|
||||||
|
for (i = segIndex; i < length; i++) {
|
||||||
|
if (latLng.equals(segLatLngs[i])) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (i === length) {
|
||||||
|
i = length - 1;
|
||||||
|
if (mi !== messages.length - 1) debugger;
|
||||||
|
}
|
||||||
|
|
||||||
|
segIndex = i + 1;
|
||||||
|
this._edges.push(baseIndex + i);
|
||||||
}
|
}
|
||||||
|
baseIndex += length;
|
||||||
this._edges.push(i);
|
}
|
||||||
|
|
||||||
index = i;
|
|
||||||
}, this));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_handleHover: function(evt) {
|
_handleHover: function(evt) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue