Пример #1
0
        public async Task <byte[]> FetchThumbnail(MooiPlacemark placemark)
        {
            if (placemark.Type == PlacemarkType.Route)
            {
                throw new NotSupportedException("Routes are not supported");
            }

            var url = $"c={_formatter.FormatCoordinates(null, placemark)}&z={THUMBNAIL_MAP_ZOOM}&ppi=320&w=600&h=390";

            return(await DownloadData(IMAGES_MAPVIEW_URL, url));
        }
Пример #2
0
        public async Task <FoursquareVenue> LookupMatchingVenue(KmlPlacemark placemark, string language, CancellationToken cancellationToken)
        {
            if (placemark.Coordinates.Length == 0 ||
                _kmlCalculator.PlacemarkIsShape(placemark))
            {
                return(null);
            }

            FoursquareResponseVenue venue;
            var venueUrl = ExtractFoursquareUrlFromDescription(placemark);

            if (string.IsNullOrEmpty(venueUrl))
            {
                var coord = _formatter.FormatCoordinates(null, placemark);
                var url   = $"{VENUES_SEARCH_URL}ll={coord}&query={Uri.EscapeUriString(placemark.Name)}&intent=match&limit={LIMIT_LOOKUP}";
                var data  = await DownloadString(url, language, cancellationToken);

                if (data == null)
                {
                    return(null);
                }
                var response = JsonConvert.DeserializeObject <FoursquareResponse <FoursquareSearchResponseBody> >(data);
                if (!CheckMeta(url, response))
                {
                    return(null);
                }
                if (response.Response.Venues.Length == 0)
                {
                    return(null);
                }
                venue = response.Response.Venues[0];
                venue = await DownloadVenueDetails(venue.Id, language, cancellationToken) ?? venue;
            }
            else
            {
                var venueId = ExtractVenueIdFromUrl(venueUrl);
                venue = await DownloadVenueDetails(venueId, language, cancellationToken);

                placemark.Description = placemark.Description.Replace(venueUrl, string.Empty).Trim();
            }

            return(CreateVenueModel(venue));
        }