diff --git a/sdk/maps/azure-maps-render/README.md b/sdk/maps/azure-maps-render/README.md index 6a174e59d5359..bd1e75191dc24 100644 --- a/sdk/maps/azure-maps-render/README.md +++ b/sdk/maps/azure-maps-render/README.md @@ -13,7 +13,7 @@ _Azure SDK Python packages support for Python 2.7 has ended 01 January 2022. For ### Prerequisites -- Python 3.6 or later is required to use this package. +- Python 3.7 or later is required to use this package. - An [Azure subscription][azure_subscription] and an [Azure Maps account](https://docs.microsoft.com/azure/azure-maps/how-to-manage-account-keys). - A deployed Maps Services resource. You can create the resource via [Azure Portal][azure_portal] or [Azure CLI][azure_cli]. @@ -140,9 +140,9 @@ from azure.maps.render import MapsRenderClient result = maps_render_client.get_map_tile( tileset_id=TilesetID.MICROSOFT_BASE, - tile_index_z=6, - tile_index_x=9, - tile_index_y=22, + z=6, + x=9, + y=22, tile_size="512" ) ``` diff --git a/sdk/maps/azure-maps-render/azure/maps/render/_render_client.py b/sdk/maps/azure-maps-render/azure/maps/render/_render_client.py index 54f391c69046a..ca9e50ff83780 100644 --- a/sdk/maps/azure-maps-render/azure/maps/render/_render_client.py +++ b/sdk/maps/azure-maps-render/azure/maps/render/_render_client.py @@ -4,7 +4,7 @@ # ------------------------------------ # pylint: disable=unused-import,ungrouped-imports, R0904, C0302 -from typing import TYPE_CHECKING, overload, Union, Any, List, Optional, Iterator +from typing import TYPE_CHECKING, overload, Union, Any, List, Optional, Iterator, Tuple from azure.core.tracing.decorator import distributed_trace from azure.core.exceptions import HttpResponseError from azure.core.credentials import AzureKeyCredential, TokenCredential @@ -17,7 +17,6 @@ TilesetID, Copyright, MapTileset, - MapAttribution, CopyrightCaption, RasterTileFormat ) @@ -60,9 +59,9 @@ def __init__( def get_map_tile( self, tileset_id: Union[str, TilesetID], - tile_index_z: int, - tile_index_x: int, - tile_index_y: int, + x: int, + y: int, + z: int, **kwargs: Any ) -> Iterator[bytes]: """The Get Map Tiles API allows users to request map tiles in vector or raster formats typically @@ -76,15 +75,15 @@ def get_map_tile( when making requests. :type tileset_id: str or ~azure.maps.render.models.TilesetID - :param tile_index_z: + :param z: Zoom level for the desired tile. - :type tile_index_z: int - :param tile_index_x: + :type z: int + :param x: X coordinate of the tile on zoom grid. - :type tile_index_x: int - :param tile_index_y: + :type x: int + :param y: Y coordinate of the tile on zoom grid. - :type tile_index_y: int + :type y: int :keyword time_stamp: The desired date and time of the requested tile. :paramtype time_stamp: ~datetime.datetime @@ -116,9 +115,9 @@ def get_map_tile( return self._render_client.get_map_tile( tileset_id=tileset_id, - z=tile_index_z, - x=tile_index_x, - y=tile_index_y, + z=z, + x=x, + y=y, **kwargs ) @@ -150,11 +149,28 @@ def get_map_tileset( :dedent: 4 :caption: Return metadata for a tileset. """ - return self._render_client.get_map_tileset( + result = self._render_client.get_map_tileset( tileset_id=tileset_id, **kwargs ) + return MapTileset( + name = result.name, + description = result.description, + version = result.version, + template = result.template, + legend = result.legend, + scheme = result.scheme, + min_zoom = result.min_zoom, + max_zoom = result.max_zoom, + bounds = result.bounds, + center = result.center, + map_attribution=result.attribution, + tilejson_version=result.tilejson, + tiles_endpoints=result.tiles, + grid_endpoints=result.grids, + data_files=result.data + ) @distributed_trace def get_map_attribution( @@ -163,7 +179,7 @@ def get_map_attribution( zoom: int, bounds: BoundingBox, **kwargs: Any - ) -> MapAttribution: + ) -> List[str]: """The Get Map Attribution API allows users to request map copyright attribution information for a section of a tileset. @@ -180,8 +196,8 @@ def get_map_attribution( position of the bounding box as float. E.g. BoundingBox(west=37.553, south=-122.453, east=33.2, north=57) :type bounds: BoundingBox - :return: MapAttribution - :rtype: ~azure.maps.render.models.MapAttribution + :return: List[str] + :rtype: List[str] :raises ~azure.core.exceptions.HttpResponseError: .. admonition:: Example: @@ -205,29 +221,29 @@ def get_map_attribution( zoom=zoom, bounds=bounds, **kwargs - ) + ).copyrights @distributed_trace def get_map_state_tile( self, stateset_id: str, - tile_index_z: int, - tile_index_x: int, - tile_index_y: int, + x: int, + y: int, + z: int, **kwargs: Any ) -> Iterator[bytes]: """Fetches state tiles in vector format typically to be integrated into indoor maps module of map control or SDK. - :param tile_index_z: + :param z: Zoom level for the desired tile. - :type tile_index_z: int - :param tile_index_x: + :type z: int + :param x: X coordinate of the tile on zoom grid. - :type tile_index_x: int - :param tile_index_y: + :type x: int + :param y: Y coordinate of the tile on zoom grid. - :type tile_index_y: int + :type y: int :param stateset_id: The stateset id. :type stateset_id: str @@ -238,9 +254,9 @@ def get_map_state_tile( return self._render_client.get_map_state_tile( stateset_id=stateset_id, - z=tile_index_z, - x=tile_index_x, - y=tile_index_y, + z=z, + x=x, + y=y, **kwargs ) @@ -304,7 +320,7 @@ def get_map_static_image( :paramtype zoom: int :keyword center: Coordinates of the center point. - :paramtype center: LatLon + :paramtype center: LatLon or Tuple :keyword BoundingBox bounding_box_private: north(top), west(left), south(bottom), east(right) position of the bounding box as float. @@ -404,9 +420,9 @@ def get_copyright_from_bounding_box( @distributed_trace def get_copyright_for_tile( self, - tile_index_z: int, - tile_index_x: int, - tile_index_y: int, + x: int, + y: int, + z: int, **kwargs: Any ) -> Copyright: """Copyrights API is designed to serve copyright information for Render Tile service. In addition @@ -416,15 +432,15 @@ def get_copyright_for_tile( particular tile, the request should specify the tile's zoom level and x and y coordinates (see: Zoom Levels and Tile Grid). - :param tile_index_z: + :param z: Zoom level for the desired tile. - :type tile_index_z: int - :param tile_index_x: + :type z: int + :param x: X coordinate of the tile on zoom grid. - :type tile_index_x: int - :param tile_index_y: + :type x: int + :param y: Y coordinate of the tile on zoom grid. - :type tile_index_y: int + :type y: int :keyword include_text: True or False to exclude textual data from response. Only images and country names will be in response. @@ -446,9 +462,9 @@ def get_copyright_for_tile( _include_text=kwargs.pop("include_text", True) return self._render_client.get_copyright_for_tile( - z=tile_index_z, - x=tile_index_x, - y=tile_index_y, + z=z, + x=x, + y=y, include_text= "yes" if _include_text else "no", **kwargs ) diff --git a/sdk/maps/azure-maps-render/azure/maps/render/aio/_render_client_async.py b/sdk/maps/azure-maps-render/azure/maps/render/aio/_render_client_async.py index fbd56f88998ac..ec5c3a9399934 100644 --- a/sdk/maps/azure-maps-render/azure/maps/render/aio/_render_client_async.py +++ b/sdk/maps/azure-maps-render/azure/maps/render/aio/_render_client_async.py @@ -5,7 +5,7 @@ # --------------------------------------------------------------------- # pylint: disable=unused-import,ungrouped-imports, R0904, C0302 -from typing import Iterator, Any, Union +from typing import Iterator, Any, Union, Tuple, List from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.exceptions import HttpResponseError from azure.core.credentials import AzureKeyCredential @@ -64,9 +64,9 @@ def __init__( async def get_map_tile( self, tileset_id: Union[str, TilesetID], - tile_index_z: int, - tile_index_x: int, - tile_index_y: int, + z: int, + x: int, + y: int, **kwargs: Any ) -> Iterator[bytes]: """The Get Map Tiles API allows users to request map tiles in vector or raster formats typically @@ -80,15 +80,15 @@ async def get_map_tile( when making requests. :type tileset_id: str or ~azure.maps.render.models.TilesetID - :param tile_index_z: + :param z: Zoom level for the desired tile. - :type tile_index_z: int - :param tile_index_x: + :type z: int + :param x: X coordinate of the tile on zoom grid. - :type tile_index_x: int - :param tile_index_y: + :type x: int + :param y: Y coordinate of the tile on zoom grid. - :type tile_index_y: int + :type y: int :keyword time_stamp: The desired date and time of the requested tile. :paramtype time_stamp: ~datetime.datetime @@ -120,9 +120,9 @@ async def get_map_tile( return await self._render_client.get_map_tile( tileset_id=tileset_id, - z=tile_index_z, - x=tile_index_x, - y=tile_index_y, + z=z, + x=x, + y=y, **kwargs ) @@ -154,11 +154,28 @@ async def get_map_tileset( :dedent: 4 :caption: Return metadata for a tileset. """ - return await self._render_client.get_map_tileset( + result = await self._render_client.get_map_tileset( tileset_id=tileset_id, **kwargs ) + return MapTileset( + name = result.name, + description = result.description, + version = result.version, + template = result.template, + legend = result.legend, + scheme = result.scheme, + min_zoom = result.min_zoom, + max_zoom = result.max_zoom, + bounds = result.bounds, + center = result.center, + map_attribution=result.attribution, + tilejson_version=result.tilejson, + tiles_endpoints=result.tiles, + grid_endpoints=result.grids, + data_files=result.data + ) @distributed_trace_async async def get_map_attribution( @@ -167,7 +184,7 @@ async def get_map_attribution( zoom: int, bounds: BoundingBox, **kwargs: Any - ) -> MapAttribution: + ) -> List[str]: """The Get Map Attribution API allows users to request map copyright attribution information for a section of a tileset. @@ -184,8 +201,8 @@ async def get_map_attribution( position of the bounding box as float. E.g. BoundingBox(west=37.553, south=-122.453, east=33.2, north=57) :type bounds: BoundingBox - :return: MapAttribution - :rtype: ~azure.maps.render.models.MapAttribution + :return: List[str] + :rtype: List[str] :raises ~azure.core.exceptions.HttpResponseError: .. admonition:: Example: @@ -204,34 +221,35 @@ async def get_map_attribution( bounds.east ] - return await self._render_client.get_map_attribution( + async_result = await self._render_client.get_map_attribution( tileset_id=tileset_id, zoom=zoom, bounds=bounds, **kwargs ) + return async_result.copyrights @distributed_trace_async async def get_map_state_tile( self, stateset_id: str, - tile_index_z: int, - tile_index_x: int, - tile_index_y: int, + z: int, + x: int, + y: int, **kwargs: Any ) -> Iterator[bytes]: """Fetches state tiles in vector format typically to be integrated into indoor maps module of map control or SDK. - :param tile_index_z: + :param z: Zoom level for the desired tile. - :type tile_index_z: int - :param tile_index_x: + :type z: int + :param x: X coordinate of the tile on zoom grid. - :type tile_index_x: int - :param tile_index_y: + :type x: int + :param y: Y coordinate of the tile on zoom grid. - :type tile_index_y: int + :type y: int :param stateset_id: The stateset id. :type stateset_id: str @@ -241,9 +259,9 @@ async def get_map_state_tile( """ return await self._render_client.get_map_state_tile( stateset_id=stateset_id, - z=tile_index_z, - x=tile_index_x, - y=tile_index_y, + z=z, + x=x, + y=y, **kwargs ) @@ -306,7 +324,7 @@ async def get_map_static_image( :paramtype zoom: int :keyword center: Coordinates of the center point. - :paramtype center: Latlon + :paramtype center: LatLon or Tuple :keyword BoundingBox bounding_box_private: north(top), west(left), south(bottom), east(right) position of the bounding box as float. @@ -405,9 +423,9 @@ async def get_copyright_from_bounding_box( @distributed_trace_async async def get_copyright_for_tile( self, - tile_index_z: int, - tile_index_x: int, - tile_index_y: int, + z: int, + x: int, + y: int, **kwargs: Any ) -> Copyright: """Copyrights API is designed to serve copyright information for Render Tile service. In addition @@ -417,15 +435,15 @@ async def get_copyright_for_tile( particular tile, the request should specify the tile's zoom level and x and y coordinates (see: Zoom Levels and Tile Grid). - :param tile_index_z: + :param z: Zoom level for the desired tile. - :type tile_index_z: int - :param tile_index_x: + :type z: int + :param x: X coordinate of the tile on zoom grid. - :type tile_index_x: int - :param tile_index_y: + :type x: int + :param y: Y coordinate of the tile on zoom grid. - :type tile_index_y: int + :type y: int :keyword include_text: True or False to exclude textual data from response. Only images and country names will be in response. @@ -448,8 +466,8 @@ async def get_copyright_for_tile( return await self._render_client.get_copyright_for_tile( z=tile_index_z, - x=tile_index_x, - y=tile_index_y, + x=x, + y=y, include_text= "yes" if _include_text else "no", **kwargs ) diff --git a/sdk/maps/azure-maps-render/azure/maps/render/models/__init__.py b/sdk/maps/azure-maps-render/azure/maps/render/models/__init__.py index f0498076dc929..69242de5bc923 100644 --- a/sdk/maps/azure-maps-render/azure/maps/render/models/__init__.py +++ b/sdk/maps/azure-maps-render/azure/maps/render/models/__init__.py @@ -3,19 +3,19 @@ TilesetID, MapTileSize, LocalizedMapView, - MapTileset, MapAttribution, CopyrightCaption, StaticMapLayer, - Copyright, RasterTileFormat, - RegionCopyrights, - RegionCopyrightsCountry ) from ._models import ( LatLon, - BoundingBox + MapTileset, + BoundingBox, + Copyright, + RegionalCopyrights, + RegionCopyrightsCountry ) @@ -31,6 +31,6 @@ 'StaticMapLayer', 'Copyright', 'RasterTileFormat', - 'RegionCopyrights', + 'RegionalCopyrights', 'RegionCopyrightsCountry', ] diff --git a/sdk/maps/azure-maps-render/azure/maps/render/models/_models.py b/sdk/maps/azure-maps-render/azure/maps/render/models/_models.py index 521100f4293e2..5fc8ffd54f56a 100644 --- a/sdk/maps/azure-maps-render/azure/maps/render/models/_models.py +++ b/sdk/maps/azure-maps-render/azure/maps/render/models/_models.py @@ -5,7 +5,13 @@ # pylint: disable=unused-import,ungrouped-imports, C0302, C0203 from typing import NamedTuple -from .._generated.models import RegionCopyrightsCountry as GenRegionCopyrightsCountry +from .._generated.models import ( + Copyright as GenCopyright, + RegionCopyrights as GenRegionCopyrights, + RegionCopyrightsCountry as GenRegionCopyrightsCountry, + MapTileset as GenMapTileset +) + class LatLon(NamedTuple): """Represents coordinate latitude and longitude @@ -34,3 +40,131 @@ class BoundingBox(NamedTuple): south: float = 0.0 east: float = 0.0 north: float = 0.0 + + +class RegionalCopyrights(GenRegionCopyrights): + """RegionCopyrights. + + Variables are only populated by the server, and will be ignored when sending a request. + + :keyword copyrights: Copyrights array. + :paramtype copyrights: list[str] + :keyword country: Country property. + :paramtype country: ~azure.maps.render.models.RegionCopyrightsCountry + """ + def __init__(self, copyrights=None, country=None): + self.copyrights = copyrights + self.country = country + +class Copyright(GenCopyright): + """Represents information about the coordinate range + + :keyword format_version: Format Version property. + :paramtype format_version: str + :keyword general_copyrights: General Copyrights array. + :paramtype general_copyrights: list[str] + :keyword regional_copyrights: Regions array. + :paramtype regional_copyrights: list[RegionalCopyrights] + """ + def __init__(self, format_version=None, general_copyrights=None, regional_copyrights=None): + self.format_version = format_version + self.general_copyrights = general_copyrights + self.regional_copyrights = regional_copyrights + +class RegionCopyrightsCountry(GenRegionCopyrightsCountry): + """Country property. + + Variables are only populated by the server, and will be ignored when sending a request. + + :keyword iso3_code: ISO3 property. + :paramtype iso3_code: str + :keyword label: Label property. + :paramtype label: str + """ + def __init__(self, iso3_code=None, label=None): + self.iso3_code = iso3_code + self.label = label + + +class MapTileset(GenMapTileset): # pylint: disable=too-many-instance-attributes + """Metadata for a tileset in the TileJSON format. + + :keyword tilejson_version: Describes the version of the TileJSON spec that is implemented by this JSON + object. + :paramtype tilejson_version: str + :keyword name: A name describing the tileset. The name can contain any legal character. + Implementations SHOULD NOT interpret the name as HTML. + :paramtype name: str + :keyword description: Text description of the tileset. The description can contain any legal + character. Implementations SHOULD NOT interpret the description as HTML. + :paramtype description: str + :keyword version: A semver.org style version number for the tiles contained within the tileset. + When changes across tiles are introduced, the minor version MUST change. + :paramtype version: str + :keyword map_attribution: Copyright attribution to be displayed on the map. Implementations MAY decide + to treat this as HTML or literal text. For security reasons, make absolutely sure that this + field can't be abused as a vector for XSS or beacon tracking. + :paramtype map_attribution: str + :keyword template: A mustache template to be used to format data from grids for interaction. + :paramtype template: str + :keyword legend: A legend to be displayed with the map. Implementations MAY decide to treat this + as HTML or literal text. For security reasons, make absolutely sure that this field can't be + abused as a vector for XSS or beacon tracking. + :paramtype legend: str + :keyword scheme: Default: "xyz". Either "xyz" or "tms". Influences the y direction of the tile + coordinates. The global-mercator (aka Spherical Mercator) profile is assumed. + :paramtype scheme: str + :keyword tiles_endpoints: An array of tile endpoints. If multiple endpoints are specified, clients may use + any combination of endpoints. All endpoints MUST return the same content for the same URL. The + array MUST contain at least one endpoint. + :paramtype tiles_endpoints: list[str] + :keyword grid_endpoints: An array of interactivity endpoints. + :paramtype grid_endpoints: list[str] + :keyword data_files: An array of data files in GeoJSON format. + :paramtype data_files: list[str] + :keyword min_zoom: The minimum zoom level. + :paramtype min_zoom: int + :keyword max_zoom: The maximum zoom level. + :paramtype max_zoom: int + :keyword bounds: The maximum extent of available map tiles. Bounds MUST define an area covered by + all zoom levels. The bounds are represented in WGS:84 latitude and longitude values, in the + order left, bottom, right, top. Values may be integers or floating point numbers. + :paramtype bounds: BoundingBox + :keyword center: The default location of the tileset in the form [longitude, latitude, zoom]. The + zoom level MUST be between minzoom and maxzoom. Implementations can use this value to set the + default location. + :paramtype center: LatLon + """ + def __init__( + self, + tilejson_version= None, + name= None, + description= None, + version= None, + map_attribution= None, + template= None, + legend= None, + scheme= None, + tiles_endpoints= None, + grid_endpoints= None, + data_files = None, + min_zoom= None, + max_zoom= None, + bounds= None, + center= None + ): + self.tilejson_version = tilejson_version + self.name = name + self.description = description + self.version = version + self.map_attribution = map_attribution + self.template = template + self.legend = legend + self.scheme = scheme + self.tiles_endpoints = tiles_endpoints + self.grid_endpoints = grid_endpoints + self.data_files = data_files + self.min_zoom = min_zoom + self.max_zoom = max_zoom + self.bounds = bounds + self.center = center diff --git a/sdk/maps/azure-maps-render/dev_requirements.txt b/sdk/maps/azure-maps-render/dev_requirements.txt index d85375f9cdba0..1ab09a46e87ff 100644 --- a/sdk/maps/azure-maps-render/dev_requirements.txt +++ b/sdk/maps/azure-maps-render/dev_requirements.txt @@ -2,4 +2,4 @@ -e ../../../tools/azure-sdk-tools -e ../../core/azure-core -e ../../identity/azure-identity -aiohttp>=3.0; python_version >= '3.6' \ No newline at end of file +aiohttp>=3.0; python_version >= '3.7' \ No newline at end of file diff --git a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_caption_async.py b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_caption_async.py index bd4f08b016512..5b02a81a6113f 100644 --- a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_caption_async.py +++ b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_caption_async.py @@ -34,9 +34,8 @@ async def get_copyright_caption_async(): result = await maps_render_client.get_copyright_caption() print("Get copyright caption result:") - print(result) + print(result.copyrights_caption) # [END get_copyright_caption_async] if __name__ == '__main__': - loop = asyncio.get_event_loop() - loop.run_until_complete(get_copyright_caption_async()) \ No newline at end of file + asyncio.run(get_copyright_caption_async()) \ No newline at end of file diff --git a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_for_tile_async.py b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_for_tile_async.py index 2c7fa7d48c87f..39c115fe7c4c0 100644 --- a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_for_tile_async.py +++ b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_for_tile_async.py @@ -32,10 +32,10 @@ async def get_copyright_for_tile_async(): maps_render_client = MapsRenderClient(credential=AzureKeyCredential(subscription_key)) async with maps_render_client: - result = await maps_render_client.get_copyright_for_tile(tile_index_z=6, tile_index_x=9, tile_index_y=22) + result = await maps_render_client.get_copyright_for_tile(z=6, x=9, y=22) print("Get copyright for tile result:") - print(result) + print(result.general_copyrights[0]) # [END get_copyright_for_tile_async] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_for_world_async.py b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_for_world_async.py index c70f027648ddc..b87e0b39ef840 100644 --- a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_for_world_async.py +++ b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_for_world_async.py @@ -36,7 +36,7 @@ async def get_copyright_for_world_async(): result = await maps_render_client.get_copyright_for_world() print("Get copyright for the world result:") - print(result) + print(result.general_copyrights[0]) # [END get_copyright_for_world_async] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_from_bounding_box_async.py b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_from_bounding_box_async.py index 41ee36a81b12e..62b23837be1a1 100644 --- a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_from_bounding_box_async.py +++ b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_copyright_from_bounding_box_async.py @@ -41,7 +41,9 @@ async def get_copyright_from_bounding_box_async(): ) print("Get copyright from bounding box result:") - print(result) + print(result.general_copyrights[0]) + print("Result country code:") + print(result.regions[0].country.iso3) # [END get_copyright_from_bounding_box] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_attribution_async.py b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_attribution_async.py index 42a31e19caa22..30d75c2c08bc8 100644 --- a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_attribution_async.py +++ b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_attribution_async.py @@ -42,7 +42,7 @@ async def get_map_attribution_async(): ) print("Get map attribution result:") - print(result) + print(result[0]) # [END get_map_attribution_async] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_static_image_async.py b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_static_image_async.py index 651d5702e71fb..8799c68bf4ed0 100644 --- a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_static_image_async.py +++ b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_static_image_async.py @@ -29,9 +29,6 @@ async def get_map_static_image_async(): async with maps_render_client: result = await maps_render_client.get_map_static_image(img_format="png", center=(52.41064,4.84228)) - - print("Get map tile result:") - print(result) # [END get_map_static_image_async] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_tile_async.py b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_tile_async.py index 4fc868f0525dc..1f2dd4bf640bd 100644 --- a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_tile_async.py +++ b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_tile_async.py @@ -33,10 +33,8 @@ async def get_map_tile_async(): async with maps_render_client: - result = await maps_render_client.get_map_tile(tileset_id=TilesetID.MICROSOFT_BASE, tile_index_z=6, tile_index_x=9, tile_index_y=22, tile_size="512") + result = await maps_render_client.get_map_tile(tileset_id=TilesetID.MICROSOFT_BASE, z=6, x=9, y=22, tile_size="512") - print("Get map tile result:") - print(result) # [END get_map_tile_async] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_tileset_async.py b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_tileset_async.py index 67059badb882c..23fb1d06ff6ce 100644 --- a/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_tileset_async.py +++ b/sdk/maps/azure-maps-render/samples/async_samples/sample_get_map_tileset_async.py @@ -32,7 +32,9 @@ async def get_map_tileset_async(): result = await maps_render_client.get_map_tileset(tileset_id=TilesetID.MICROSOFT_BASE) print("Get map tileset result:") - print(result) + print(result.map_attribution) + print(result.bounds) + print(result.version) # [END get_map_tile_async] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/sample_get_copyright_caption.py b/sdk/maps/azure-maps-render/samples/sample_get_copyright_caption.py index cbd494af571e3..ffca0376d5e11 100644 --- a/sdk/maps/azure-maps-render/samples/sample_get_copyright_caption.py +++ b/sdk/maps/azure-maps-render/samples/sample_get_copyright_caption.py @@ -32,7 +32,7 @@ def get_copyright_caption(): result = maps_render_client.get_copyright_caption() print("Get copyright caption result:") - print(result) + print(result.copyrights_caption) # [END get_copyright_caption] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/sample_get_copyright_for_tile.py b/sdk/maps/azure-maps-render/samples/sample_get_copyright_for_tile.py index 2938b0a25e478..14f2245be0183 100644 --- a/sdk/maps/azure-maps-render/samples/sample_get_copyright_for_tile.py +++ b/sdk/maps/azure-maps-render/samples/sample_get_copyright_for_tile.py @@ -31,10 +31,10 @@ def get_copyright_for_tile(): maps_render_client = MapsRenderClient(credential=AzureKeyCredential(subscription_key)) - result = maps_render_client.get_copyright_for_tile(tile_index_z=6, tile_index_x=9, tile_index_y=22) + result = maps_render_client.get_copyright_for_tile(z=6, x=9, y=22) print("Get copyright for tile result:") - print(result) + print(result.general_copyrights[0]) # [END get_copyright_for_tile] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/sample_get_copyright_for_world.py b/sdk/maps/azure-maps-render/samples/sample_get_copyright_for_world.py index f4c340b11357f..446ae2357dac1 100644 --- a/sdk/maps/azure-maps-render/samples/sample_get_copyright_for_world.py +++ b/sdk/maps/azure-maps-render/samples/sample_get_copyright_for_world.py @@ -35,7 +35,7 @@ def get_copyright_for_world(): result = maps_render_client.get_copyright_for_world() print("Get copyright for the world result:") - print(result) + print(result.general_copyrights[0]) # [END get_copyright_for_world] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/sample_get_copyright_from_bounding_box.py b/sdk/maps/azure-maps-render/samples/sample_get_copyright_from_bounding_box.py index 065e9b2527202..fb1a1d4ab41f8 100644 --- a/sdk/maps/azure-maps-render/samples/sample_get_copyright_from_bounding_box.py +++ b/sdk/maps/azure-maps-render/samples/sample_get_copyright_from_bounding_box.py @@ -39,7 +39,9 @@ def get_copyright_from_bounding_box(): ) print("Get copyright from bounding box result:") - print(result) + print(result.general_copyrights[0]) + print("Result country code:") + print(result.regions[0].country.iso3) # [END get_copyright_from_bounding_box] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/sample_get_map_attribution.py b/sdk/maps/azure-maps-render/samples/sample_get_map_attribution.py index 3c9fefe6a7bb1..bbe20531409c9 100644 --- a/sdk/maps/azure-maps-render/samples/sample_get_map_attribution.py +++ b/sdk/maps/azure-maps-render/samples/sample_get_map_attribution.py @@ -41,7 +41,7 @@ def get_map_attribution(): ) print("Get map attribution result:") - print(result) + print(result[0]) # [END get_map_attribution] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/sample_get_map_static_image.py b/sdk/maps/azure-maps-render/samples/sample_get_map_static_image.py index c2ceedda75cb3..d3e7c2587dc61 100644 --- a/sdk/maps/azure-maps-render/samples/sample_get_map_static_image.py +++ b/sdk/maps/azure-maps-render/samples/sample_get_map_static_image.py @@ -29,10 +29,9 @@ def get_map_static_image(): result = maps_render_client.get_map_static_image(img_format="png", center=(52.41064, 5.84228)) - print("Get map tile result:") - print(result) + print("Get map tile result to png:") # Save result to file as png - file = open('result.png', 'wb') + file = open('map_static_image', 'wb') file.write(next(result)) file.close() # [END get_map_static_image] diff --git a/sdk/maps/azure-maps-render/samples/sample_get_map_tile.py b/sdk/maps/azure-maps-render/samples/sample_get_map_tile.py index e86b492385324..ea38df6be56c9 100644 --- a/sdk/maps/azure-maps-render/samples/sample_get_map_tile.py +++ b/sdk/maps/azure-maps-render/samples/sample_get_map_tile.py @@ -33,14 +33,17 @@ def get_map_tile(): result = maps_render_client.get_map_tile( tileset_id=TilesetID.MICROSOFT_BASE, - tile_index_z=6, - tile_index_x=9, - tile_index_y=22, + z=6, + x=9, + y=22, tile_size="512" ) print("Get map tile result:") - print(result) + # print(result) + file = open('map_tile.png', 'wb') + file.write(next(result)) + file.close() # [END get_map_tile] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/samples/sample_get_map_tileset.py b/sdk/maps/azure-maps-render/samples/sample_get_map_tileset.py index 77a04620f1978..ce7b550809e99 100644 --- a/sdk/maps/azure-maps-render/samples/sample_get_map_tileset.py +++ b/sdk/maps/azure-maps-render/samples/sample_get_map_tileset.py @@ -31,7 +31,9 @@ def get_map_tileset(): result = maps_render_client.get_map_tileset(tileset_id=TilesetID.MICROSOFT_BASE) print("Get map tileset result:") - print(result) + print(result.map_attribution) + print(result.bounds) + print(result.version) # [END get_map_tileset] if __name__ == '__main__': diff --git a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_caption.json b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_caption.json index 150b5a74991c8..4898ffcab850b 100644 --- a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_caption.json +++ b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_caption.json @@ -16,13 +16,13 @@ "Cache-Control": "max-age=86400", "Content-Length": "81", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 26 Sep 2022 15:11:13 GMT", + "Date": "Wed, 05 Oct 2022 19:16:56 GMT", "ETag": "W/\u0022f3cfa19fc3c68912b94faa097ee62351\u0022", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Cache": "CONFIG_NOCACHE", "X-Content-Type-Options": "nosniff", "x-ms-azuremaps-region": "West US 2", - "X-MSEdge-Ref": "Ref A: 2C66E332CDE04E8A9730F83EE93FF3E2 Ref B: TPE30EDGE0910 Ref C: 2022-09-26T15:11:13Z" + "X-MSEdge-Ref": "Ref A: 5BF71D0B7653476B8324DC9528C37E47 Ref B: TPE30EDGE0622 Ref C: 2022-10-05T19:16:56Z" }, "ResponseBody": { "formatVersion": "0.0.1", diff --git a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_for_tile.json b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_for_tile.json index 0d38215b621bd..3c7900f93d62e 100644 --- a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_for_tile.json +++ b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_for_tile.json @@ -16,13 +16,13 @@ "Cache-Control": "max-age=86400", "Content-Length": "18516", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 26 Sep 2022 15:11:13 GMT", + "Date": "Wed, 05 Oct 2022 19:16:56 GMT", "ETag": "W/\u00229de0508ecdba66c786311c93a8d63f16\u0022", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Cache": "CONFIG_NOCACHE", "X-Content-Type-Options": "nosniff", "x-ms-azuremaps-region": "West US 2", - "X-MSEdge-Ref": "Ref A: 878FECD5265E4C1C80048C76DBF4B6CB Ref B: TPE30EDGE0910 Ref C: 2022-09-26T15:11:13Z" + "X-MSEdge-Ref": "Ref A: C9A85A3EA4584D0EAA4784BF1EE6A716 Ref B: TPE30EDGE0622 Ref C: 2022-10-05T19:16:56Z" }, "ResponseBody": { "formatVersion": "0.0.1", diff --git a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_for_world.json b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_for_world.json index c53d91a262673..95bdca4b994a3 100644 --- a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_for_world.json +++ b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_for_world.json @@ -16,13 +16,13 @@ "Cache-Control": "max-age=86400", "Content-Length": "912858", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 26 Sep 2022 15:11:14 GMT", + "Date": "Wed, 05 Oct 2022 19:16:56 GMT", "ETag": "W/\u00225f623b123f86e7eaac582e7d4b3dbda4\u0022", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Cache": "CONFIG_NOCACHE", "X-Content-Type-Options": "nosniff", "x-ms-azuremaps-region": "West US 2", - "X-MSEdge-Ref": "Ref A: CD9AE628EE7F46D2BB7F729F152B9574 Ref B: TPE30EDGE0910 Ref C: 2022-09-26T15:11:14Z" + "X-MSEdge-Ref": "Ref A: D3D1D0C29D8D45B098C2DC4AB3B2AB43 Ref B: TPE30EDGE0622 Ref C: 2022-10-05T19:16:56Z" }, "ResponseBody": { "formatVersion": "0.0.1", diff --git a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_from_bounding_box.json b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_from_bounding_box.json index e78842ea30ebe..507eaaf2db92a 100644 --- a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_from_bounding_box.json +++ b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_copyright_from_bounding_box.json @@ -16,13 +16,13 @@ "Cache-Control": "max-age=86400", "Content-Length": "152659", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 26 Sep 2022 15:11:12 GMT", + "Date": "Wed, 05 Oct 2022 19:16:55 GMT", "ETag": "W/\u002213fc5384a26881239fe43e68c5ff6981\u0022", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Cache": "CONFIG_NOCACHE", "X-Content-Type-Options": "nosniff", "x-ms-azuremaps-region": "West US 2", - "X-MSEdge-Ref": "Ref A: AFFE330212FC46998050F30D8B19F7FF Ref B: TPE30EDGE0910 Ref C: 2022-09-26T15:11:12Z" + "X-MSEdge-Ref": "Ref A: 33F7BE833E3D49DE9CAA00E33B1E8CD0 Ref B: TPE30EDGE0622 Ref C: 2022-10-05T19:16:55Z" }, "ResponseBody": { "formatVersion": "0.0.1", diff --git a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_attribution.json b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_attribution.json index 886ccf9dc250f..3590d5b8719f1 100644 --- a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_attribution.json +++ b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_attribution.json @@ -15,12 +15,12 @@ "ResponseHeaders": { "Content-Length": "98", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 26 Sep 2022 15:11:12 GMT", + "Date": "Wed, 05 Oct 2022 19:16:55 GMT", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Cache": "CONFIG_NOCACHE", "X-Content-Type-Options": "nosniff", "x-ms-azuremaps-region": "West US 2", - "X-MSEdge-Ref": "Ref A: 9A6E8C5BE0554D9D96F94B59FF035199 Ref B: TPE30EDGE0910 Ref C: 2022-09-26T15:11:12Z" + "X-MSEdge-Ref": "Ref A: 70091B1BD8D04D8F8E2142546436C485 Ref B: TPE30EDGE0622 Ref C: 2022-10-05T19:16:55Z" }, "ResponseBody": { "copyrights": [ diff --git a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_tile.json b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_tile.json index 0324e2c967139..b7cc9178efeac 100644 --- a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_tile.json +++ b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_tile.json @@ -14,19 +14,19 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "max-age=86400", - "Content-Length": "12273", + "Content-Length": "12274", "Content-Type": "application/vnd.mapbox-vector-tile", "Copyright": "2022 TomTom", - "Date": "Mon, 26 Sep 2022 15:11:11 GMT", - "ETag": "W/\u0022eadef53c2f46dda3046d02377f68544809bf7ce411d3bff917e723f7ba01e0f3279c355763cbdb17dbd060dcb42f7f28\u0022", - "Expires": "Tue, 27 Sep 2022 15:11:11 GMT", + "Date": "Wed, 05 Oct 2022 19:16:54 GMT", + "ETag": "W/\u0022eadef53c2f46dda3046d02377f68544809bf7ce411d3bff917e723f7ba01e0f3836f6fdfa286522a1c62857afddd2582\u0022", + "Expires": "Thu, 06 Oct 2022 19:16:54 GMT", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Cache": "CONFIG_NOCACHE", "X-Content-Type-Options": "nosniff", "x-ms-azuremaps-region": "West US 2", - "X-MSEdge-Ref": "Ref A: F1DE481C64474A169696177D328890E8 Ref B: TPE30EDGE0910 Ref C: 2022-09-26T15:11:11Z" + "X-MSEdge-Ref": "Ref A: B26C5C7A8C3D45B280EE3B57E798DAC3 Ref B: TPE30EDGE0622 Ref C: 2022-10-05T19:16:53Z" }, - "ResponseBody": "Gq8TCg1OYXRpb25hbCBwYXJrEpYBGAMikQEJ\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\u002BAAMuABgHHgUeAgTDPgAPEv4DGAMi\u002BQMJvwKrAYIPwh0AwATEAcwDnAGwA5IBzgX0AbwBQIgDhAG8AUBWHtoBSAcKAxYAGgoeBgoWFhsIIRYbIAcOBRwAHAoiChAADAocDhwYEgEQBhgKFBccDRgBDAMmAgwOIiMIIRgZKgMOAB4IIhAYDCgMEBISDCQOFgMqBA4PGgUaBiwJJgAcBiAMGBQUHBIDJAokEBggGA4eCBwaJhQSEg4gCgwiCA4AAQ4SHhQIFA4OCigOFg4QDggQGg0SFSgJIAIkCBgQGBIQGAwYCB4CIgcIGgAUAhoIFAoOGqQBBiYFHAIcFDwRHgMQABwMNhQ8DBguLAAiDCQWICwcEE4WUAweARwMKhREBDYGGgBWBCgBFglIABQEPgQSDiYkIhZCCjIKOgxQGm4UXAx6AdoBBBABLgIQAFwEFAFSEVoFDAciARoHEgMmFlIOHBQcEg4gEiAIGCooZBRIBjQEPgckDw4dJg8GHRITHgcUASIIJAoSFBQeEAIIAh4BGgIYBhARHgcWBCgLEAcWAyICGgwWGBocDggQDAoBQgUgADwDDA0eASgHGgAkDCQCEBMQEyIDGAIcDSwAIggUFiAMCgESCTwXEhEoBR4AGAQaEhwWFgYWBBwFNg8aBx4CFAwoCA4AHgc0ByANJAkQCx4RQAMcARwIIAgSAQbTPgAPEpMDGAMijgMJhDy\u002BQpoMAQMGHQgdABUGNQcRBx8CGwQbEj8MHQoPDiMIHwgzAB0HDQsnARMIHRAZBjUDGwUVFRURGwMZABcGHRInGBEKOwIRCwkVHwcTACEOKwEbBBcUIRQPAQ8LIwAjCBkCJxIpADsGHwJBCwkHDxsNFxkLFQEZBCEIFQwPAycIFRIdBQ8BFwIdAx8dERMTCREHIwIhCBMUHR4REAUeJRANCCMDPQUzE0cnYxcpHwcfERENExsNGxFBGAF4Ax4BBBIEDBQoAQYQCAIGHj4YOAwoECAONAIeDjwIagUuCSATAg0EDwwDGBkUABIOCAgQABIIAggSAi4EIgEcBCgDLgUgASoTGgIMDgMIDAEMBhAWEgYKBBgAGgQIAFYEDgUKCVwFGAAYBRwKCAcEBiAFJAASAxoNJAUBCxAKBAQYBxIKDgwcDhINDAVWC0QREiEOBgYmAwgGDCYCFAA4B0gFDAEiCQ4OBAQcARwBPAMICUILOg8OERgGDgkMAhYDChAAAhIJDgI0C1AHKgMcDxJsGAMiaAnUPZw4ggMSBA4QEgYYBAALDgEHFAkKChIEGhASARIKCAEIEAEGAQUCAxgHEg8CBBAeDgIGCwUFAQQGAAQBGAIXAwEBAwEABAQBCgELAQEHCQ8LBQ0VEw8JExMHJwANCgUADQwXERMPEicYAyIjCdw9tDpyAAICCg4GDC4HFAsQDQoHGAURAh0OLwgBCxcGCQ8SJRgDIiEJ7j3gPGoDCg0AAQYBDgoGCxIFAAMRAAkMCQAJEgACBQ8S6gEYAyLlAQm\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\u002BQjoASSIAAJEBIQAAYaADAAC\u002BAg8SGBICAAAYAyIQCYBAvkIaAL0CvgIAAL4CDxIhEgIAABgDIhkJuEG/AjponAEeGACMAdEBACM1I6MBImUPEjQSAgAAGAMiLAmIK78CegBWmgE5NxuWFAAAwALrDwAAOU0AADq9BACXAXMAdU05vQEACRsPEjgSAgAAGAMiMAm\u002BQoAgWr0CAADnCyQ1bgAAa20AIzcAxQW2AQAAOIgBAA8JYdgEGgDaASRsAMUCDxIhEgIAABgDIhkJvkLmCjrPAQBtbQDhByQAIzcA3QG\u002BAgAPEiwSAgAAGAMiJAm\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\u002BzAhIhCIiys/\u002BfqhwSDgAAAQECAgMHBAgFBQYGGAEiBQn0OrwBEiEI8pqg3KOqHBIOAAABAQICAwkECgUFBgYYASIFCeg9jgkSIQjZ86q5p6ocEg4AAAEBAgIDCwQMBQUGBhgBIgUJ\u002BiqZARIhCPWArbqnqhwSDgAAAQECAgMNBA4FBQYGGAEiBQmmQtAHEiIIjYOv5POOvwESDgAAAQECAgMPBBAFBQYGGAEiBQn\u002BQJAQGghjYXRlZ29yeRoLY2F0ZWdvcnlfaWQaBGljb24aAmlkGgRuYW1lGghwcmlvcml0eRoLc3ViY2F0ZWdvcnkiGAoWUGFyayAmIFJlY3JlYXRpb24gQXJlYSIFINi0uwQiAyCpASIRCg8xMjQ1OTgwMDAwMjkwNTIiIgogUm9iZXJ0cyBNZW1vcmlhbCBQcm92aW5jaWFsIFBhcmsiAiA8Ig8KDU5hdGlvbmFsIFBhcmsiEQoPMTI0NTk3MDAwMDAxODAwIhwKGkdvcmRvbiBCYXkgUHJvdmluY2lhbCBQYXJrIhEKDzEyNDU5ODAwMDAyOTA0MiITChFGcmVuY2ggQmVhY2ggUGFyayIRCg8xMjQ1OTkwMDA1NDU3NTMiLQorUGFjaWZpYyBSaW0gTmF0aW9uYWwgUGFyayBSZXNlcnZlIG9mIENhbmFkYSIRCg8xMjQ1OTkwMDI2NzczNjUiHAoaR29sZHN0cmVhbSBQcm92aW5jaWFsIFBhcmsiEQoPODQwNTM5MDAwNTIxMTAxIhcKFU9seW1waWMgTmF0aW9uYWwgUGFyayiAIHgCGi4KDFN0YXRlIGJvcmRlchIZGAIiFQnYPO4sMhBJkAF\u002BUAjCAUVIJOwBFyiAIHgC" + "ResponseBody": "Gq8TCg1OYXRpb25hbCBwYXJrEpYBGAMikQEJ\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\u002BAAMuABgHHgUeAgTDPgAPEv4DGAMi\u002BQMJvwKrAYIPwh0AwATEAcwDnAGwA5IBzgX0AbwBQIgDhAG8AUBWHtoBSAcKAxYAGgoeBgoWFhsIIRYbIAcOBRwAHAoiChAADAocDhwYEgEQBhgKFBccDRgBDAMmAgwOIiMIIRgZKgMOAB4IIhAYDCgMEBISDCQOFgMqBA4PGgUaBiwJJgAcBiAMGBQUHBIDJAokEBggGA4eCBwaJhQSEg4gCgwiCA4AAQ4SHhQIFA4OCigOFg4QDggQGg0SFSgJIAIkCBgQGBIQGAwYCB4CIgcIGgAUAhoIFAoOGqQBBiYFHAIcFDwRHgMQABwMNhQ8DBguLAAiDCQWICwcEE4WUAweARwMKhREBDYGGgBWBCgBFglIABQEPgQSDiYkIhZCCjIKOgxQGm4UXAx6AdoBBBABLgIQAFwEFAFSEVoFDAciARoHEgMmFlIOHBQcEg4gEiAIGCooZBRIBjQEPgckDw4dJg8GHRITHgcUASIIJAoSFBQeEAIIAh4BGgIYBhARHgcWBCgLEAcWAyICGgwWGBocDggQDAoBQgUgADwDDA0eASgHGgAkDCQCEBMQEyIDGAIcDSwAIggUFiAMCgESCTwXEhEoBR4AGAQaEhwWFgYWBBwFNg8aBx4CFAwoCA4AHgc0ByANJAkQCx4RQAMcARwIIAgSAQbTPgAPEpMDGAMijgMJhDy\u002BQpoMAQMGHQgdABUGNQcRBx8CGwQbEj8MHQoPDiMIHwgzAB0HDQsnARMIHRAZBjUDGwUVFRURGwMZABcGHRInGBEKOwIRCwkVHwcTACEOKwEbBBcUIRQPAQ8LIwAjCBkCJxIpADsGHwJBCwkHDxsNFxkLFQEZBCEIFQwPAycIFRIdBQ8BFwIdAx8dERMTCREHIwIhCBMUHR4REAUeJRANCCMDPQUzE0cnYxcpHwcfERENExsNGxFBGAF4Ax4BBBIEDBQoAQYQCAIGHj4YOAwoECAONAIeDjwIagUuCSATAg0EDwwDGBkUABIOCAgQABIIAggSAi4EIgEcBCgDLgUgASoTGgIMDgMIDAEMBhAWEgYKBBgAGgQIAFYEDgUKCVwFGAAYBRwKCAcEBiAFJAASAxoNJAUBCxAKBAQYBxIKDgwcDhINDAVWC0QREiEOBgYmAwgGDCYCFAA4B0gFDAEiCQ4OBAQcARwBPAMICUILOg8OERgGDgkMAhYDChAAAhIJDgI0C1AHKgMcDxJsGAMiaAnUPZw4ggMSBA4QEgYYBAALDgEHFAkKChIEGhASARIKCAEIEAEGAQUCAxgHEg8CBBAeDgIGCwUFAQQGAAQBGAIXAwEBAwEABAQBCgELAQEHCQ8LBQ0VEw8JExMHJwANCgUADQwXERMPEicYAyIjCdw9tDpyAAICCg4GDC4HFAsQDQoHGAURAh0OLwgBCxcGCQ8SJRgDIiEJ7j3gPGoDCg0AAQYBDgoGCxIFAAMRAAkMCQAJEgACBQ8S6gEYAyLlAQm\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\u002BQjoASSIAAJEBIQAAYaADAAC\u002BAg8SGBICAAAYAyIQCYBAvkIaAL0CvgIAAL4CDxIhEgIAABgDIhkJuEG/AjponAEeGACMAdEBACM1I6MBImUPEjQSAgAAGAMiLAmIK78CegBWmgE5NxuWFAAAwALrDwAAOU0AADq9BACXAXMAdU05vQEACRsPEjgSAgAAGAMiMAm\u002BQoAgWr0CAADnCyQ1bgAAa20AIzcAxQW2AQAAOIgBAA8JYdgEGgDaASRsAMUCDxIhEgIAABgDIhkJvkLmCjrPAQBtbQDhByQAIzcA3QG\u002BAgAPEiwSAgAAGAMiJAm\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" } ], "Variables": {} diff --git a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_tileset.json b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_tileset.json index 72f3c838553b3..ade7ada7ed376 100644 --- a/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_tileset.json +++ b/sdk/maps/azure-maps-render/tests/recordings/test_render_client.pyTestMapsRenderClienttest_get_map_tileset.json @@ -15,13 +15,13 @@ "ResponseHeaders": { "Content-Length": "365", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 26 Sep 2022 15:11:11 GMT", - "Expires": "Mon, 03 Oct 2022 15:11:11 GMT", + "Date": "Wed, 05 Oct 2022 19:16:54 GMT", + "Expires": "Wed, 12 Oct 2022 19:16:54 GMT", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Cache": "CONFIG_NOCACHE", "X-Content-Type-Options": "nosniff", "x-ms-azuremaps-region": "West US 2", - "X-MSEdge-Ref": "Ref A: A37E85465DA3456D9B91F11297772F6A Ref B: TPE30EDGE0910 Ref C: 2022-09-26T15:11:11Z" + "X-MSEdge-Ref": "Ref A: 0E7FB7A78C174B46949B016B3B9D64ED Ref B: TPE30EDGE0622 Ref C: 2022-10-05T19:16:54Z" }, "ResponseBody": { "tilejson": "2.2.0", diff --git a/sdk/maps/azure-maps-render/tests/test_render_client.py b/sdk/maps/azure-maps-render/tests/test_render_client.py index c775ab34f9362..b53d7d0280b49 100644 --- a/sdk/maps/azure-maps-render/tests/test_render_client.py +++ b/sdk/maps/azure-maps-render/tests/test_render_client.py @@ -22,9 +22,9 @@ def setup_method(self, method): def test_get_map_tile(self): result = self.client.get_map_tile( tileset_id=TilesetID.MICROSOFT_BASE, - tile_index_z=6, - tile_index_x=9, - tile_index_y=22, + z=6, + x=9, + y=22, tile_size="512" ) @@ -47,7 +47,7 @@ def test_get_map_attribution(self): zoom=6, bounds=BoundingBox(south=42.982261, west=24.980233, north=56.526017, east=1.355233) ) - assert len(result.copyrights) > 0 + assert len(result) > 0 @MapsRenderPreparer() @recorded_by_proxy @@ -63,7 +63,7 @@ def test_get_copyright_from_bounding_box(self): @MapsRenderPreparer() @recorded_by_proxy def test_get_copyright_for_tile(self): - result = self.client.get_copyright_for_tile(tile_index_z=6, tile_index_x=9, tile_index_y=22) + result = self.client.get_copyright_for_tile(z=6, x=9, y=22) assert len(result.general_copyrights) > 0 copyrights = result.general_copyrights[0] assert "TomTom" in copyrights