81 lines
2.1 KiB
C#
81 lines
2.1 KiB
C#
|
|
using System.Collections;
|
||
|
|
|
||
|
|
namespace ARLocation.MapboxRoutes
|
||
|
|
{
|
||
|
|
public enum RouteWaypointType
|
||
|
|
{
|
||
|
|
UserLocation,
|
||
|
|
Location,
|
||
|
|
Query
|
||
|
|
};
|
||
|
|
|
||
|
|
[System.Serializable]
|
||
|
|
public class RouteWaypoint
|
||
|
|
{
|
||
|
|
public RouteWaypointType Type;
|
||
|
|
public Location Location = new Location();
|
||
|
|
public string Query;
|
||
|
|
|
||
|
|
public override string ToString()
|
||
|
|
{
|
||
|
|
return "RouteWaypoint{ \n" +
|
||
|
|
$"Type = {Type}\n" +
|
||
|
|
$"Location = {Location}\n" +
|
||
|
|
$"Query = {Query}\n" +
|
||
|
|
"}";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public class RouteWaypointResolveLocation
|
||
|
|
{
|
||
|
|
public Location result;
|
||
|
|
public bool IsError;
|
||
|
|
public string ErrorMessage;
|
||
|
|
|
||
|
|
private RouteWaypoint w;
|
||
|
|
private MapboxApi api;
|
||
|
|
|
||
|
|
public RouteWaypointResolveLocation(MapboxApi mapboxApi, RouteWaypoint waypoint)
|
||
|
|
{
|
||
|
|
w = waypoint;
|
||
|
|
api = mapboxApi;
|
||
|
|
}
|
||
|
|
|
||
|
|
public IEnumerator Resolve()
|
||
|
|
{
|
||
|
|
switch (w.Type)
|
||
|
|
{
|
||
|
|
case RouteWaypointType.Location:
|
||
|
|
result = w.Location;
|
||
|
|
IsError = false;
|
||
|
|
ErrorMessage = null;
|
||
|
|
yield break;
|
||
|
|
|
||
|
|
case RouteWaypointType.UserLocation:
|
||
|
|
result = ARLocationProvider.Instance.CurrentLocation.ToLocation();
|
||
|
|
IsError = false;
|
||
|
|
ErrorMessage = null;
|
||
|
|
yield break;
|
||
|
|
|
||
|
|
case RouteWaypointType.Query:
|
||
|
|
yield return api.QueryLocal(w.Query);
|
||
|
|
|
||
|
|
if (api.ErrorMessage != null)
|
||
|
|
{
|
||
|
|
result = null;
|
||
|
|
IsError = true;
|
||
|
|
ErrorMessage = api.ErrorMessage;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
result = api.QueryLocalResult.features[0].geometry.coordinates[0];
|
||
|
|
IsError = false;
|
||
|
|
ErrorMessage = null;
|
||
|
|
}
|
||
|
|
|
||
|
|
yield break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|