123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- using UnityEngine;
- using UnityEngine.Networking;
- using System;
- using System.Collections;
- namespace ARLocation.MapboxRoutes
- {
- using Vendor.SimpleJSON;
- [System.Serializable]
- public class MapboxApi
- {
- public string AccessToken;
- private RouteResponse queryRouteResult;
- public RouteResponse QueryRouteResult => queryRouteResult;
- private GeocodingResponse queryLocalResult;
- public GeocodingResponse QueryLocalResult => queryLocalResult;
- public string errorMessage;
- public string ErrorMessage => errorMessage;
- public MapboxApi(string token)
- {
- AccessToken = token;
- }
- public IEnumerator QueryLocal(string text, bool verbose = false)
- {
- var term = text;
- var url = Uri.EscapeUriString($"https://api.mapbox.com/geocoding/v5/mapbox.places/{term}.json?access_token={AccessToken}");
- errorMessage = null;
- queryLocalResult = null;
- if (verbose)
- {
- Debug.Log($"[MapboxApi#QueryLocal]: {url}");
- }
- using (var req = UnityWebRequest.Get(url))
- {
- yield return req.SendWebRequest();
- if (Utils.Misc.WebRequestResultIsError(req))
- {
- if (verbose)
- {
- Debug.LogError("[MapboxApi#QueryLocal]: Error -> " + req.error);
- }
- errorMessage = req.error;
- }
- else
- {
- if (req.responseCode != 200)
- {
- if (verbose)
- {
- Debug.LogError("[MapboxApi#QueryLocal]: Error -> " + req.downloadHandler.text);
- var node = JSON.Parse(req.downloadHandler.text);
- errorMessage = node["message"].Value; //req.downloadHandler.text;
- queryLocalResult = null;
- }
- }
- else
- {
- if (verbose)
- {
- Debug.Log("[MapboxApi#QueryLocal]: Success -> " + req.downloadHandler.text);
- }
- queryLocalResult = GeocodingResponse.Parse(req.downloadHandler.text);
- }
- }
- }
- }
- public IEnumerator QueryRoute(Location from, Location to, bool alternatives = false, bool verbose = false)
- {
- string alt = alternatives ? "true" : "false";
- string url = $"https://api.mapbox.com/directions/v5/mapbox/walking/{from.Longitude}%2C{from.Latitude}%3B{to.Longitude}%2C{to.Latitude}?alternatives={alt}&geometries=geojson&steps=true&access_token={AccessToken}";
- errorMessage = null;
- queryRouteResult = null;
- if (verbose)
- {
- Debug.Log($"[MapboxApi#QueryRoute]: {url}");
- }
- using (var req = UnityWebRequest.Get(url))
- {
- yield return req.SendWebRequest();
- if (Utils.Misc.WebRequestResultIsError(req))
- {
- if (verbose)
- {
- Debug.LogError("[MapboxApi#QueryRoute]: Error -> " + req.error);
- }
- errorMessage = req.error;
- }
- else
- {
- if (verbose)
- {
- Debug.Log("[MapboxApi#QueryRoute]: Success -> " + req.downloadHandler.text);
- Debug.Log("[MapboxApi#QueryRoute]: Success -> " + req.responseCode);
- }
- queryRouteResult = RouteResponse.Parse(req.downloadHandler.text);
- if (queryRouteResult.Code != "Ok")
- {
- errorMessage = queryRouteResult.Code;
- queryRouteResult = null;
- }
- else
- {
- if (verbose)
- {
- Debug.Log("[MapboxApi#QueryRoute]: Parsed result -> " + queryRouteResult);
- }
- }
- }
- }
- }
- }
- }
|