aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMadWasp79 <madwasp79@gmail.com>2019-10-21 17:27:23 +0300
committerMadWasp79 <madwasp79@gmail.com>2019-10-21 17:27:23 +0300
commitbb19a355405eb13fab299ef872f3545b5efec40c (patch)
treeb6c4daaa5d2a6ab410d4c724971e7e772a3ed51c
parente25fc71f82c9ad6b22c117e95c60943a49f0d515 (diff)
downloadOsmand-bb19a355405eb13fab299ef872f3545b5efec40c.tar.gz
fix for #7576
-rw-r--r--OsmAnd-java/src/main/java/net/osmand/binary/RouteDataObject.java45
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) {