Пример #1
0
        public Route Walk(GeoPoint from, GeoPoint to)
        {
            if (string.IsNullOrEmpty(_token))
            {
                throw new ArgumentException("No Mapbox token");
            }

            var coords  = Uri.EscapeDataString($"{from.AsString(',', true)};{to.AsString(',', true)}");
            var fullUrl = $"{_url}walking/{coords}?alternatives=false&geometries=geojson&steps=false&access_token={_token}";

            var response = Utils.GetRequest(fullUrl, _logger);

            try
            {
                var data  = JsonConvert.DeserializeObject <MapboxResult>(response, Utils.ConverterSettings);
                var route = data.Routes.First();

                return(new Route
                {
                    Distance = (int)Math.Round(route.Distance),
                    Time = (int)Math.Round(route.Duration),
                    Points = route.Geometry.Coordinates
                             .Select(c => new GeoPoint(c[1], c[0]))
                             .ToArray()
                });
            }
            catch (Exception _)
            {
                _logger?.LogError(response);
                return(null);
            }
        }
Пример #2
0
        public string Construct(GeoPoint boundsLower, GeoPoint boundsHigher)
        {
            var bounds = $"({boundsLower.AsString(',')},{boundsHigher.AsString(',')})";
            var q      = "";

            if ((_elementType & ElementType.Node) > 0)
            {
                q += $"node{TagsToString()}{bounds};";
            }
            if ((_elementType & ElementType.Way) > 0)
            {
                q += $"way{TagsToString()}{bounds};";
            }
            if ((_elementType & ElementType.Relation) > 0)
            {
                q += $"relation{TagsToString()}{bounds};";
            }

            return(q);
        }