diff options
author | MadWasp79 <madwasp79@gmail.com> | 2019-10-21 17:27:23 +0300 |
---|---|---|
committer | MadWasp79 <madwasp79@gmail.com> | 2019-10-21 17:27:23 +0300 |
commit | bb19a355405eb13fab299ef872f3545b5efec40c (patch) | |
tree | b6c4daaa5d2a6ab410d4c724971e7e772a3ed51c | |
parent | e25fc71f82c9ad6b22c117e95c60943a49f0d515 (diff) | |
download | Osmand-bb19a355405eb13fab299ef872f3545b5efec40c.tar.gz |
fix for #7576
-rw-r--r-- | OsmAnd-java/src/main/java/net/osmand/binary/RouteDataObject.java | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/OsmAnd-java/src/main/java/net/osmand/binary/RouteDataObject.java b/OsmAnd-java/src/main/java/net/osmand/binary/RouteDataObject.java index 08e32be36b..d70d83cf3a 100644 --- a/OsmAnd-java/src/main/java/net/osmand/binary/RouteDataObject.java +++ b/OsmAnd-java/src/main/java/net/osmand/binary/RouteDataObject.java @@ -469,8 +469,6 @@ public class RouteDataObject { } return pointNameTypes[ind]; } - - public int[] getPointTypes(int ind) { if (pointTypes == null || ind >= pointTypes.length) { @@ -489,17 +487,17 @@ public class RouteDataObject { RouteTypeRule r = region.quickGetEncodingRule(types[i]); if (r != null && r.conditional()) { int vl = r.conditionalValue(conditionalTime); - if(vl != 0) { + if (vl != 0) { RouteTypeRule rtr = region.quickGetEncodingRule(vl); String nonCondTag = rtr.getTag(); int ks; - for(ks = 0; ks < types.length; ks++) { + for (ks = 0; ks < types.length; ks++) { RouteTypeRule toReplace = region.quickGetEncodingRule(types[ks]); - if(toReplace != null && toReplace.getTag().equals(nonCondTag)) { + if (toReplace != null && toReplace.getTag().equals(nonCondTag)) { break; } } - if(ks == types.length) { + if (ks == types.length) { int[] ntypes = new int[types.length + 1]; System.arraycopy(types, 0, ntypes, 0, types.length); types = ntypes; @@ -508,6 +506,41 @@ public class RouteDataObject { } } } + + if (pointTypes != null) { + for (int i = 0; i < pointTypes.length; i++) { + if (pointTypes[i] != null) { + int[] pTypes = pointTypes[i]; + int pSz = pTypes.length; + if (pSz > 0) { + for (int j = 0; j < pSz; j++) { + RouteTypeRule r = region.quickGetEncodingRule(pTypes[j]); + if (r != null && r.conditional()) { + int vl = r.conditionalValue(conditionalTime); + if (vl != 0) { + RouteTypeRule rtr = region.quickGetEncodingRule(vl); + String nonCondTag = rtr.getTag(); + int ks; + for (ks = 0; ks < pointTypes[i].length; ks++) { + RouteTypeRule toReplace = region.quickGetEncodingRule(pointTypes[i][j]); + if (toReplace != null && toReplace.getTag().contentEquals(nonCondTag)) { + break; + } + } + if (ks == pTypes.length) { + int[] ntypes = new int[pTypes.length + 1]; + System.arraycopy(pTypes, 0, ntypes, 0, pTypes.length); + pTypes = ntypes; + } + pTypes[ks] = vl; + } + } + } + } + pointTypes[i] = pTypes; + } + } + } } public float getMaximumSpeed(boolean direction) { |