aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvshcherb <victor.shcherb@gmail.com>2019-10-25 17:26:46 +0200
committerGitHub <noreply@github.com>2019-10-25 17:26:46 +0200
commit03144c7a2b8010112ce8dc46e39d90870b4aeeef (patch)
treebdab266e6e1edbd00233fd62bc43bf00a9f21107
parent50f2ded44fb305c30c8fd55fa1934d34b80321a7 (diff)
parentbb19a355405eb13fab299ef872f3545b5efec40c (diff)
downloadOsmand-master.tar.gz
Merge pull request #7714 from osmandapp/issue_7576HEADmaster
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) {