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
|
||||
this._setEdges(this._table, polyline);
|
||||
this._setEdges(polyline, segments);
|
||||
$('#datatable tbody tr').hover(L.bind(this._handleHover, this), L.bind(this._handleHoverOut, this));
|
||||
|
||||
console.timeEnd('datatable');
|
||||
|
|
@ -139,37 +139,45 @@ BR.TrackMessages = L.Class.extend({
|
|||
return empty;
|
||||
},
|
||||
|
||||
_getRowLatLng: function(row) {
|
||||
var data = row.data(),
|
||||
lon = data[0] / 1000000,
|
||||
lat = data[1] / 1000000;
|
||||
_getMessageLatLng: function(message) {
|
||||
var lon = message[0] / 1000000,
|
||||
lat = message[1] / 1000000;
|
||||
|
||||
return L.latLng(lat, lon);
|
||||
},
|
||||
|
||||
_setEdges: function(table, polyline) {
|
||||
var trackLatLngs = polyline.getLatLngs(),
|
||||
index = 0;
|
||||
_setEdges: function(polyline, segments) {
|
||||
var messages, segLatLngs, length, si, mi, latLng, i, segIndex,
|
||||
baseIndex = 0;
|
||||
|
||||
this._track = polyline;
|
||||
// track latLngs index for end node of edge
|
||||
this._edges = [];
|
||||
this._track = polyline;
|
||||
|
||||
table.rows().indexes().each(L.bind(function(rowIndex) {
|
||||
var row = table.row(rowIndex),
|
||||
latLng = this._getRowLatLng(row),
|
||||
i;
|
||||
for (si = 0; si < segments.length; si++) {
|
||||
messages = segments[si].feature.properties.messages;
|
||||
segLatLngs = segments[si].getLatLngs();
|
||||
length = segLatLngs.length;
|
||||
segIndex = 0;
|
||||
|
||||
for (i = index; i < trackLatLngs.length; i++) {
|
||||
if (latLng.equals(trackLatLngs[i])) {
|
||||
for (mi = 1; mi < messages.length; mi++) {
|
||||
latLng = this._getMessageLatLng(messages[mi]);
|
||||
|
||||
for (i = segIndex; i < length; i++) {
|
||||
if (latLng.equals(segLatLngs[i])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i === length) {
|
||||
i = length - 1;
|
||||
if (mi !== messages.length - 1) debugger;
|
||||
}
|
||||
|
||||
this._edges.push(i);
|
||||
|
||||
index = i;
|
||||
}, this));
|
||||
segIndex = i + 1;
|
||||
this._edges.push(baseIndex + i);
|
||||
}
|
||||
baseIndex += length;
|
||||
}
|
||||
},
|
||||
|
||||
_handleHover: function(evt) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue