[TASK] Initial commit with basic product setup

This commit is contained in:
2019-08-18 13:50:14 +02:00
commit 01a66a8e1f
2548 changed files with 167528 additions and 0 deletions

View File

@@ -0,0 +1,122 @@
//-----------------------------------------------------------------------
// <copyright file="DirectionsExample.cs" company="Mapbox">
// Copyright (c) 2016 Mapbox. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
namespace Mapbox.Examples.Playground
{
using Mapbox.Unity;
using System;
using UnityEngine;
using UnityEngine.UI;
using Mapbox.Json;
using Mapbox.Directions;
using Mapbox.Utils;
using Mapbox.Utils.JsonConverters;
using Mapbox.Geocoding;
/// <summary>
/// Fetch directions JSON once start and end locations are provided.
/// Example: Enter Start Location: San Francisco, Enter Destination: Los Angeles
/// </summary>
public class DirectionsExample : MonoBehaviour
{
[SerializeField]
Text _resultsText;
[SerializeField]
ForwardGeocodeUserInput _startLocationGeocoder;
[SerializeField]
ForwardGeocodeUserInput _endLocationGeocoder;
Directions _directions;
Vector2d[] _coordinates;
DirectionResource _directionResource;
void Start()
{
_directions = MapboxAccess.Instance.Directions;
_startLocationGeocoder.OnGeocoderResponse += StartLocationGeocoder_OnGeocoderResponse;
_endLocationGeocoder.OnGeocoderResponse += EndLocationGeocoder_OnGeocoderResponse;
_coordinates = new Vector2d[2];
// Can we make routing profiles an enum?
_directionResource = new DirectionResource(_coordinates, RoutingProfile.Driving);
_directionResource.Steps = true;
}
void OnDestroy()
{
if (_startLocationGeocoder != null)
{
_startLocationGeocoder.OnGeocoderResponse -= StartLocationGeocoder_OnGeocoderResponse;
}
if (_startLocationGeocoder != null)
{
_startLocationGeocoder.OnGeocoderResponse -= EndLocationGeocoder_OnGeocoderResponse;
}
}
/// <summary>
/// Start location geocoder responded, update start coordinates.
/// </summary>
/// <param name="sender">Sender.</param>
/// <param name="e">E.</param>
void StartLocationGeocoder_OnGeocoderResponse(ForwardGeocodeResponse response)
{
_coordinates[0] = _startLocationGeocoder.Coordinate;
if (ShouldRoute())
{
Route();
}
}
/// <summary>
/// End location geocoder responded, update end coordinates.
/// </summary>
/// <param name="sender">Sender.</param>
/// <param name="e">E.</param>
void EndLocationGeocoder_OnGeocoderResponse(ForwardGeocodeResponse response)
{
_coordinates[1] = _endLocationGeocoder.Coordinate;
if (ShouldRoute())
{
Route();
}
}
/// <summary>
/// Ensure both forward geocoders have a response, which grants access to their respective coordinates.
/// </summary>
/// <returns><c>true</c>, if both forward geocoders have a response, <c>false</c> otherwise.</returns>
bool ShouldRoute()
{
return _startLocationGeocoder.HasResponse && _endLocationGeocoder.HasResponse;
}
/// <summary>
/// Route
/// </summary>
void Route()
{
_directionResource.Coordinates = _coordinates;
_directions.Query(_directionResource, HandleDirectionsResponse);
}
/// <summary>
/// Log directions response to UI.
/// </summary>
/// <param name="res">Res.</param>
void HandleDirectionsResponse(DirectionsResponse res)
{
var data = JsonConvert.SerializeObject(res, Formatting.Indented, JsonConverters.Converters);
string sub = data.Substring(0, data.Length > 5000 ? 5000 : data.Length) + "\n. . . ";
_resultsText.text = sub;
}
}
}