getStaticMap method
- required String fileName,
- required int height,
- required int width,
- String? boundedPositions,
- String? boundingBox,
- String? center,
- ColorScheme? colorScheme,
- String? compactOverlay,
- bool? cropLabels,
- String? geoJsonOverlay,
- String? key,
- LabelSize? labelSize,
- String? language,
- int? padding,
- MapFeatureMode? pointsOfInterests,
- String? politicalView,
- int? radius,
- ScaleBarUnit? scaleBarUnit,
- StaticMapStyle? style,
- double? zoom,
GetStaticMap provides high-quality static map images with
customizable options. You can modify the map's appearance and overlay
additional information. It's an ideal solution for applications requiring
tailored static map snapshots.
For more information, see the following topics in the Amazon Location Service Developer Guide:
May throw AccessDeniedException.
May throw InternalServerException.
May throw ThrottlingException.
May throw ValidationException.
Parameter fileName :
The map scaling parameter to size the image, icons, and labels. It follows
the pattern of ^map(@2x)?$.
Example: map, map@2x
Parameter height :
Specifies the height of the map image.
Parameter width :
Specifies the width of the map image.
Parameter boundedPositions :
Takes in two or more pair of coordinates in World Geodetic System (WGS 84)
format: [longitude, latitude], with each coordinate separated by a
comma. The API will generate an image to encompass all of the provided
coordinates.
Example: 97.170451,78.039098,99.045536,27.176178
Parameter boundingBox :
Takes in two pairs of coordinates in World Geodetic System (WGS 84)
format: [longitude, latitude], denoting south-westerly and
north-easterly edges of the image. The underlying area becomes the view of
the image.
Example: -123.17075,49.26959,-123.08125,49.31429
Parameter center :
Takes in a pair of coordinates in World Geodetic System (WGS 84) format:
[longitude, latitude], which becomes the center point of the image. This
parameter requires that either zoom or radius is set.
Example: 49.295,-123.108
Parameter colorScheme :
Sets the color tone for the map, such as dark and light.
Example: Light
Default value: Light
Parameter compactOverlay :
Takes in a string to draw geometries on the image. The input is a comma
separated format as follows format: [Lon, Lat]
Example:
line:-122.407653,37.798557,-122.413291,37.802443;color=%23DD0000;width=7;outline-color=#00DD00;outline-width=5yd|point:-122.40572,37.80004;label=Fog
Hill Market;size=large;text-color=%23DD0000;color=#EE4B2B
Parameter cropLabels :
It is a flag that takes in true or false. It prevents the labels that are
on the edge of the image from being cut or obscured.
Parameter geoJsonOverlay :
Takes in a string to draw geometries on the image. The input is a valid
GeoJSON collection object.
Example: {"type":"FeatureCollection","features":
[{"type":"Feature","geometry":{"type":"MultiPoint","coordinates":
[[-90.076345,51.504107],[-0.074451,51.506892]]},"properties":
{"color":"#00DD00"}}]}
Parameter key :
Optional: The API key to be used for authorization. Either an API key or
valid SigV4 signature must be provided when making a request.
Parameter labelSize :
Overrides the label size auto-calculated by FileName. Takes
in one of the values - Small or Large.
Parameter language :
Specifies the language on the map labels using the BCP 47 language tag,
limited to ISO 639-1 two-letter language codes. If the specified language
data isn't available for the map image, the labels will default to the
regional primary language.
Supported codes:
-
ar -
as -
az -
be -
bg -
bn -
bs -
ca -
cs -
cy -
da -
de -
el -
en -
es -
et -
eu -
fi -
fo -
fr -
ga -
gl -
gn -
gu -
he -
hi -
hr -
hu -
hy -
id -
is -
it -
ja -
ka -
kk -
km -
kn -
ko -
ky -
lt -
lv -
mk -
ml -
mr -
ms -
mt -
my -
nl -
no -
or -
pa -
pl -
pt -
ro -
ru -
sk -
sl -
sq -
sr -
sv -
ta -
te -
th -
tr -
uk -
uz -
vi -
zh
Parameter padding :
Applies additional space (in pixels) around overlay feature to prevent
them from being cut or obscured.
Min: 1
Max: min(height, width)/4
Example: 100
Parameter pointsOfInterests :
Determines if the result image will display icons representing points of
interest on the map.
Parameter politicalView :
Specifies the political view, using ISO 3166-2 or ISO 3166-3 country code
format.
The following political views are currently supported:
-
ARG: Argentina's view on the Southern Patagonian Ice Field and Tierra Del Fuego, including the Falkland Islands, South Georgia, and South Sandwich Islands -
EGY: Egypt's view on Bir Tawil -
IND: India's view on Gilgit-Baltistan -
KEN: Kenya's view on the Ilemi Triangle -
MAR: Morocco's view on Western Sahara -
RUS: Russia's view on Crimea -
SDN: Sudan's view on the Halaib Triangle -
SRB: Serbia's view on Kosovo, Vukovar, and Sarengrad Islands -
SUR: Suriname's view on the Courantyne Headwaters and Lawa Headwaters -
SYR: Syria's view on the Golan Heights -
TUR: Turkey's view on Cyprus and Northern Cyprus -
TZA: Tanzania's view on Lake Malawi -
URY: Uruguay's view on Rincon de Artigas -
VNM: Vietnam's view on the Paracel Islands and Spratly Islands
Parameter radius :
Used with center parameter, it specifies the zoom of the image where you
can control it on a granular level. Takes in any value >=
1.
Example: 1500
Unit: Meters
Parameter scaleBarUnit :
Displays a scale on the bottom right of the map image with the unit
specified in the input.
Example: KilometersMiles, Miles, Kilometers, MilesKilometers
Parameter style :
Style specifies the desired map style.
Parameter zoom :
Specifies the zoom level of the map image.
Implementation
Future<GetStaticMapResponse> getStaticMap({
required String fileName,
required int height,
required int width,
String? boundedPositions,
String? boundingBox,
String? center,
ColorScheme? colorScheme,
String? compactOverlay,
bool? cropLabels,
String? geoJsonOverlay,
String? key,
LabelSize? labelSize,
String? language,
int? padding,
MapFeatureMode? pointsOfInterests,
String? politicalView,
int? radius,
ScaleBarUnit? scaleBarUnit,
StaticMapStyle? style,
double? zoom,
}) async {
_s.validateNumRange(
'radius',
radius,
0,
4294967295,
);
final $query = <String, List<String>>{
'height': [height.toString()],
'width': [width.toString()],
if (boundedPositions != null) 'bounded-positions': [boundedPositions],
if (boundingBox != null) 'bounding-box': [boundingBox],
if (center != null) 'center': [center],
if (colorScheme != null) 'color-scheme': [colorScheme.value],
if (compactOverlay != null) 'compact-overlay': [compactOverlay],
if (cropLabels != null) 'crop-labels': [cropLabels.toString()],
if (geoJsonOverlay != null) 'geojson-overlay': [geoJsonOverlay],
if (key != null) 'key': [key],
if (labelSize != null) 'label-size': [labelSize.value],
if (language != null) 'lang': [language],
if (padding != null) 'padding': [padding.toString()],
if (pointsOfInterests != null) 'pois': [pointsOfInterests.value],
if (politicalView != null) 'political-view': [politicalView],
if (radius != null) 'radius': [radius.toString()],
if (scaleBarUnit != null) 'scale-unit': [scaleBarUnit.value],
if (style != null) 'style': [style.value],
if (zoom != null) 'zoom': [zoom.toString()],
};
final response = await _protocol.sendRaw(
payload: null,
method: 'GET',
requestUri: '/static/${Uri.encodeComponent(fileName)}',
queryParams: $query,
exceptionFnMap: _exceptionFns,
);
return GetStaticMapResponse(
blob: await response.stream.toBytes(),
pricingBucket: _s.extractHeaderStringValue(
response.headers, 'x-amz-geo-pricing-bucket')!,
cacheControl:
_s.extractHeaderStringValue(response.headers, 'Cache-Control'),
contentType:
_s.extractHeaderStringValue(response.headers, 'Content-Type'),
eTag: _s.extractHeaderStringValue(response.headers, 'ETag'),
);
}