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)); }
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)); }