|
@@ -197,7 +197,7 @@ public class MapService {
|
|
|
int i = 0;
|
|
int i = 0;
|
|
|
for (; i < steps.size(); i++) {
|
|
for (; i < steps.size(); i++) {
|
|
|
if (d + steps.get(i).getDistance() >= distance) {
|
|
if (d + steps.get(i).getDistance() >= distance) {
|
|
|
- sd = d + steps.get(i).getDistance() - distance;
|
|
|
|
|
|
|
+ sd = distance - d;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
d += steps.get(i).getDistance();
|
|
d += steps.get(i).getDistance();
|
|
@@ -221,7 +221,7 @@ public class MapService {
|
|
|
double lng2 = extracted.get(j + 3);
|
|
double lng2 = extracted.get(j + 3);
|
|
|
double dd = LocationUtils.getDistance(lat1, lng1, lat2, lng2);
|
|
double dd = LocationUtils.getDistance(lat1, lng1, lat2, lng2);
|
|
|
if (d1 + dd >= sd) {
|
|
if (d1 + dd >= sd) {
|
|
|
- double p = (d1 + dd) / (d - steps.get(i).getDistance());
|
|
|
|
|
|
|
+ double p = (d1 + dd - sd) / dd;
|
|
|
double lat3 = (lat2 - lat1) * p + lat1;
|
|
double lat3 = (lat2 - lat1) * p + lat1;
|
|
|
double lng3 = (lng2 - lng1) * p + lng1;
|
|
double lng3 = (lng2 - lng1) * p + lng1;
|
|
|
subPolyline.add(lat3);
|
|
subPolyline.add(lat3);
|
|
@@ -239,7 +239,7 @@ public class MapService {
|
|
|
int i = 0;
|
|
int i = 0;
|
|
|
for (; i < steps.size(); i++) {
|
|
for (; i < steps.size(); i++) {
|
|
|
if (d + steps.get(i).getDistance() >= distance) {
|
|
if (d + steps.get(i).getDistance() >= distance) {
|
|
|
- sd = d + steps.get(i).getDistance() - distance;
|
|
|
|
|
|
|
+ sd = distance - d;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
d += steps.get(i).getDistance();
|
|
d += steps.get(i).getDistance();
|
|
@@ -257,7 +257,7 @@ public class MapService {
|
|
|
double lng2 = extracted.get(j + 3);
|
|
double lng2 = extracted.get(j + 3);
|
|
|
double dd = LocationUtils.getDistance(lat1, lng1, lat2, lng2);
|
|
double dd = LocationUtils.getDistance(lat1, lng1, lat2, lng2);
|
|
|
if (d1 + dd >= sd) {
|
|
if (d1 + dd >= sd) {
|
|
|
- double p = (d1 + dd) / (d - steps.get(i).getDistance());
|
|
|
|
|
|
|
+ double p = (d1 + dd - sd) / dd;
|
|
|
double lat3 = (lat2 - lat1) * p + lat1;
|
|
double lat3 = (lat2 - lat1) * p + lat1;
|
|
|
double lng3 = (lng2 - lng1) * p + lng1;
|
|
double lng3 = (lng2 - lng1) * p + lng1;
|
|
|
return new Location(lat3, lng3);
|
|
return new Location(lat3, lng3);
|