Known limitations
What AarxMaps 1.0.0 can't do yet, and how to work around it. Anything a builder doesn't expose can still be sent through IMapsApiClient with your own request; see Custom endpoints.
Core
- No populated results in your own tests. Response models (
PlaceDetails,RouteResult,RouteMatrixElement, ...) haveinternalsetters, so you can't build filled-in results when you mockIPlacesServiceorIRoutesService. Workaround: put your own interface in front of the SDK calls and mock that. - Sliding expiration can't be turned off.
MapsCachingOptions.SlidingExpirationalways applies. Workaround: set it equal toAbsoluteExpiration. See Caching. - The language isn't part of the cache key. Apps that share one distributed cache and the same
Prefixbut use differentLanguagesettings serve each other's responses. Workaround: give each app its ownPrefix. - No built-in retries, including on 429 and 5xx responses. Workaround: your own retry policy, honoring
MapsRateLimitException.RetryAfter. See Errors. - No dedicated timeout exception. A timeout is a
MapsApiExceptionwhoseInnerExceptionis anOperationCanceledException. See Cancellation and timeouts. - Errors come from the HTTP status only. On custom endpoints, APIs that report errors inside a 200 response (several legacy web services do) aren't detected. Workaround: check the response body yourself. See Custom endpoints.
Language and region
Places and Routes don't send Google's languageCode and regionCode request fields. Only an Accept-Language header is sent, built from Language and Region in your configuration. So Region has no documented effect, and Language depends on Google honoring the header. See Configuration.
Places
- Search results are minimal. Text and nearby search results only carry
PlaceId,DisplayNameandTypes. Workaround: a Place details call per place you show. - Details always requests the same fields.
GetDetailsAsyncasks for a fixed field set, which Google bills as Place Details Enterprise + Atmosphere. Workaround:GetDetailsRawAsyncwith only the fields you need. See Raw JSON. - Autocomplete areas are circles only. Google also accepts rectangles for autocomplete bias and restriction. See Search areas.
- Autocomplete match start is missing.
PlaceSuggestion.EndOffsetonly says where the first match ends, not where it starts, so you can't reliably highlight the matched text. - Request options the builders don't expose:
- Text search:
openNow,minRating,priceLevels,rankPreference,strictTypeFiltering,includePureServiceAreaBusinesses. - Nearby search:
excludedTypes,includedPrimaryTypes,excludedPrimaryTypes,rankPreference. - Autocomplete:
includedRegionCodes,origin,inputOffset,includeQueryPredictions.
- Text search:
Routes
- No extra computations. Google's
extraComputationsisn't sent, so there are no traffic speeds along the polyline and no toll information. - Missing route modifiers.
avoidTunnelsandtollPassesaren't available onRouteModifiers. - Travel advisories are route level only. There are none on legs or steps.
- No geocoding results. Google's
geocodingResultsfor address waypoints isn't mapped. - Minimal transit details. No headway and no agency phone number. Workaround:
GetRoutesRawAsyncwith those fields. See Raw JSON. - The distance matrix isn't streamed to you.
GetDistancesAsyncreads the whole matrix before it returns. Workaround:SendAndEnumerateAsynconIMapsApiClient. See Distance matrix. - No polyline decoder. Paths are encoded strings in Google's encoded polyline format; decode them yourself or with a library.
- Inconsistent
nullhandling in the builders.RouteRequestBuilder.From(null)andTo(null)don't throw;Build()then reports a missing origin or destination.WithRouteModifiers(null)andWithTransitPreferences(null)clear the value instead of throwing.AddIntermediate,AddOriginandAddDestinationdo throw onnull. This will be made consistent in a future version. Workaround: don't passnull; only call these methods when you have a value.