mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-29 09:13:46 +00:00
[routing] New API for lanes
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
package app.organicmaps.sdk.routing;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public final class LaneInfo
|
||||
{
|
||||
public final LaneWay[] mLaneWays;
|
||||
public final LaneWay mActiveLaneWay;
|
||||
|
||||
public LaneInfo(@NonNull LaneWay[] laneWays, LaneWay activeLane)
|
||||
{
|
||||
mLaneWays = laneWays;
|
||||
mActiveLaneWay = activeLane;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("LaneInfo{activeLaneWay=").append(mActiveLaneWay.toString()).append(", laneWays=[");
|
||||
for (LaneWay i : mLaneWays)
|
||||
sb.append(" ").append(i);
|
||||
sb.append("]}");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
@@ -3,25 +3,20 @@ package app.organicmaps.sdk.routing;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import app.organicmaps.sdk.R;
|
||||
|
||||
/**
|
||||
* IMPORTANT : Order of enum values MUST BE the same
|
||||
* with native LaneWay enum (see routing/turns.hpp for details).
|
||||
* Information for every lane is composed of some number values below.
|
||||
* For example, a lane may have THROUGH and RIGHT values.
|
||||
*/
|
||||
public enum LaneWay
|
||||
{
|
||||
NONE(R.drawable.ic_turn_straight),
|
||||
REVERSE(R.drawable.ic_turn_uleft),
|
||||
SHARP_LEFT(R.drawable.ic_turn_left_sharp),
|
||||
LEFT(R.drawable.ic_turn_left),
|
||||
SLIGHT_LEFT(R.drawable.ic_turn_left_slight),
|
||||
MERGE_TO_RIGHT(R.drawable.ic_turn_right_slight),
|
||||
THROUGH(R.drawable.ic_turn_straight),
|
||||
MERGE_TO_LEFT(R.drawable.ic_turn_left_slight),
|
||||
SLIGHT_RIGHT(R.drawable.ic_turn_right_slight),
|
||||
RIGHT(R.drawable.ic_turn_right),
|
||||
SHARP_RIGHT(R.drawable.ic_turn_right_sharp);
|
||||
None(R.drawable.ic_turn_straight),
|
||||
ReverseLeft(R.drawable.ic_turn_uleft),
|
||||
SharpLeft(R.drawable.ic_turn_left_sharp),
|
||||
Left(R.drawable.ic_turn_left),
|
||||
MergeToLeft(R.drawable.ic_turn_left_slight),
|
||||
SlightLeft(R.drawable.ic_turn_left_slight),
|
||||
Through(R.drawable.ic_turn_straight),
|
||||
SlightRight(R.drawable.ic_turn_right_slight),
|
||||
MergeToRight(R.drawable.ic_turn_right_slight),
|
||||
Right(R.drawable.ic_turn_right),
|
||||
SharpRight(R.drawable.ic_turn_right_sharp),
|
||||
ReverseRight(R.drawable.ic_turn_uright);
|
||||
|
||||
public final int mTurnRes;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package app.organicmaps.sdk.routing;
|
||||
|
||||
import androidx.annotation.Keep;
|
||||
import androidx.annotation.Nullable;
|
||||
import app.organicmaps.sdk.util.Distance;
|
||||
|
||||
// Called from JNI.
|
||||
@@ -25,7 +26,8 @@ public final class RoutingInfo
|
||||
public final CarDirection carDirection;
|
||||
public final CarDirection nextCarDirection;
|
||||
public final int exitNum;
|
||||
public final SingleLaneInfo[] lanes;
|
||||
@Nullable
|
||||
public final LaneInfo[] lanes;
|
||||
// For pedestrian routing.
|
||||
public final PedestrianTurnDirection pedestrianTurnDirection;
|
||||
// Current speed limit in meters per second.
|
||||
@@ -37,7 +39,7 @@ public final class RoutingInfo
|
||||
private RoutingInfo(Distance distToTarget, Distance distToTurn, String currentStreet, String nextStreet,
|
||||
String nextNextStreet, double completionPercent, int vehicleTurnOrdinal,
|
||||
int vehicleNextTurnOrdinal, int pedestrianTurnOrdinal, int exitNum, int totalTime,
|
||||
SingleLaneInfo[] lanes, double speedLimitMps, boolean speedLimitExceeded,
|
||||
@Nullable LaneInfo[] lanes, double speedLimitMps, boolean speedLimitExceeded,
|
||||
boolean shouldPlayWarningSignal)
|
||||
{
|
||||
this.distToTarget = distToTarget;
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
package app.organicmaps.sdk.routing;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public final class SingleLaneInfo
|
||||
{
|
||||
public LaneWay[] mLane;
|
||||
public boolean mIsActive;
|
||||
|
||||
public SingleLaneInfo(@NonNull byte[] laneOrdinals, boolean isActive)
|
||||
{
|
||||
mLane = new LaneWay[laneOrdinals.length];
|
||||
final LaneWay[] values = LaneWay.values();
|
||||
for (int i = 0; i < mLane.length; i++)
|
||||
mLane[i] = values[laneOrdinals[i]];
|
||||
|
||||
mIsActive = isActive;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
final int initialCapacity = 32;
|
||||
StringBuilder sb = new StringBuilder(initialCapacity);
|
||||
sb.append("Is the lane active? ").append(mIsActive).append(". The lane directions IDs are");
|
||||
for (LaneWay i : mLane)
|
||||
sb.append(" ").append(i.ordinal());
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user