Skip to content

Commit 106cd3f

Browse files
authored
Merge pull request abrensch#849 from afischerdev/update-wpt
Update matched way point with types
2 parents 87d43ad + b8939c8 commit 106cd3f

13 files changed

Lines changed: 93 additions & 59 deletions

File tree

brouter-core/src/main/java/btools/router/FormatGpx.java

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public String formatAsGpx(BufferedWriter sb, OsmTrack t) throws IOException {
107107
first.append(" <offset>0</offset>\n </extensions>\n </rtept>\n");
108108
}
109109
if (turnInstructionMode == 8) {
110-
if (t.matchedWaypoints.get(0).direct && t.voiceHints.list.get(0).indexInTrack == 0) {
110+
if (t.matchedWaypoints.get(0).wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT && t.voiceHints.list.get(0).indexInTrack == 0) {
111111
// has a voice hint do nothing, voice hint will do
112112
} else {
113113
sb.append(first.toString());
@@ -204,23 +204,31 @@ public String formatAsGpx(BufferedWriter sb, OsmTrack t) throws IOException {
204204
for (int i = 0; i <= t.matchedWaypoints.size() - 1; i++) {
205205
MatchedWaypoint wt = t.matchedWaypoints.get(i);
206206
if (i == 0) {
207-
formatWaypointGpx(sb, wt, "from");
207+
formatWaypointGpx(sb, wt, wt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT ? "beeline" :"via");
208208
} else if (i == t.matchedWaypoints.size() - 1) {
209-
formatWaypointGpx(sb, wt, "to");
210-
} else {
211209
formatWaypointGpx(sb, wt, "via");
210+
} else {
211+
if (wt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) {
212+
formatWaypointGpx(sb, wt, "beeline");
213+
} else if (wt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_MEETING) {
214+
formatWaypointGpx(sb, wt, "via");
215+
} else {
216+
formatWaypointGpx(sb, wt, "shaping");
217+
}
212218
}
213219
}
214220
}
215221
if (t.exportCorrectedWaypoints) {
222+
sb.append("\n");
216223
for (int i = 0; i <= t.matchedWaypoints.size() - 1; i++) {
217224
MatchedWaypoint wt = t.matchedWaypoints.get(i);
218225
if (wt.correctedpoint != null) {
219226
OsmNodeNamed n = new OsmNodeNamed(wt.correctedpoint);
220227
n.name = wt.name + "_corr";
221-
formatWaypointGpx(sb, n, "via_corr");
228+
formatWaypointGpx(sb, n, "shaping");
222229
}
223230
}
231+
sb.append("\n");
224232
}
225233

226234
sb.append(" <trk>\n");
@@ -276,7 +284,11 @@ public String formatAsGpx(BufferedWriter sb, OsmTrack t) throws IOException {
276284
sele += "<desc>" + hint.getCruiserMessageString() + "</desc>";
277285
sele += "<sym>" + hint.getCommandString(hint.cmd, turnInstructionMode) + "</sym>";
278286
if (mwpt != null) {
279-
sele += "<type>Via</type>";
287+
if (mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_MEETING) {
288+
sele += "<type>via</type>";
289+
} else {
290+
sele += "<type>shaping</type>";
291+
}
280292
}
281293
sele += "<extensions>";
282294
if (t.showspeed) {
@@ -303,27 +315,31 @@ public String formatAsGpx(BufferedWriter sb, OsmTrack t) throws IOException {
303315

304316
}
305317
if (idx == 0 && hint == null) {
306-
if (mwpt != null && mwpt.direct) {
318+
if (mwpt != null && mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) {
307319
sele += "<desc>beeline</desc>";
308320
} else {
309321
sele += "<desc>start</desc>";
310322
}
311-
sele += "<type>Via</type>";
323+
sele += "<type>via</type>";
312324

313325
} else if (idx == t.nodes.size() - 1 && hint == null) {
314326

315327
sele += "<desc>end</desc>";
316-
sele += "<type>Via</type>";
328+
sele += "<type>via</type>";
317329

318330
} else {
319331
if (mwpt != null && hint == null) {
320-
if (mwpt.direct) {
332+
if (mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) {
321333
// bNextDirect = true;
322334
sele += "<desc>beeline</desc>";
323335
} else {
324336
sele += "<desc>" + mwpt.name + "</desc>";
325337
}
326-
sele += "<type>Via</type>";
338+
if (mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_MEETING) {
339+
sele += "<type>via</type>";
340+
} else {
341+
sele += "<type>shaping</type>";
342+
}
327343
bNextDirect = false;
328344
}
329345
}
@@ -360,13 +376,13 @@ public String formatAsGpx(BufferedWriter sb, OsmTrack t) throws IOException {
360376
if (turnInstructionMode == 2) { // locus style new
361377
if (hint != null) {
362378
if (mwpt != null) {
363-
if (!mwpt.name.startsWith("via") && !mwpt.name.startsWith("from") && !mwpt.name.startsWith("to")) {
379+
if (!mwpt.name.startsWith("via") && !mwpt.name.startsWith("from") && !mwpt.name.startsWith("to") && !mwpt.name.startsWith("rt")) {
364380
sele += "<name>" + mwpt.name + "</name>";
365381
}
366-
if (mwpt.direct && bNextDirect) {
382+
if (mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT && bNextDirect) {
367383
sele += "<src>" + hint.getLocusSymbolString() + "</src><sym>pass_place</sym><type>Shaping</type>";
368384
// bNextDirect = false;
369-
} else if (mwpt.direct) {
385+
} else if (mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) {
370386
if (idx == 0)
371387
sele += "<sym>pass_place</sym><type>Via</type>";
372388
else
@@ -390,7 +406,7 @@ public String formatAsGpx(BufferedWriter sb, OsmTrack t) throws IOException {
390406
}
391407
if (mwpt != null && !mwpt.name.startsWith("from"))
392408
sele += "<name>" + mwpt.name + "</name>";
393-
if (mwpt != null && mwpt.direct) {
409+
if (mwpt != null && mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) {
394410
bNextDirect = true;
395411
}
396412
sele += "<sym>pass_place</sym>";
@@ -412,12 +428,12 @@ public String formatAsGpx(BufferedWriter sb, OsmTrack t) throws IOException {
412428

413429
} else {
414430
if (mwpt != null) {
415-
if (!mwpt.name.startsWith("via") && !mwpt.name.startsWith("from") && !mwpt.name.startsWith("to")) {
431+
if (!mwpt.name.startsWith("via") && !mwpt.name.startsWith("from") && !mwpt.name.startsWith("to") && !mwpt.name.startsWith("rt")) {
416432
sele += "<name>" + mwpt.name + "</name>";
417433
}
418-
if (mwpt.direct && bNextDirect) {
434+
if (mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT && bNextDirect) {
419435
sele += "<src>beeline</src><sym>pass_place</sym><type>Shaping</type>";
420-
} else if (mwpt.direct) {
436+
} else if (mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) {
421437
if (idx == 0)
422438
sele += "<sym>pass_place</sym><type>Via</type>";
423439
else
@@ -428,11 +444,12 @@ public String formatAsGpx(BufferedWriter sb, OsmTrack t) throws IOException {
428444
bNextDirect = false;
429445
} else if (mwpt.name.startsWith("via") ||
430446
mwpt.name.startsWith("from") ||
431-
mwpt.name.startsWith("to")) {
447+
mwpt.name.startsWith("to") ||
448+
mwpt.name.startsWith("rt")) {
432449
if (bNextDirect) {
433450
sele += "<src>beeline</src><sym>pass_place</sym><type>Shaping</type>";
434451
} else {
435-
sele += "<sym>pass_place</sym><type>Via</type>";
452+
sele += "<sym>pass_place</sym><type>Shaping</type>";
436453
}
437454
bNextDirect = false;
438455
} else {

brouter-core/src/main/java/btools/router/FormatJson.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,13 @@ public String format(OsmTrack t) {
139139
if (t.exportWaypoints) {
140140
if (!t.pois.isEmpty()) sb.append(" ,\n");
141141
for (int i = 0; i <= t.matchedWaypoints.size() - 1; i++) {
142+
MatchedWaypoint wp = t.matchedWaypoints.get(i);
142143
String type;
143-
if (i == 0) {
144-
type = "from";
145-
} else if (i == t.matchedWaypoints.size() - 1) {
146-
type = "to";
147-
} else {
148-
type = "via";
144+
switch (wp.wpttype) {
145+
case MatchedWaypoint.WAYPOINT_TYPE_DIRECT: type = "beeline"; break;
146+
case MatchedWaypoint.WAYPOINT_TYPE_MEETING: type = "via"; break;
147+
default: type = "shaping";
149148
}
150-
151-
MatchedWaypoint wp = t.matchedWaypoints.get(i);
152149
addFeature(sb, type, wp.name, wp.waypoint.ilat, wp.waypoint.ilon, wp.waypoint.getSElev());
153150
if (i < t.matchedWaypoints.size() - 1) {
154151
sb.append(",");

brouter-core/src/main/java/btools/router/OsmNodeNamed.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
package btools.router;
77

8+
import btools.mapaccess.MatchedWaypoint;
89
import btools.mapaccess.OsmNode;
910
import btools.util.CheapRuler;
1011

@@ -13,7 +14,7 @@ public class OsmNodeNamed extends OsmNode {
1314
public double radius; // radius of nogopoint (in meters)
1415
public double nogoWeight; // weight for nogopoint
1516
public boolean isNogo = false;
16-
public boolean direct = false; // mark direct routing
17+
public byte wpttype = MatchedWaypoint.WAYPOINT_TYPE_SHAPING; // set default type
1718

1819
public OsmNodeNamed() {
1920
}

brouter-core/src/main/java/btools/router/OsmTrack.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ public void processVoiceHints(RoutingContext rc) {
496496
rc.turnInstructionMode == 2 ||
497497
rc.turnInstructionMode == 9) {
498498
MatchedWaypoint mwpt = getMatchedWaypoint(nodeNr);
499-
if (mwpt != null && mwpt.direct) {
499+
if (mwpt != null && mwpt.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) {
500500
input.cmd = VoiceHint.BL;
501501
input.angle = (float) (nodeNr == 0 ? node.origin.message.turnangle : node.message.turnangle);
502502
input.distanceToNext = node.calcDistance(node.origin);

brouter-core/src/main/java/btools/router/RoutingContext.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,8 @@ public void checkMatchedWaypointAgainstNogos(List<MatchedWaypoint> matchedWaypoi
317317
if (isInsideNogo) {
318318
boolean useAnyway = false;
319319
if (prevMwp == null) useAnyway = true;
320-
else if (mwp.direct) useAnyway = true;
321-
else if (prevMwp.direct) useAnyway = true;
320+
else if (mwp.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) useAnyway = true;
321+
else if (prevMwp.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) useAnyway = true;
322322
else if (prevMwpIsInside) useAnyway = true;
323323
else if (i == theSize-1) {
324324
throw new IllegalArgumentException("last wpt in restricted area ");

brouter-core/src/main/java/btools/router/RoutingEngine.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -884,14 +884,14 @@ private OsmTrack tryFindTrack(OsmTrack[] refTracks, OsmTrack[] lastTracks) {
884884
if (useNodePoints && extraWaypoints != null) {
885885
// add extra waypoints from the last broken round
886886
for (OsmNodeNamed wp : extraWaypoints) {
887-
if (wp.direct) hasDirectRouting = true;
887+
if (wp.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) hasDirectRouting = true;
888888
if (wp.name.startsWith("from")) {
889889
waypoints.add(1, wp);
890-
waypoints.get(0).direct = true;
890+
waypoints.get(0).wpttype = MatchedWaypoint.WAYPOINT_TYPE_DIRECT;
891891
nUnmatched++;
892892
} else {
893893
waypoints.add(waypoints.size() - 1, wp);
894-
waypoints.get(waypoints.size() - 2).direct = true;
894+
waypoints.get(waypoints.size() - 2).wpttype = MatchedWaypoint.WAYPOINT_TYPE_DIRECT;
895895
nUnmatched++;
896896
}
897897
}
@@ -903,8 +903,8 @@ private OsmTrack tryFindTrack(OsmTrack[] refTracks, OsmTrack[] lastTracks) {
903903
hasDirectRouting = true;
904904
}
905905
for (OsmNodeNamed wp : waypoints) {
906-
if (hasInfo()) logInfo("wp=" + wp + (wp.direct ? " direct" : ""));
907-
if (wp.direct) hasDirectRouting = true;
906+
if (hasInfo()) logInfo("wp=" + wp + (wp.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT ? " beeline" : (wp.wpttype == MatchedWaypoint.WAYPOINT_TYPE_MEETING ? " via" : "")));
907+
if (wp.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) hasDirectRouting = true;
908908
}
909909

910910
// check for a track for that target
@@ -928,7 +928,7 @@ private OsmTrack tryFindTrack(OsmTrack[] refTracks, OsmTrack[] lastTracks) {
928928
MatchedWaypoint mwp = new MatchedWaypoint();
929929
mwp.waypoint = waypoints.get(i);
930930
mwp.name = waypoints.get(i).name;
931-
mwp.direct = waypoints.get(i).direct;
931+
mwp.wpttype = waypoints.get(i).wpttype;
932932
matchedWaypoints.add(mwp);
933933
}
934934
int startSize = matchedWaypoints.size();
@@ -941,7 +941,7 @@ private OsmTrack tryFindTrack(OsmTrack[] refTracks, OsmTrack[] lastTracks) {
941941

942942
for (MatchedWaypoint mwp : matchedWaypoints) {
943943
if (hasInfo() && matchedWaypoints.size() != nUnmatched)
944-
logInfo("new wp=" + mwp.waypoint + " " + mwp.crosspoint + (mwp.direct ? " direct" : ""));
944+
logInfo("new wp=" + mwp.waypoint + " " + mwp.crosspoint + (mwp.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT ? " beeline" : (mwp.wpttype == MatchedWaypoint.WAYPOINT_TYPE_MEETING ? " via" : "")));
945945
}
946946

947947
routingContext.checkMatchedWaypointAgainstNogos(matchedWaypoints);
@@ -951,7 +951,7 @@ private OsmTrack tryFindTrack(OsmTrack[] refTracks, OsmTrack[] lastTracks) {
951951
airDistanceCostFactor = 0.;
952952
for (int i = 0; i < matchedWaypoints.size() - 1; i++) {
953953
nodeLimit = MAXNODES_ISLAND_CHECK;
954-
if (matchedWaypoints.get(i).direct) continue;
954+
if (matchedWaypoints.get(i).wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT) continue;
955955
if (routingContext.inverseRouting) {
956956
OsmTrack seg = findTrack("start-island-check", matchedWaypoints.get(i), matchedWaypoints.get(i + 1), null, null, false);
957957
if (seg == null && nodeLimit > 0) {
@@ -1020,7 +1020,10 @@ private OsmTrack tryFindTrack(OsmTrack[] refTracks, OsmTrack[] lastTracks) {
10201020
if (routingContext.ai != null) return null;
10211021

10221022
boolean changed = false;
1023-
if (routingContext.correctMisplacedViaPoints && !matchedWaypoints.get(i).direct && !routingContext.allowSamewayback) {
1023+
if (routingContext.correctMisplacedViaPoints &&
1024+
matchedWaypoints.get(i).wpttype != MatchedWaypoint.WAYPOINT_TYPE_DIRECT &&
1025+
matchedWaypoints.get(i).wpttype != MatchedWaypoint.WAYPOINT_TYPE_MEETING &&
1026+
!routingContext.allowSamewayback) {
10241027
changed = snapPathConnection(totaltrack, seg, routingContext.inverseRouting ? matchedWaypoints.get(i + 1) : matchedWaypoints.get(i));
10251028
}
10261029
if (wptIndex > 0)
@@ -1616,7 +1619,7 @@ private void matchWaypointsToNodes(List<MatchedWaypoint> unmatchedWaypoints) {
16161619
nmw.waypoint = onn;
16171620
nmw.name = onn.name;
16181621
nmw.crosspoint = new OsmNode(wp.waypoint.ilon, wp.waypoint.ilat);
1619-
nmw.direct = true;
1622+
nmw.wpttype = MatchedWaypoint.WAYPOINT_TYPE_DIRECT;
16201623
onn = new OsmNodeNamed(wp.crosspoint);
16211624
onn.name = wp.name + "_add";
16221625
wp.waypoint = onn;
@@ -1630,14 +1633,14 @@ private void matchWaypointsToNodes(List<MatchedWaypoint> unmatchedWaypoints) {
16301633
nmw.crosspoint = new OsmNode(wp.crosspoint.ilon, wp.crosspoint.ilat);
16311634
nmw.node1 = new OsmNode(wp.node1.ilon, wp.node1.ilat);
16321635
nmw.node2 = new OsmNode(wp.node2.ilon, wp.node2.ilat);
1633-
nmw.direct = true;
1636+
nmw.wpttype = MatchedWaypoint.WAYPOINT_TYPE_DIRECT;
16341637

16351638
if (wp.name != null) nmw.name = wp.name;
16361639
waypoints.add(nmw);
16371640
wp.name = wp.name + "_add";
16381641
waypoints.add(wp);
16391642
if (wp.name.startsWith("via")) {
1640-
wp.direct = true;
1643+
wp.wpttype = MatchedWaypoint.WAYPOINT_TYPE_DIRECT;
16411644
MatchedWaypoint emw = new MatchedWaypoint();
16421645
OsmNodeNamed onn2 = new OsmNodeNamed(wp.crosspoint);
16431646
onn2.name = wp.name + "_2";
@@ -1646,7 +1649,7 @@ private void matchWaypointsToNodes(List<MatchedWaypoint> unmatchedWaypoints) {
16461649
emw.crosspoint = new OsmNode(nmw.crosspoint.ilon, nmw.crosspoint.ilat);
16471650
emw.node1 = new OsmNode(nmw.node1.ilon, nmw.node1.ilat);
16481651
emw.node2 = new OsmNode(nmw.node2.ilon, nmw.node2.ilat);
1649-
emw.direct = false;
1652+
emw.wpttype = MatchedWaypoint.WAYPOINT_TYPE_SHAPING;
16501653
waypoints.add(emw);
16511654
}
16521655
wp.crosspoint = new OsmNode(wp.waypoint.ilon, wp.waypoint.ilat);
@@ -1664,7 +1667,7 @@ private void matchWaypointsToNodes(List<MatchedWaypoint> unmatchedWaypoints) {
16641667
private OsmTrack searchTrack(MatchedWaypoint startWp, MatchedWaypoint endWp, OsmTrack nearbyTrack, OsmTrack refTrack) {
16651668
// remove nogos with waypoints inside
16661669
try {
1667-
boolean calcBeeline = startWp.direct;
1670+
boolean calcBeeline = startWp.wpttype == MatchedWaypoint.WAYPOINT_TYPE_DIRECT;
16681671

16691672
if (!calcBeeline)
16701673
return searchRoutedTrack(startWp, endWp, nearbyTrack, refTrack);

brouter-core/src/main/java/btools/router/RoutingParamCollector.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import java.util.Map;
99
import java.util.StringTokenizer;
1010

11+
import btools.mapaccess.MatchedWaypoint;
12+
1113
public class RoutingParamCollector {
1214

1315
final static boolean DEBUG = false;
@@ -33,9 +35,12 @@ public List<OsmNodeNamed> getWayPointList(String lonLats) {
3335
wplist.add(readPosition(lonLat[0], lonLat[1], "via" + i));
3436
if (lonLat.length > 2) {
3537
if (lonLat[2].equals("d")) {
36-
wplist.get(wplist.size() - 1).direct = true;
38+
wplist.get(wplist.size() - 1).wpttype = MatchedWaypoint.WAYPOINT_TYPE_DIRECT;
39+
} else if (lonLat[2].equals("m")) {
40+
wplist.get(wplist.size() - 1).wpttype = MatchedWaypoint.WAYPOINT_TYPE_MEETING;
3741
} else {
3842
wplist.get(wplist.size() - 1).name = lonLat[2];
43+
wplist.get(wplist.size() - 1).wpttype = MatchedWaypoint.WAYPOINT_TYPE_MEETING;
3944
}
4045
}
4146
}
@@ -190,7 +195,7 @@ public void setParams(RoutingContext rctx, List<OsmNodeNamed> wplist, Map<String
190195
String[] sa = value.split(",");
191196
for (int i = 0; i < sa.length; i++) {
192197
int v = Integer.parseInt(sa[i]);
193-
if (wplist.size() > v) wplist.get(v).direct = true;
198+
if (wplist.size() > v) wplist.get(v).wpttype = MatchedWaypoint.WAYPOINT_TYPE_DIRECT;
194199
}
195200
} catch (Exception ex) {
196201
System.err.println("error " + ex.getStackTrace()[0].getLineNumber() + " " + ex.getStackTrace()[0] + "\n" + ex);

brouter-core/src/test/java/btools/router/RouteParamTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import java.util.List;
99
import java.util.Map;
1010

11-
1211
public class RouteParamTest {
1312

1413
@Test(expected = IllegalArgumentException.class)
@@ -42,7 +41,12 @@ public void readWpts() {
4241
data = "1.0,1.2,d;2.0,2.2";
4342
map = rpc.getWayPointList(data);
4443

45-
Assert.assertTrue("result content 4 ", map.get(0).direct);
44+
Assert.assertEquals("result content 4 ", map.get(0).wpttype, 3); // 3 = MatchedWaypoint.WAYPOINT_TYPE_DIRECT
45+
46+
data = "1.0,1.2,m;2.0,2.2";
47+
map = rpc.getWayPointList(data);
48+
49+
Assert.assertEquals("result content 4 ", map.get(0).wpttype, 2); // 2 = MatchedWaypoint.WAYPOINT_TYPE_MEETING
4650
}
4751

4852
@Test

brouter-mapaccess/src/main/java/btools/mapaccess/MatchedWaypoint.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,19 @@
1212
import java.util.ArrayList;
1313

1414
public final class MatchedWaypoint {
15+
16+
public static final byte WAYPOINT_TYPE_SHAPING = 1; // route next to this point
17+
public static final byte WAYPOINT_TYPE_MEETING = 2; // visit this point
18+
public static final byte WAYPOINT_TYPE_DIRECT = 3; // from this point go direct to next = beeline routing
19+
1520
public OsmNode node1;
1621
public OsmNode node2;
1722
public OsmNode crosspoint;
1823
public OsmNode waypoint;
1924
public OsmNode correctedpoint;
2025
public String name; // waypoint name used in error messages
2126
public double radius; // distance in meter between waypoint and crosspoint
22-
public boolean direct; // from this point go direct to next = beeline routing
27+
public byte wpttype = WAYPOINT_TYPE_SHAPING;
2328
public int indexInTrack = 0;
2429
public double directionToNext = -1;
2530
public double directionDiff = 361;

0 commit comments

Comments
 (0)