๐งฉ Places Abstractions
The Places module defines a set of service abstractions that provide access to Google Places functionality.
These services expose high-level operations such as:
- Autocomplete suggestions
- Place search
- Detailed place information (details, photos, reviews)
โ ๏ธ These interfaces are typically consumed through
IPlacesService.
๐งพ IPlacesServiceโ
Provides a unified entry point for all Places functionality.
public interface IPlacesService {
IAutocompleteService Autocomplete { get; }
IDetailsService Details { get; }
ISearchService Search { get; }
}
โ๏ธ Responsibilitiesโ
- Aggregate all Places services
- Provide a single access point for consumers
๐ง Notesโ
- Recommended entry point for most use cases
- Avoids injecting multiple services individually
๐ IAutocompleteServiceโ
Provides autocomplete suggestions based on user input.
This service is typically the entry point of the Places workflow, where users provide partial input and receive suggestions that include a PlaceId.
The returned
PlaceIdcan then be used to retrieve full place details via theIDetailsService.
public interface IAutocompleteService {
Task<IReadOnlyList<PlaceSuggestion>> SuggestPlacesAsync(
AutocompleteRequest autocompleteRequest
);
}
โ๏ธ Responsibilitiesโ
- Retrieve predicted places from partial input
- Support search-as-you-type scenarios
๐ See: AutocompleteRequest
๐ง Notesโ
- Useful for UI inputs (search bars, forms)
- Returns lightweight suggestion models -> see PlaceSuggestion
๐ ISearchServiceโ
Provides place search functionality.
This service represents another entry point of the Places workflow, allowing users to search for places using text queries or geographic constraints.
The results include
PlaceIdvalues, which can be used to fetch detailed information through theIDetailsService.
public interface ISearchService {
Task<IReadOnlyList<PlaceSearchResult>> SearchByTextAsync(string textQuery);
Task<IReadOnlyList<PlaceSearchResult>> SearchByNearbyAsync(NearbyRequest nearbyRequest);
}
โ๏ธ Responsibilitiesโ
- Perform text-based searches
- Perform location-based (nearby) searches -> see NearbyRequest
๐ง Notesโ
- Covers the most common discovery scenarios
- Returns structured search results -> see PlaceSearchResult
๐ IDetailsServiceโ
Provides detailed information about places based on PlaceId.
public interface IDetailsService {
Task<PlaceDetails> GetDetailsAsync(string placeId);
Task<JsonDocument> GetDetailsRawAsync(string placeId, params string[] fields);
Task<IReadOnlyList<PlacePhoto>> GetPhotosAsync(string placeId, PhotoRequest? photoRequest = null);
Task<PlaceReviews> GetReviewsAsync(string placeId);
}
โ๏ธ Responsibilitiesโ
- Retrieve structured place details -> see PlaceDetails
- Provide raw JSON access for advanced scenarios
- Fetch photos and reviews -> see PlacePhoto - PlaceReviews
๐ง Notesโ
- Combines multiple endpoints into a single service
- Raw access allows flexibility beyond mapped models
- Designed for both simple and advanced use cases
โ ๏ธ Importantโ
using var json = await detailsService.GetDetailsRawAsync(placeId);
The returned JsonDocument must be disposed properly.