Render - Get Map Static Image

This rendering API produces static, rasterized map views of a user-defined area. It's suitable for lightweight web applications, when the desired user experience doesn't require interactive map controls, or when bandwidth is limited. This API is also useful for embedding maps in applications outside of the browser, in backend services, report generation, or desktop applications.

This API includes parameters for basic data visualization:

  • Labeled pushpins in multiple styles.
  • Render circle, path, and polygon geometry types.

For more information and detailed examples, see Render custom data on a raster map.

The dimensions of the bbox parameter are constrained, depending on the zoom level. This ensures the resulting image has an appropriate level of detail.

Zoom Level Min Lon Range Max Lon Range Min Lat Range Max Lat Range
0 56.25 360.0 30.1105585173 180.0
1 28.125 360.0 14.87468995 180.0
2 14.063 351.5625 7.4130741851 137.9576312246
3 7.03125 175.78125 3.7034501005 73.6354071932
4 3.515625 87.890625 1.8513375155 35.4776115315
5 1.7578125 43.9453125 0.925620264 17.4589959239
6 0.87890625 21.97265625 0.4628040687 8.6907788223
7 0.439453125 10.986328125 0.2314012764 4.3404320789
8 0.2197265625 5.4931640625 0.1157005434 2.1695927024
9 0.1098632812 2.7465820312 0.0578502599 1.0847183194
10 0.0549316406 1.3732910156 0.0289251285 0.5423494021
11 0.0274658203 0.6866455078 0.014462564 0.2711734813
12 0.0137329102 0.3433227539 0.007231282 0.1355865882
13 0.0068664551 0.171661377 0.003615641 0.067793275
14 0.0034332275 0.0858306885 0.0018078205 0.0338966351
15 0.0017166138 0.0429153442 0.0009039102 0.0169483173
16 0.0008583069 0.0214576721 0.0004519551 0.0084741586
17 0.0004291534 0.0107288361 0.0002259776 0.0042370793
18 0.0002145767 0.005364418 0.0001129888 0.0021185396
19 0.0001072884 0.002682209 5.64944E-05 0.0010592698
20 5.36442E-05 0.0013411045 2.82472E-05 0.0005296349

Note : Either center or bbox parameter must be supplied to the API.

GET https://atlas.microsoft.com/map/static?api-version=2024-04-01
GET https://atlas.microsoft.com/map/static?api-version=2024-04-01&tilesetId={tilesetId}&trafficLayer={trafficLayer}&zoom={zoom}&center={center}&bbox={bbox}&height={height}&width={width}&language={language}&view={view}&pins={pins}&path={path}

URI Parameters

Name In Required Type Description
api-version
query True

string

Version number of Azure Maps API. Current version is 2024-04-01.

bbox
query

number[]

A bounding box is defined by two latitudes and two longitudes that represent the four sides of a rectangular area on the Earth. Format : 'minLon, minLat, maxLon, maxLat' (in double).

Note: Either bbox or center are required parameters. They are mutually exclusive. bbox shouldn’t be used with height or width.

The maximum and minimum allowed ranges for Lat and Lon are defined for each zoom level in the table at the top of this page.

center
query

number[]

Coordinates of the center point in double. Format: 'lon,lat'. Longitude range: -180 to 180. Latitude range: -90 to 90.

Note: Either center or bbox are required parameters. They are mutually exclusive.

height
query

integer

int32

Height of the resulting image in pixels. Range from 80 to 1500. Default is 512. It shouldn’t be used with bbox.

language
query

string

Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.

Please refer to Supported Languages for details.

path
query

string[]

Path style and locations (in double). Use this parameter to optionally add lines, polygons or circles to the image. The path style describes the appearance of the line and fill. (Be sure to properly URL-encode values of this parameter since it will contain reserved characters such as pipes and punctuation.)

Path parameter is supported in Azure Maps account SKU starting with S1. Multiple instances of the path parameter allow to specify multiple geometries with their styles. Number of parameters per request is limited to 10 and number of locations is limited to 100 per path.

To render a circle with radius 100 meters and center point at latitude 45°N and longitude 122°W using the default style, add the querystring parameter

path=ra100||-122 45

Note that the longitude comes before the latitude. After URL encoding this will look like

path=ra100%7C%7C-122+45

All of the examples here show the path parameter without URL encoding, for clarity.

To render a line, separate each location with a pipe character. For example, use

path=||-122 45|-119.5 43.2|-121.67 47.12

A polygon is specified with a closed path, where the first and last points are equal. For example, use

path=||-122 45|-119.5 43.2|-121.67 47.12|-122 45

Longitude value for locations of lines and polygons can be in the range from -360 to 360 to allow for rendering of geometries crossing the anti-meridian.

Style Modifiers

You can modify the appearance of the path by adding style modifiers. These are added before the locations. Style modifiers each have a two-letter name. These abbreviated names are used to help reduce the length of the URL.

To change the color of the outline, use the 'lc' style modifier and specify the color using the HTML/CSS RGB color format which is a six-digit hexadecimal number (the three-digit form is not supported). For example, to use a deep pink color which you would specify as #FF1493 in CSS, use

path=lcFF1493||-122 45|-119.5 43.2

Multiple style modifiers may be combined to create a more complex visual style.

lc0000FF|lw3|la0.60|fa0.50||-122.2 47.6|-122.2 47.7|-122.3 47.7|-122.3 47.6|-122.2 47.6

Style Modifier Summary

Modifier Description Type Range
lc Line color string 000000 to FFFFFF
fc Fill color string 000000 to FFFFFF
la Line alpha (opacity) float 0 to 1
fa Fill alpha (opacity) float 0 to 1
lw Line width int32 (0, 50]
ra Circle radius (meters) float Greater than 0
pins
query

string[]

Pushpin style and instances. Use this parameter to optionally add pushpins to the image. The pushpin style describes the appearance of the pushpins, and the instances specify the coordinates of the pushpins (in double) and optional labels for each pin. (Be sure to properly URL-encode values of this parameter since it will contain reserved characters such as pipes and punctuation.)

The Azure Maps account S0 SKU only supports a single instance of the pins parameter and the number of locations is limited to 5 per pin. Other SKUs allow up to 25 instances of the pins parameter to specify multiple pin styles, and the number of locations is limited to 50 per pin.

To render a pushpin at latitude 45°N and longitude 122°W using the default built-in pushpin style, add the querystring parameter

pins=default||-122 45

Note that the longitude comes before the latitude. After URL encoding this will look like

pins=default%7C%7C-122+45

All of the examples here show the pins parameter without URL encoding, for clarity.

To render a pin at multiple locations, separate each location with a pipe character. For example, use

pins=default||-122 45|-119.5 43.2|-121.67 47.12

The S0 Azure Maps account SKU only allows five pushpins. Other account SKUs do not have this limitation.

Style Modifiers

You can modify the appearance of the pins by adding style modifiers. These are added after the style but before the locations and labels. Style modifiers each have a two-letter name. These abbreviated names are used to help reduce the length of the URL.

To change the color of the pushpin, use the 'co' style modifier and specify the color using the HTML/CSS RGB color format which is a six-digit hexadecimal number (the three-digit form is not supported). For example, to use a deep pink color which you would specify as #FF1493 in CSS, use

pins=default|coFF1493||-122 45

Pushpin Labels

To add a label to the pins, put the label in single quotes just before the coordinates. Avoid using special character such as | or || in label. For example, to label three pins with the values '1', '2', and '3', use

pins=default||'1'-122 45|'2'-119.5 43.2|'3'-121.67 47.12

There is a built-in pushpin style called 'none' that does not display a pushpin image. You can use this if you want to display labels without any pin image. For example,

pins=none||'A'-122 45|'B'-119.5 43.2

To change the color of the pushpin labels, use the 'lc' label color style modifier. For example, to use pink pushpins with black labels, use

pins=default|coFF1493|lc000000||-122 45

To change the size of the labels, use the 'ls' label size style modifier. The label size represents the approximate height of the label text in pixels. For example, to increase the label size to 12, use

pins=default|ls12||'A'-122 45|'B'-119 43

The labels are centered at the pushpin 'label anchor.' The anchor location is predefined for built-in pushpins and is at the top center of custom pushpins (see below). To override the label anchor, using the 'la' style modifier and provide X and Y pixel coordinates for the anchor. These coordinates are relative to the top left corner of the pushpin image. Positive X values move the anchor to the right, and positive Y values move the anchor down. For example, to position the label anchor 10 pixels right and 4 pixels above the top left corner of the pushpin image, use

pins=default|la10 -4||'A'-122 45|'B'-119 43

Custom Pushpins

To use a custom pushpin image, use the word 'custom' as the pin style name, and then specify a URL after the location and label information. The maximum allowed size for a customized label image is 65,536 pixels. Use two pipe characters to indicate that you're done specifying locations and are starting the URL. For example,

pins=custom||-122 45||http://contoso.com/pushpins/red.png

After URL encoding, this would look like

pins=custom%7C%7C-122+45%7C%7Chttp%3A%2F%2Fcontoso.com%2Fpushpins%2Fred.png

By default, custom pushpin images are drawn centered at the pin coordinates. This usually isn't ideal as it obscures the location that you're trying to highlight. To override the anchor location of the pin image, use the 'an' style modifier. This uses the same format as the 'la' label anchor style modifier. For example, if your custom pin image has the tip of the pin at the top left corner of the image, you can set the anchor to that spot by using

pins=custom|an0 0||-122 45||http://contoso.com/pushpins/red.png

Note: If you use the 'co' color modifier with a custom pushpin image, the specified color will replace the RGB channels of the pixels in the image but will leave the alpha (opacity) channel unchanged. This would usually only be done with a solid-color custom image.

Scale, Rotation, and Opacity

You can make pushpins and their labels larger or smaller by using the 'sc' scale style modifier. This is a value greater than zero. A value of 1 is the standard scale. Values larger than 1 will make the pins larger, and values smaller than 1 will make them smaller. For example, to draw the pushpins 50% larger than normal, use

pins=default|sc1.5||-122 45

You can rotate pushpins and their labels by using the 'ro' rotation style modifier. This is a number of degrees of clockwise rotation. Use a negative number to rotate counter-clockwise. For example, to rotate the pushpins 90 degrees clockwise and double their size, use

pins=default|ro90|sc2||-122 45

You can make pushpins and their labels partially transparent by specifying the 'al' alpha style modifier. This is a number between 0 and 1 indicating the opacity of the pushpins. Zero makes them completely transparent (and not visible) and 1 makes them completely opaque (which is the default). For example, to make pushpins and their labels only 67% opaque, use

pins=default|al.67||-122 45

Style Modifier Summary

Modifier Description Type Range
al Alpha (opacity) float 0 to 1
an Pin anchor <int32, int32> *
co Pin color string 000000 to FFFFFF
la Label anchor <int32, int32> *
lc Label color string 000000 to FFFFFF
ls Label size float Greater than 0
ro Rotation float -360 to 360
sc Scale float Greater than 0
  • X and Y coordinates can be anywhere within pin image or a margin around it. The margin size is the minimum of the pin width and height.
tilesetId
query

TilesetId

Map style to be returned. Possible values are microsoft.base.road, microsoft.base.darkgrey, and microsoft.imagery. Default value is set to be microsoft.base.road. For more information, see Render TilesetId.

trafficLayer
query

TrafficTilesetId

Optional Value, indicating no traffic flow overlaid on the image result. Possible values are microsoft.traffic.relative.main and none. Default value is none, indicating no traffic flow returned. If traffic related tilesetId is provided, will return map image with corresponding traffic layer. For more information, see Render TilesetId.

view
query

LocalizedMapView

The View parameter (also called the "user region" parameter) allows you to show the correct maps for a certain country/region for geopolitically disputed regions. Different countries/regions have different views of such regions, and the View parameter allows your application to comply with the view required by the country/region your application will be serving. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country/region where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.

Please refer to Supported Views for details and to see the available Views.

width
query

integer

int32

Width of the resulting image in pixels. Range from 80 to 2000. Default is 512. It should not be used with bbox.

zoom
query

integer

int32

Desired zoom level of the map. Support zoom value range from 0-20 (inclusive) for tilesetId being microsoft.base.road or microsoft.base.darkgrey. Support zoom value range from 0-19 (inclusive) for tilesetId being microsoft.imagery. Default value is 12.

For more information, see Zoom Levels and Tile Grid.

Request Header

Name Required Type Description
x-ms-client-id

string

Specifies which account is intended for usage in conjunction with the Microsoft Entra ID security model. It represents a unique ID for the Azure Maps account and can be retrieved from the Azure Maps management plane Account API. To use Microsoft Entra ID security in Azure Maps see the following articles for guidance.

Accept

MediaType

The Accept header field can be used to specify preferences regarding response media types. Allowed media types include image/jpeg and image/png. Return image in image/png if Accept header is not specified.

Responses

Name Type Description
200 OK

object

This image is returned from a successful Get Map Static Image call.

Media Types: "image/jpeg", "image/png"

Headers

Content-Type: string

Other Status Codes

ErrorResponse

An unexpected error occurred.

Media Types: "image/jpeg", "image/png"

Security

AADToken

These are the Microsoft Entra OAuth 2.0 Flows. When paired with Azure role-based access control it can be used to control access to Azure Maps REST APIs. Azure role-based access controls are used to designate access to one or more Azure Maps resource account or sub-resources. Any user, group, or service principal can be granted access via a built-in role or a custom role composed of one or more permissions to Azure Maps REST APIs.

To implement scenarios, we recommend viewing authentication concepts. In summary, this security definition provides a solution for modeling application(s) via objects capable of access control on specific APIs and scopes.

Notes

  • This security definition requires the use of the x-ms-client-id header to indicate which Azure Maps resource the application is requesting access to. This can be acquired from the Maps management API.

The Authorization URL is specific to the Azure public cloud instance. Sovereign clouds have unique Authorization URLs and Microsoft Entra ID configurations. * The Azure role-based access control is configured from the Azure management plane via Azure portal, PowerShell, CLI, Azure SDKs, or REST APIs. * Usage of the Azure Maps Web SDK allows for configuration based setup of an application for multiple use cases.

Type: oauth2
Flow: implicit
Authorization URL: https://login.microsoftonline.com/common/oauth2/authorize

Scopes

Name Description
https://atlas.microsoft.com/.default https://atlas.microsoft.com/.default

subscription-key

This is a shared key that is provisioned when creating an Azure Maps resource through the Azure management plane via Azure portal, PowerShell, CLI, Azure SDKs, or REST APIs.

With this key, any application is authorized to access all REST APIs. In other words, these can currently be treated as master keys to the account which they are issued for.

For publicly exposed applications, our recommendation is to use server-to-server access of Azure Maps REST APIs where this key can be securely stored.

Type: apiKey
In: header

SAS Token

This is a shared access signature token is created from the List SAS operation on the Azure Maps resource through the Azure management plane via Azure portal, PowerShell, CLI, Azure SDKs, or REST APIs.

With this token, any application is authorized to access with Azure role-based access controls and fine-grain control to the expiration, rate, and region(s) of use for the particular token. In other words, the SAS Token can be used to allow applications to control access in a more secured way than the shared key.

For publicly exposed applications, our recommendation is to configure a specific list of allowed origins on the Map account resource to limit rendering abuse and regularly renew the SAS Token.

Type: apiKey
In: header

Examples

Successful Static Image Request

Sample request

GET https://atlas.microsoft.com/map/static?api-version=2024-04-01&tilesetId=microsoft.base.road&zoom=10&center=-122.177621,47.613079

Sample response

Content-Type: image/png
"{file}"

Definitions

Name Description
ErrorAdditionalInfo

The resource management error additional info.

ErrorDetail

The error detail.

ErrorResponse

Error response

LocalizedMapView

The View parameter (also called the "user region" parameter) allows you to show the correct maps for a certain country/region for geopolitically disputed regions. Different countries/regions have different views of such regions, and the View parameter allows your application to comply with the view required by the country/region your application will be serving. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country/region where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.

Please refer to Supported Views for details and to see the available Views.

MediaType

The Accept header field can be used to specify preferences regarding response media types. Allowed media types include image/jpeg and image/png. Return image in image/png if Accept header is not specified.

TilesetId

Map style to be returned. Possible values are microsoft.base.road, microsoft.base.darkgrey, and microsoft.imagery. Default value is set to be microsoft.base.road. For more information, see Render TilesetId.

TrafficTilesetId

Optional Value, indicating no traffic flow overlaid on the image result. Possible values are microsoft.traffic.relative.main and none. Default value is none, indicating no traffic flow returned. If traffic related tilesetId is provided, will return map image with corresponding traffic layer. For more information, see Render TilesetId.

ErrorAdditionalInfo

The resource management error additional info.

Name Type Description
info

object

The additional info.

type

string

The additional info type.

ErrorDetail

The error detail.

Name Type Description
additionalInfo

ErrorAdditionalInfo[]

The error additional info.

code

string

The error code.

details

ErrorDetail[]

The error details.

message

string

The error message.

target

string

The error target.

ErrorResponse

Error response

Name Type Description
error

ErrorDetail

The error object.

LocalizedMapView

The View parameter (also called the "user region" parameter) allows you to show the correct maps for a certain country/region for geopolitically disputed regions. Different countries/regions have different views of such regions, and the View parameter allows your application to comply with the view required by the country/region your application will be serving. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country/region where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.

Please refer to Supported Views for details and to see the available Views.

Name Type Description
AE

string

United Arab Emirates (Arabic View)

AR

string

Argentina (Argentinian View)

Auto

string

Return the map data based on the IP address of the request.

BH

string

Bahrain (Arabic View)

IN

string

India (Indian View)

IQ

string

Iraq (Arabic View)

JO

string

Jordan (Arabic View)

KW

string

Kuwait (Arabic View)

LB

string

Lebanon (Arabic View)

MA

string

Morocco (Moroccan View)

OM

string

Oman (Arabic View)

PK

string

Pakistan (Pakistani View)

PS

string

Palestinian Authority (Arabic View)

QA

string

Qatar (Arabic View)

SA

string

Saudi Arabia (Arabic View)

SY

string

Syria (Arabic View)

Unified

string

Unified View (Others)

YE

string

Yemen (Arabic View)

MediaType

The Accept header field can be used to specify preferences regarding response media types. Allowed media types include image/jpeg and image/png. Return image in image/png if Accept header is not specified.

Name Type Description
image/jpeg

string

Return image in jpeg format.

image/png

string

Return image in png format.

TilesetId

Map style to be returned. Possible values are microsoft.base.road, microsoft.base.darkgrey, and microsoft.imagery. Default value is set to be microsoft.base.road. For more information, see Render TilesetId.

Name Type Description
microsoft.base.darkgrey

string

TilesetId contains all layers with our dark grey style.

microsoft.base.road

string

TilesetId contains all layers with rendering main style.

microsoft.imagery

string

TilesetId contains a combination of satellite and aerial imagery.

TrafficTilesetId

Optional Value, indicating no traffic flow overlaid on the image result. Possible values are microsoft.traffic.relative.main and none. Default value is none, indicating no traffic flow returned. If traffic related tilesetId is provided, will return map image with corresponding traffic layer. For more information, see Render TilesetId.

Name Type Description
microsoft.traffic.relative.main

string

Supported traffic related tilesetId.

none

string

Default value, no traffic flow overlay.