def test_size(self): self.assertEqual("1x1", convert.size(1)) self.assertEqual("2x3", convert.size((2, 3))) with self.assertRaises(TypeError): convert.size("test")
def static_map(client, size, center=None, zoom=None, scale=None, format=None, maptype=None, language=None, region=None, markers=None, path=None, visible=None, style=None): """ Downloads a map image from the Maps Static API. See https://developers.google.com/maps/documentation/maps-static/intro for more info, including more detail for each parameter below. :param size: Defines the rectangular dimensions of the map image. :type param: int or list :param center: Defines the center of the map, equidistant from all edges of the map. :type center: dict or list or string :param zoom: Defines the zoom level of the map, which determines the magnification level of the map. :type zoom: int :param scale: Affects the number of pixels that are returned. :type scale: int :param format: Defines the format of the resulting image. :type format: string :param maptype: defines the type of map to construct. There are several possible maptype values, including roadmap, satellite, hybrid, and terrain. :type maptype: string :param language: defines the language to use for display of labels on map tiles. :type language: string :param region: defines the appropriate borders to display, based on geo-political sensitivities. :type region: string :param markers: define one or more markers to attach to the image at specified locations. :type markers: StaticMapMarker :param path: defines a single path of two or more connected points to overlay on the image at specified locations. :type path: StaticMapPath :param visible: specifies one or more locations that should remain visible on the map, though no markers or other indicators will be displayed. :type visible: list of dict :param style: defines a custom style to alter the presentation of a specific feature (roads, parks, and other features) of the map. :type style: list of dict :rtype: iterator containing the raw image data, which typically can be used to save an image file locally. For example: ``` f = open(local_filename, 'wb') for chunk in client.static_map(size=(400, 400), center=(52.520103, 13.404871), zoom=15): if chunk: f.write(chunk) f.close() ``` """ params = {"size": convert.size(size)} if not markers: if not (center or zoom is not None): raise ValueError("both center and zoom are required" "when markers is not specifed") if center: params["center"] = convert.latlng(center) if zoom is not None: params["zoom"] = zoom if scale is not None: params["scale"] = scale if format: if format not in MAPS_IMAGE_FORMATS: raise ValueError("Invalid image format") params['format'] = format if maptype: if maptype not in MAPS_MAP_TYPES: raise ValueError("Invalid maptype") params["maptype"] = maptype if language: params["language"] = language if region: params["region"] = region if markers: params["markers"] = markers if path: params["path"] = path if visible: params["visible"] = convert.location_list(visible) if style: params["style"] = convert.components(style) response = client._request( "/maps/api/staticmap", params, extract_body=lambda response: response, requests_kwargs={"stream": True}, ) return response.iter_content()