Merge pull request #10564 from osmandapp/T7525
Add condition for BuildingInterpolation.ALPHABETIC
This commit is contained in:
commit
67c122ce03
1 changed files with 27 additions and 10 deletions
|
@ -106,25 +106,42 @@ public class Building extends MapObject {
|
|||
|
||||
|
||||
public float interpolation(String hno) {
|
||||
if(getInterpolationType() != null || getInterpolationInterval() > 0
|
||||
//|| checkNameAsInterpolation() // disable due to situation in NL #4284
|
||||
) {
|
||||
if (getInterpolationType() != null || getInterpolationInterval() > 0
|
||||
// || checkNameAsInterpolation() // disable due to situation in NL #4284
|
||||
) {
|
||||
int num = Algorithms.extractFirstIntegerNumber(hno);
|
||||
String fname = super.getName();
|
||||
int numB = Algorithms.extractFirstIntegerNumber(fname);
|
||||
int numT = numB;
|
||||
int numT = numB;
|
||||
String sname = getName2();
|
||||
if (getInterpolationType() == BuildingInterpolation.ALPHABETIC) {
|
||||
if (num != numB) {
|
||||
// currently not supported
|
||||
return -1;
|
||||
}
|
||||
int hint = (int) hno.charAt(hno.length() - 1);
|
||||
int fch = (int) fname.charAt(fname.length() - 1);
|
||||
int sch = sname.charAt(sname.length() - 1);
|
||||
if (fch == sch) {
|
||||
return -1;
|
||||
}
|
||||
float res = ((float) hint - fch) / (((float) sch - fch));
|
||||
if (res > 1 || res < -1) {
|
||||
return -1;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
if (num >= numB) {
|
||||
String sname = getName2();
|
||||
if(fname.contains("-") && sname == null){
|
||||
if (fname.contains("-") && sname == null) {
|
||||
int l = fname.indexOf('-');
|
||||
sname = fname.substring(l + 1, fname.length());
|
||||
}
|
||||
if (sname != null) {
|
||||
numT = Algorithms.extractFirstIntegerNumber(sname);
|
||||
if(numT < num) {
|
||||
if (numT < num) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (getInterpolationType() == BuildingInterpolation.EVEN && num % 2 == 1) {
|
||||
return -1;
|
||||
}
|
||||
|
@ -137,8 +154,8 @@ public class Building extends MapObject {
|
|||
} else {
|
||||
return -1;
|
||||
}
|
||||
if(numT > numB){
|
||||
return ((float)num - numB) / (((float)numT - numB));
|
||||
if (numT > numB) {
|
||||
return ((float) num - numB) / (((float) numT - numB));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue