diff --git a/contrib/externs/maps/google_maps_api_v3.js b/contrib/externs/maps/google_maps_api_v3.js index 919921a2d16..6c00e446439 100644 --- a/contrib/externs/maps/google_maps_api_v3.js +++ b/contrib/externs/maps/google_maps_api_v3.js @@ -147,18 +147,31 @@ google.maps.BicyclingLayer = function() {}; /** * Returns the map on which this layer is displayed. - * @return {google.maps.Map} + * @return {!google.maps.Map|null} */ google.maps.BicyclingLayer.prototype.getMap = function() {}; /** * Renders the layer on the specified map. If map is set to null, * the layer will be removed. - * @param {google.maps.Map} map - * @return {undefined} + * @param {!google.maps.Map|null} map + * @return {void} */ google.maps.BicyclingLayer.prototype.setMap = function(map) {}; +/** + * The display options for the Camera control. + * @record + */ +google.maps.CameraControlOptions = function() {}; + +/** + * Position id. Used to specify the position of the control on the map. + * @default {@link google.maps.ControlPosition.INLINE_START_BLOCK_END} + * @type {!google.maps.ControlPosition|null|undefined} + */ +google.maps.CameraControlOptions.prototype.position; + /** * Available only in the v=beta channel: https://goo.gle/3oAthT3. * @@ -221,7 +234,7 @@ google.maps.CameraParams.prototype.zoom; * * Access by calling `const {Circle} = await google.maps.importLibrary("maps")`. * See https://developers.google.com/maps/documentation/javascript/libraries. - * @param {(google.maps.Circle|google.maps.CircleLiteral|google.maps.CircleOptions|null)=} + * @param {(!google.maps.Circle|!google.maps.CircleLiteral|!google.maps.CircleOptions|null)=} * circleOrCircleOptions * @extends {google.maps.MVCObject} * @constructor @@ -230,13 +243,13 @@ google.maps.Circle = function(circleOrCircleOptions) {}; /** * Gets the LatLngBounds of this Circle. - * @return {?google.maps.LatLngBounds} + * @return {!google.maps.LatLngBounds|null} */ google.maps.Circle.prototype.getBounds = function() {}; /** * Returns the center of this circle. - * @return {?google.maps.LatLng} + * @return {!google.maps.LatLng|null} */ google.maps.Circle.prototype.getCenter = function() {}; @@ -254,7 +267,7 @@ google.maps.Circle.prototype.getEditable = function() {}; /** * Returns the map on which this circle is displayed. - * @return {?google.maps.Map} + * @return {!google.maps.Map|null} */ google.maps.Circle.prototype.getMap = function() {}; @@ -272,7 +285,7 @@ google.maps.Circle.prototype.getVisible = function() {}; /** * Sets the center of this circle. - * @param {google.maps.LatLng|google.maps.LatLngLiteral|null} center + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral|null} center * @return {undefined} */ google.maps.Circle.prototype.setCenter = function(center) {}; @@ -296,13 +309,13 @@ google.maps.Circle.prototype.setEditable = function(editable) {}; /** * Renders the circle on the specified map. If map is set to null, * the circle will be removed. - * @param {?google.maps.Map} map + * @param {!google.maps.Map|null} map * @return {undefined} */ google.maps.Circle.prototype.setMap = function(map) {}; /** - * @param {?google.maps.CircleOptions} options + * @param {!google.maps.CircleOptions|null} options * @return {undefined} */ google.maps.Circle.prototype.setOptions = function(options) {}; @@ -469,8 +482,6 @@ google.maps.CollisionBehavior = { }; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * Identifiers for map color schemes. Specify these by value, or by using the * constant's name. For example, 'FOLLOW_SYSTEM' or * google.maps.ColorScheme.FOLLOW_SYSTEM. @@ -707,7 +718,6 @@ google.maps.CoordinateTransformer.prototype.getCameraParams = function() {}; google.maps.CoreLibrary = function() {}; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. * @type {typeof google.maps.ColorScheme} */ google.maps.CoreLibrary.prototype.ColorScheme; @@ -767,6 +777,11 @@ google.maps.CoreLibrary.prototype.MVCArray; */ google.maps.CoreLibrary.prototype.MVCObject; +/** + * @type {typeof google.maps.Orientation3D} + */ +google.maps.CoreLibrary.prototype.Orientation3D; + /** * @type {typeof google.maps.Point} */ @@ -792,6 +807,11 @@ google.maps.CoreLibrary.prototype.SymbolPath; */ google.maps.CoreLibrary.prototype.UnitSystem; +/** + * @type {typeof google.maps.Vector3D} + */ +google.maps.CoreLibrary.prototype.Vector3D; + /** * A layer for displaying geospatial data. Points, line-strings and polygons can * be displayed.

Every Map has a Data object by @@ -1023,7 +1043,7 @@ google.maps.Data.DataOptions.prototype.controlPosition; * controls are disabled and not displayed. Possible drawing modes are * "Point", "LineString" or "Polygon". * @default null - * @type {Array|null|undefined} + * @type {!Array|null|undefined} */ google.maps.Data.DataOptions.prototype.controls; @@ -1143,7 +1163,7 @@ google.maps.Data.FeatureOptions = function() {}; * feature's geometry will be null. If a LatLng * object or LatLngLiteral is given, this will be converted to a * Data.Point geometry. - * @type {google.maps.Data.Geometry|google.maps.LatLng|google.maps.LatLngLiteral|null|undefined} + * @type {!google.maps.Data.Geometry|!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} */ google.maps.Data.FeatureOptions.prototype.geometry; @@ -1158,7 +1178,7 @@ google.maps.Data.FeatureOptions.prototype.id; /** * The feature properties. This is an arbitrary mapping of property names to * values. - * @type {Object|null|undefined} + * @type {!Object|null|undefined} */ google.maps.Data.FeatureOptions.prototype.properties; @@ -3049,7 +3069,7 @@ google.maps.ElevationService = function() {}; * Makes an elevation request along a path, where the elevation data are * returned as distance-based samples along that path. * @param {!google.maps.PathElevationRequest} request - * @param {(function(?Array, + * @param {(function((!Array|null), * !google.maps.ElevationStatus): void)=} callback * @return {!Promise} */ @@ -3059,7 +3079,7 @@ google.maps.ElevationService.prototype.getElevationAlongPath = function( /** * Makes an elevation request for a list of discrete locations. * @param {!google.maps.LocationElevationRequest} request - * @param {(function(?Array, + * @param {(function((!Array|null), * !google.maps.ElevationStatus): void)=} callback * @return {!Promise} */ @@ -3842,7 +3862,7 @@ google.maps.GroundOverlayOptions.prototype.clickable; /** * The map on which to display the overlay. - * @type {google.maps.Map|null|undefined} + * @type {!google.maps.Map|null|undefined} */ google.maps.GroundOverlayOptions.prototype.map; @@ -4064,7 +4084,7 @@ google.maps.ImageMapTypeOptions.prototype.alt; /** * Returns a string (URL) for given tile coordinate (x, y) and zoom level. - * @type {(function(!google.maps.Point, number): ?string)|null|undefined} + * @type {(function(!google.maps.Point, number): (string|null))|null|undefined} */ google.maps.ImageMapTypeOptions.prototype.getTileUrl; @@ -4095,7 +4115,7 @@ google.maps.ImageMapTypeOptions.prototype.opacity; /** * The tile size. - * @type {google.maps.Size|null|undefined} + * @type {!google.maps.Size|null|undefined} */ google.maps.ImageMapTypeOptions.prototype.tileSize; @@ -4106,7 +4126,7 @@ google.maps.ImageMapTypeOptions.prototype.tileSize; * google.maps.importLibrary("maps")` or `const {InfoWindow} = await * google.maps.importLibrary("streetView")`. See * https://developers.google.com/maps/documentation/javascript/libraries. - * @param {?google.maps.InfoWindowOptions=} opts + * @param {(!google.maps.InfoWindowOptions|null)=} opts * @extends {google.maps.MVCObject} * @constructor */ @@ -4134,13 +4154,13 @@ google.maps.InfoWindow.prototype.close = function() {}; google.maps.InfoWindow.prototype.focus = function() {}; /** - * @return {string|Element|Text|null|undefined} The content of this InfoWindow. - * The same as what was previously set as the content. + * @return {string|!Element|!Text|null|undefined} The content of this + * InfoWindow. The same as what was previously set as the content. */ google.maps.InfoWindow.prototype.getContent = function() {}; /** - * @return {string|Element|Text|null|undefined} The header content of this + * @return {string|!Element|!Text|null|undefined} The header content of this * InfoWindow. See {@link google.maps.InfoWindowOptions.headerContent}. */ google.maps.InfoWindow.prototype.getHeaderContent = function() {}; @@ -4152,7 +4172,7 @@ google.maps.InfoWindow.prototype.getHeaderContent = function() {}; google.maps.InfoWindow.prototype.getHeaderDisabled = function() {}; /** - * @return {google.maps.LatLng|null|undefined} The LatLng position of this + * @return {!google.maps.LatLng|null|undefined} The LatLng position of this * InfoWindow. */ google.maps.InfoWindow.prototype.getPosition = function() {}; @@ -4174,10 +4194,10 @@ google.maps.InfoWindow.prototype.getZIndex = function() {}; * google.maps.InfoWindowOpenOptions} interface as the single argument for this * method. To prevent changing browser focus on open, set {@link * google.maps.InfoWindowOpenOptions.shouldFocus} to false. - * @param {(google.maps.InfoWindowOpenOptions|google.maps.Map|google.maps.StreetViewPanorama|null)=} + * @param {(!google.maps.InfoWindowOpenOptions|!google.maps.Map|!google.maps.StreetViewPanorama|null)=} * options Either an InfoWindowOpenOptions object (recommended) or the * map|panorama on which to render this InfoWindow. - * @param {(google.maps.MVCObject|google.maps.marker.AdvancedMarkerElement|null)=} + * @param {(!google.maps.MVCObject|!google.maps.marker.AdvancedMarkerElement|null)=} * anchor The anchor to which this InfoWindow will be positioned. If the * anchor is non-null, the InfoWindow will be positioned at the top-center * of the anchor. The InfoWindow will be rendered on the same map or @@ -4187,14 +4207,14 @@ google.maps.InfoWindow.prototype.getZIndex = function() {}; google.maps.InfoWindow.prototype.open = function(options, anchor) {}; /** - * @param {(string|Element|Text|null)=} content The content to be displayed by + * @param {(string|!Element|!Text|null)=} content The content to be displayed by * this InfoWindow. * @return {undefined} */ google.maps.InfoWindow.prototype.setContent = function(content) {}; /** - * @param {(string|Element|Text|null)=} headerContent The header content to be + * @param {(string|!Element|!Text|null)=} headerContent The header content to be * displayed by this InfoWindow. See {@link * google.maps.InfoWindowOptions.headerContent}. * @return {undefined} @@ -4202,21 +4222,22 @@ google.maps.InfoWindow.prototype.setContent = function(content) {}; google.maps.InfoWindow.prototype.setHeaderContent = function(headerContent) {}; /** - * @param {?boolean=} headerDisabled Specifies whether to disable the whole - * header row. See {@link google.maps.InfoWindowOptions.headerDisabled}. + * @param {(boolean|null)=} headerDisabled Specifies whether to disable the + * whole header row. See {@link + * google.maps.InfoWindowOptions.headerDisabled}. * @return {undefined} */ google.maps.InfoWindow.prototype.setHeaderDisabled = function( headerDisabled) {}; /** - * @param {?google.maps.InfoWindowOptions=} options + * @param {(!google.maps.InfoWindowOptions|null)=} options * @return {undefined} */ google.maps.InfoWindow.prototype.setOptions = function(options) {}; /** - * @param {(google.maps.LatLng|google.maps.LatLngLiteral|null)=} position The + * @param {(!google.maps.LatLng|!google.maps.LatLngLiteral|null)=} position The * LatLng position at which to display this InfoWindow. * @return {undefined} */ @@ -4241,13 +4262,13 @@ google.maps.InfoWindowOpenOptions = function() {}; * non-null, the InfoWindow will be positioned at the top-center of the anchor. * The InfoWindow will be rendered on the same map or panorama as the anchor * (when available). - * @type {google.maps.MVCObject|google.maps.marker.AdvancedMarkerElement|null|undefined} + * @type {!google.maps.MVCObject|!google.maps.marker.AdvancedMarkerElement|null|undefined} */ google.maps.InfoWindowOpenOptions.prototype.anchor; /** * The map or panorama on which to render this InfoWindow. - * @type {google.maps.Map|google.maps.StreetViewPanorama|null|undefined} + * @type {!google.maps.Map|!google.maps.StreetViewPanorama|null|undefined} */ google.maps.InfoWindowOpenOptions.prototype.map; @@ -4479,7 +4500,7 @@ google.maps.KmlFeatureData = function() {}; /** * The feature's <atom:author>, extracted from the layer * markup (if specified). - * @type {google.maps.KmlAuthor} + * @type {!google.maps.KmlAuthor} */ google.maps.KmlFeatureData.prototype.author; @@ -4605,7 +4626,7 @@ google.maps.KmlLayerMetadata = function() {}; /** * The layer's <atom:author>, extracted from the layer * markup. - * @type {google.maps.KmlAuthor} + * @type {!google.maps.KmlAuthor|null} */ google.maps.KmlLayerMetadata.prototype.author; @@ -4650,7 +4671,7 @@ google.maps.KmlLayerOptions.prototype.clickable; /** * The map on which to display the layer. - * @type {google.maps.Map|null|undefined} + * @type {!google.maps.Map|null|undefined} */ google.maps.KmlLayerOptions.prototype.map; @@ -6012,9 +6033,21 @@ google.maps.MapOptions = function() {}; */ google.maps.MapOptions.prototype.backgroundColor; +/** + * The enabled/disabled state of the Camera control. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.cameraControl; + +/** + * The display options for the Camera control. + * @type {!google.maps.CameraControlOptions|null|undefined} + */ +google.maps.MapOptions.prototype.cameraControlOptions; + /** * The initial Map center. - * @type {google.maps.LatLng|google.maps.LatLngLiteral|null|undefined} + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} */ google.maps.MapOptions.prototype.center; @@ -6027,11 +6060,10 @@ google.maps.MapOptions.prototype.center; google.maps.MapOptions.prototype.clickableIcons; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. * The initial Map color scheme. This option can only be set when the map is * initialized. * @default {@link google.maps.ColorScheme.LIGHT} - * @type {google.maps.ColorScheme|string|null|undefined} + * @type {!google.maps.ColorScheme|string|null|undefined} */ google.maps.MapOptions.prototype.colorScheme; @@ -6094,7 +6126,7 @@ google.maps.MapOptions.prototype.fullscreenControl; /** * The display options for the Fullscreen control. - * @type {google.maps.FullscreenControlOptions|null|undefined} + * @type {!google.maps.FullscreenControlOptions|null|undefined} */ google.maps.MapOptions.prototype.fullscreenControlOptions; @@ -6165,13 +6197,13 @@ google.maps.MapOptions.prototype.mapTypeControl; /** * The initial display options for the Map type control. - * @type {google.maps.MapTypeControlOptions|null|undefined} + * @type {!google.maps.MapTypeControlOptions|null|undefined} */ google.maps.MapOptions.prototype.mapTypeControlOptions; /** * The initial Map mapTypeId. Defaults to ROADMAP. - * @type {google.maps.MapTypeId|string|null|undefined} + * @type {!google.maps.MapTypeId|string|null|undefined} */ google.maps.MapOptions.prototype.mapTypeId; @@ -6208,7 +6240,7 @@ google.maps.MapOptions.prototype.noClear; * available). Please note that vector maps may not be available for all devices * and browsers and the map will fall back to a raster map as needed. * @default {@link google.maps.RenderingType.RASTER} - * @type {google.maps.RenderingType|null|undefined} + * @type {!google.maps.RenderingType|null|undefined} */ google.maps.MapOptions.prototype.renderingType; @@ -6216,7 +6248,7 @@ google.maps.MapOptions.prototype.renderingType; * Defines a boundary that restricts the area of the map accessible to users. * When set, a user can only pan and zoom while the camera view stays inside the * limits of the boundary. - * @type {google.maps.MapRestriction|null|undefined} + * @type {!google.maps.MapRestriction|null|undefined} */ google.maps.MapOptions.prototype.restriction; @@ -6228,7 +6260,7 @@ google.maps.MapOptions.prototype.rotateControl; /** * The display options for the Rotate control. - * @type {google.maps.RotateControlOptions|null|undefined} + * @type {!google.maps.RotateControlOptions|null|undefined} */ google.maps.MapOptions.prototype.rotateControlOptions; @@ -6240,7 +6272,7 @@ google.maps.MapOptions.prototype.scaleControl; /** * The initial display options for the Scale control. - * @type {google.maps.ScaleControlOptions|null|undefined} + * @type {!google.maps.ScaleControlOptions|null|undefined} */ google.maps.MapOptions.prototype.scaleControlOptions; @@ -6259,7 +6291,7 @@ google.maps.MapOptions.prototype.scrollwheel; * dropped on the map. If no panorama is specified, a default * StreetViewPanorama will be displayed in the map's * div when the pegman is dropped. - * @type {google.maps.StreetViewPanorama|null|undefined} + * @type {!google.maps.StreetViewPanorama|null|undefined} */ google.maps.MapOptions.prototype.streetView; @@ -6274,7 +6306,7 @@ google.maps.MapOptions.prototype.streetViewControl; /** * The initial display options for the Street View Pegman control. - * @type {google.maps.StreetViewControlOptions|null|undefined} + * @type {!google.maps.StreetViewControlOptions|null|undefined} */ google.maps.MapOptions.prototype.streetViewControlOptions; @@ -6285,7 +6317,7 @@ google.maps.MapOptions.prototype.streetViewControlOptions; * available when using a map ID, or when using vector maps (use cloud-based * maps styling instead). - * @type {Array|null|undefined} + * @type {!Array|null|undefined} */ google.maps.MapOptions.prototype.styles; @@ -6335,7 +6367,7 @@ google.maps.MapOptions.prototype.zoomControl; /** * The display options for the Zoom control. - * @type {google.maps.ZoomControlOptions|null|undefined} + * @type {!google.maps.ZoomControlOptions|null|undefined} */ google.maps.MapOptions.prototype.zoomControlOptions; @@ -6358,7 +6390,7 @@ google.maps.MapOptions.prototype.panControl; /** * The display options for the Pan control.

- * @type {google.maps.PanControlOptions|null|undefined} + * @type {!google.maps.PanControlOptions|null|undefined} * @deprecated The Pan control is deprecated as of September 2015. */ google.maps.MapOptions.prototype.panControlOptions; @@ -6596,10 +6628,9 @@ google.maps.MapTypeRegistry = function() {}; * Sets the registry to associate the passed string identifier with the passed * MapType. * @param {string} id Identifier of the MapType to add to the registry. - * @param {!google.maps.MapType|*} mapType MapType object to add to the + * @param {!google.maps.MapType|?} mapType MapType object to add to the * registry. * @return {undefined} - * @override */ google.maps.MapTypeRegistry.prototype.set = function(id, mapType) {}; @@ -6659,55 +6690,50 @@ google.maps.Maps3DLibrary = function() {}; google.maps.Maps3DLibrary.prototype.AltitudeMode; /** - * @type {typeof google.maps.maps3d.CenterChangeEvent} + * @type {typeof google.maps.maps3d.LocationClickEvent} */ -google.maps.Maps3DLibrary.prototype.CenterChangeEvent; +google.maps.Maps3DLibrary.prototype.LocationClickEvent; /** - * @type {typeof google.maps.maps3d.ClickEvent} + * @type {typeof google.maps.maps3d.Map3DElement} */ -google.maps.Maps3DLibrary.prototype.ClickEvent; +google.maps.Maps3DLibrary.prototype.Map3DElement; /** - * @type {typeof google.maps.maps3d.HeadingChangeEvent} + * @type {typeof google.maps.maps3d.Marker3DElement} */ -google.maps.Maps3DLibrary.prototype.HeadingChangeEvent; +google.maps.Maps3DLibrary.prototype.Marker3DElement; /** - * @type {typeof google.maps.maps3d.Map3DElement} + * @type {typeof google.maps.maps3d.Marker3DInteractiveElement} */ -google.maps.Maps3DLibrary.prototype.Map3DElement; +google.maps.Maps3DLibrary.prototype.Marker3DInteractiveElement; /** - * @type {typeof google.maps.maps3d.Polygon3DElement} + * @type {typeof google.maps.maps3d.Model3DElement} */ -google.maps.Maps3DLibrary.prototype.Polygon3DElement; +google.maps.Maps3DLibrary.prototype.Model3DElement; /** - * @type {typeof google.maps.maps3d.Polyline3DElement} + * @type {typeof google.maps.maps3d.PlaceClickEvent} */ -google.maps.Maps3DLibrary.prototype.Polyline3DElement; +google.maps.Maps3DLibrary.prototype.PlaceClickEvent; /** - * @type {typeof google.maps.maps3d.RangeChangeEvent} + * @type {typeof google.maps.maps3d.Polygon3DElement} */ -google.maps.Maps3DLibrary.prototype.RangeChangeEvent; +google.maps.Maps3DLibrary.prototype.Polygon3DElement; /** - * @type {typeof google.maps.maps3d.RollChangeEvent} + * @type {typeof google.maps.maps3d.Polyline3DElement} */ -google.maps.Maps3DLibrary.prototype.RollChangeEvent; +google.maps.Maps3DLibrary.prototype.Polyline3DElement; /** * @type {typeof google.maps.maps3d.SteadyChangeEvent} */ google.maps.Maps3DLibrary.prototype.SteadyChangeEvent; -/** - * @type {typeof google.maps.maps3d.TiltChangeEvent} - */ -google.maps.Maps3DLibrary.prototype.TiltChangeEvent; - /** * An event listener, created by google.maps.event.addListener() and friends. @@ -7343,14 +7369,14 @@ google.maps.MarkerOptions = function() {}; /** * The offset from the marker's position to the tip of an InfoWindow that * has been opened with the marker as anchor. - * @type {google.maps.Point|null|undefined} + * @type {!google.maps.Point|null|undefined} */ google.maps.MarkerOptions.prototype.anchorPoint; /** * Which animation to play when marker is added to a map. * @default null - * @type {google.maps.Animation|null|undefined} + * @type {!google.maps.Animation|null|undefined} */ google.maps.MarkerOptions.prototype.animation; @@ -7386,7 +7412,7 @@ google.maps.MarkerOptions.prototype.draggable; /** * Icon for the foreground. If a string is provided, it is treated as though it * were an Icon with the string as url. - * @type {string|google.maps.Icon|google.maps.Symbol|null|undefined} + * @type {string|!google.maps.Icon|!google.maps.Symbol|null|undefined} */ google.maps.MarkerOptions.prototype.icon; @@ -7399,7 +7425,7 @@ google.maps.MarkerOptions.prototype.icon; * label's text. Please note that the label is currently only * used for accessibility text for non-optimized markers. * @default null - * @type {string|google.maps.MarkerLabel|null|undefined} + * @type {string|!google.maps.MarkerLabel|null|undefined} */ google.maps.MarkerOptions.prototype.label; @@ -7407,7 +7433,7 @@ google.maps.MarkerOptions.prototype.label; * Map on which to display Marker. The map is required to display the marker and * can be provided with {@link google.maps.Marker.setMap} if not provided at * marker construction. - * @type {google.maps.Map|google.maps.StreetViewPanorama|null|undefined} + * @type {!google.maps.Map|!google.maps.StreetViewPanorama|null|undefined} */ google.maps.MarkerOptions.prototype.map; @@ -7433,13 +7459,13 @@ google.maps.MarkerOptions.prototype.optimized; * its position is provided - for example, by a user's actions or choices. A * marker position can be provided with {@link google.maps.Marker.setPosition} * if not provided at marker construction. - * @type {google.maps.LatLng|google.maps.LatLngLiteral|null|undefined} + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} */ google.maps.MarkerOptions.prototype.position; /** * Image map region definition used for drag/click. - * @type {google.maps.MarkerShape|null|undefined} + * @type {!google.maps.MarkerShape|null|undefined} */ google.maps.MarkerOptions.prototype.shape; @@ -7473,7 +7499,7 @@ google.maps.MarkerOptions.prototype.zIndex; * Available only in the v=beta channel: https://goo.gle/3oAthT3. * Set a collision behavior for markers on vector maps. * @default null - * @type {string|google.maps.CollisionBehavior|null|undefined} + * @type {string|!google.maps.CollisionBehavior|null|undefined} * @deprecated collisionBehavior is deprecated as of July 2023. * Use {@link google.maps.marker.AdvancedMarkerElement.collisionBehavior} * instead. @@ -7504,7 +7530,7 @@ google.maps.MarkerShape = function() {}; * rect: coords is [x1,y1,x2,y2] where x1,y1 are the * coordinates of the upper-left corner of the rectangle and x2,y2 are the * coordinates of the lower-right coordinates of the rectangle. - * @type {Array} + * @type {!Array|null} */ google.maps.MarkerShape.prototype.coords; @@ -7595,6 +7621,104 @@ google.maps.MotionTrackingControlOptions = function() {}; */ google.maps.MotionTrackingControlOptions.prototype.position; +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * A Orientation3D is a three-dimensional vector used for standard + * mathematical rotation transformations along heading, tilt, and roll.

+ * + * Access by calling `const {Orientation3D} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.Orientation3D|!google.maps.Orientation3DLiteral} value + * The initializing value. + * @implements {google.maps.Orientation3DLiteral} + * @constructor + */ +google.maps.Orientation3D = function(value) {}; + +/** + * Rotation about the z-axis (normal to the Earth's surface). A value of 0 + * (the default) equals North. A positive rotation is clockwise around the + * z-axis and specified in degrees from 0 to 360. Values above or below this + * range will be wrapped so that they fall within the range. For example, a + * value of -190 will be converted to 170. A value of 530 will be converted to + * 170 as well. + * @default 0 + * @type {number} + */ +google.maps.Orientation3D.prototype.heading; + +/** + * Rotation about the y-axis. A positive rotation is clockwise around the y-axis + * and specified in degrees from 0 to 360. Values above or below this range will + * be wrapped so that they fall within the range. For example, a value of -190 + * will be converted to 170. A value of 530 will be converted to 170 as well. + * @default 0 + * @type {number} + */ +google.maps.Orientation3D.prototype.roll; + +/** + * Rotation about the x-axis. A positive rotation is clockwise around the x-axis + * and specified in degrees from 0 to 360. Values above or below this range will + * be wrapped so that they fall within the range. For example, a value of -190 + * will be converted to 170. A value of 530 will be converted to 170 as well. + * @default 0 + * @type {number} + */ +google.maps.Orientation3D.prototype.tilt; + +/** + * Comparison function. + * @param {!google.maps.Orientation3D|!google.maps.Orientation3DLiteral|null} + * other Another Orientation3D object. + * @return {boolean} Whether the two objects are equal. + */ +google.maps.Orientation3D.prototype.equals = function(other) {}; + +/** + * Converts to JSON representation. This function is intended to be used via + * JSON.stringify. + * @return {!google.maps.Orientation3DLiteral} + */ +google.maps.Orientation3D.prototype.toJSON = function() {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Object literals are accepted in place of Orientation3D objects, + * as a convenience, in many places. These are converted to + * Orientation3D objects when the Maps API encounters them. + * @record + */ +google.maps.Orientation3DLiteral = function() {}; + +/** + * Rotation about the z-axis (normal to the Earth's surface). A value of 0 + * (the default) equals North. A positive rotation is clockwise around the + * z-axis and specified in degrees from 0 to 360. + * @type {number|null|undefined} + */ +google.maps.Orientation3DLiteral.prototype.heading; + +/** + * Rotation about the y-axis. A positive rotation is clockwise around the y-axis + * and specified in degrees from 0 to 360. + * @type {number|null|undefined} + */ +google.maps.Orientation3DLiteral.prototype.roll; + +/** + * Rotation about the x-axis. A positive rotation is clockwise around the x-axis + * and specified in degrees from 0 to 360. + * @type {number|null|undefined} + */ +google.maps.Orientation3DLiteral.prototype.tilt; + /** * You can implement this class if you want to display custom types of overlay * objects on the map.

Inherit from this class by setting your @@ -8344,7 +8468,7 @@ google.maps.PolygonOptions.prototype.zIndex; * Access by calling `const {Polyline} = await * google.maps.importLibrary("maps")`. See * https://developers.google.com/maps/documentation/javascript/libraries. - * @param {?google.maps.PolylineOptions=} opts + * @param {(!google.maps.PolylineOptions|null)=} opts * @extends {google.maps.MVCObject} * @constructor */ @@ -8405,7 +8529,7 @@ google.maps.Polyline.prototype.setEditable = function(editable) {}; google.maps.Polyline.prototype.setMap = function(map) {}; /** - * @param {?google.maps.PolylineOptions} options + * @param {!google.maps.PolylineOptions|null} options * @return {undefined} */ google.maps.Polyline.prototype.setOptions = function(options) {}; @@ -8560,7 +8684,7 @@ google.maps.Projection.prototype.fromPointToLatLng = function( * Access by calling `const {Rectangle} = await * google.maps.importLibrary("maps")`. See * https://developers.google.com/maps/documentation/javascript/libraries. - * @param {?google.maps.RectangleOptions=} opts + * @param {(!google.maps.RectangleOptions|null)=} opts * @extends {google.maps.MVCObject} * @constructor */ @@ -8568,7 +8692,7 @@ google.maps.Rectangle = function(opts) {}; /** * Returns the bounds of this rectangle. - * @return {?google.maps.LatLngBounds} + * @return {!google.maps.LatLngBounds|null} */ google.maps.Rectangle.prototype.getBounds = function() {}; @@ -8586,7 +8710,7 @@ google.maps.Rectangle.prototype.getEditable = function() {}; /** * Returns the map on which this rectangle is displayed. - * @return {?google.maps.Map} + * @return {!google.maps.Map|null} */ google.maps.Rectangle.prototype.getMap = function() {}; @@ -8598,7 +8722,8 @@ google.maps.Rectangle.prototype.getVisible = function() {}; /** * Sets the bounds of this rectangle. - * @param {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null} bounds + * @param {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|null} + * bounds * @return {undefined} */ google.maps.Rectangle.prototype.setBounds = function(bounds) {}; @@ -8621,13 +8746,13 @@ google.maps.Rectangle.prototype.setEditable = function(editable) {}; /** * Renders the rectangle on the specified map. If map is set to * null, the rectangle will be removed. - * @param {?google.maps.Map} map + * @param {!google.maps.Map|null} map * @return {undefined} */ google.maps.Rectangle.prototype.setMap = function(map) {}; /** - * @param {?google.maps.RectangleOptions} options + * @param {!google.maps.RectangleOptions|null} options * @return {undefined} */ google.maps.Rectangle.prototype.setOptions = function(options) {}; @@ -8764,7 +8889,7 @@ google.maps.RotateControlOptions = function() {}; /** * Position id. Used to specify the position of the control on the map. * @default {@link google.maps.ControlPosition.INLINE_END_BLOCK_END} - * @type {google.maps.ControlPosition|null|undefined} + * @type {!google.maps.ControlPosition|null|undefined} */ google.maps.RotateControlOptions.prototype.position; @@ -8836,7 +8961,7 @@ google.maps.ScaleControlOptions = function() {}; /** * Style id. Used to select what style of scale control to display. - * @type {google.maps.ScaleControlStyle|null|undefined} + * @type {!google.maps.ScaleControlStyle|null|undefined} */ google.maps.ScaleControlOptions.prototype.style; @@ -8991,7 +9116,7 @@ google.maps.StreetViewControlOptions = function() {}; * zoomControlOptions or panControlOptions, the Street * View control will be displayed as part of the navigation controls. Otherwise, * it will be displayed separately. - * @type {google.maps.ControlPosition|null|undefined} + * @type {!google.maps.ControlPosition|null|undefined} */ google.maps.StreetViewControlOptions.prototype.position; @@ -9002,7 +9127,7 @@ google.maps.StreetViewControlOptions.prototype.position; * the {@link google.maps.StreetViewSource.OUTDOOR} source is not supported at * this time. * @default [{@link google.maps.StreetViewSource.DEFAULT}] - * @type {Iterable|null|undefined} + * @type {!Iterable|null|undefined} */ google.maps.StreetViewControlOptions.prototype.sources; @@ -9019,14 +9144,14 @@ google.maps.StreetViewCoverageLayer = function() {}; /** * Returns the map on which this layer is displayed. - * @return {?google.maps.Map} + * @return {!google.maps.Map|null} */ google.maps.StreetViewCoverageLayer.prototype.getMap = function() {}; /** * Renders the layer on the specified map. If the map is set to null, the layer * will be removed. - * @param {?google.maps.Map} map + * @param {!google.maps.Map|null} map * @return {undefined} */ google.maps.StreetViewCoverageLayer.prototype.setMap = function(map) {}; @@ -10053,7 +10178,7 @@ google.maps.Time.prototype.value; * Access by calling `const {TrafficLayer} = await * google.maps.importLibrary("maps")`. See * https://developers.google.com/maps/documentation/javascript/libraries. - * @param {google.maps.TrafficLayerOptions=} opts + * @param {!google.maps.TrafficLayerOptions=} opts * @extends {google.maps.MVCObject} * @constructor */ @@ -10061,20 +10186,20 @@ google.maps.TrafficLayer = function(opts) {}; /** * Returns the map on which this layer is displayed. - * @return {google.maps.Map} + * @return {!google.maps.Map|null} */ google.maps.TrafficLayer.prototype.getMap = function() {}; /** * Renders the layer on the specified map. If map is set to null, * the layer will be removed. - * @param {google.maps.Map} map + * @param {!google.maps.Map|null} map * @return {undefined} */ google.maps.TrafficLayer.prototype.setMap = function(map) {}; /** - * @param {google.maps.TrafficLayerOptions} options + * @param {!google.maps.TrafficLayerOptions|null} options * @return {undefined} */ google.maps.TrafficLayer.prototype.setOptions = function(options) {}; @@ -10270,7 +10395,7 @@ google.maps.TransitLine = function() {}; /** * The transit agency that operates this transit line. - * @type {Array} + * @type {!Array} */ google.maps.TransitLine.prototype.agencies; @@ -10518,6 +10643,85 @@ google.maps.UnitSystem = { METRIC: 1, }; +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * A Vector3D is a three-dimensional vector used for standard + * mathematical operations such as scaling the bounds of three-dimensional + * object along local x-, y-, and z-axes.
+ * + * Access by calling `const {Vector3D} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.Vector3D|!google.maps.Vector3DLiteral} value The + * initializing value. + * @implements {google.maps.Vector3DLiteral} + * @constructor + */ +google.maps.Vector3D = function(value) {}; + +/** + * X-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3D.prototype.x; + +/** + * Y-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3D.prototype.y; + +/** + * Z-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3D.prototype.z; + +/** + * Comparison function. + * @param {!google.maps.Vector3D|!google.maps.Vector3DLiteral|null} other + * Another Vector3D or Vector3DLiteral object. + * @return {boolean} + */ +google.maps.Vector3D.prototype.equals = function(other) {}; + +/** + * Converts to JSON representation. This function is intended to be used via + * JSON.stringify. + * @return {!google.maps.Vector3DLiteral} + */ +google.maps.Vector3D.prototype.toJSON = function() {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Object literals are accepted in place of Vector3D objects, as a + * convenience, in many places. These are converted to Vector3D + * objects when the Maps API encounters them. + * @record + */ +google.maps.Vector3DLiteral = function() {}; + +/** + * X-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3DLiteral.prototype.x; + +/** + * Y-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3DLiteral.prototype.y; + +/** + * Z-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3DLiteral.prototype.z; + /** * Possible values for vehicle types. * @@ -10809,7 +11013,7 @@ google.maps.ZoomControlOptions = function() {}; /** * Position id. Used to specify the position of the control on the map. * @default {@link google.maps.ControlPosition.INLINE_END_BLOCK_END} - * @type {google.maps.ControlPosition|null|undefined} + * @type {!google.maps.ControlPosition|null|undefined} */ google.maps.ZoomControlOptions.prototype.position; @@ -10940,14 +11144,14 @@ google.maps.drawing.DrawingControlOptions = function() {}; * google.maps.drawing.OverlayType.RECTANGLE}, {@link * google.maps.drawing.OverlayType.CIRCLE}, {@link * google.maps.drawing.OverlayType.POLYGON}] - * @type {Array|null|undefined} + * @type {!Array|null|undefined} */ google.maps.drawing.DrawingControlOptions.prototype.drawingModes; /** * Position id. Used to specify the position of the control on the map. * @default {@link google.maps.ControlPosition.TOP_LEFT} - * @type {google.maps.ControlPosition|null|undefined} + * @type {!google.maps.ControlPosition|null|undefined} */ google.maps.drawing.DrawingControlOptions.prototype.position; @@ -11098,13 +11302,13 @@ google.maps.drawing.OverlayCompleteEvent = function() {}; /** * The completed overlay. - * @type {google.maps.Marker|google.maps.Polygon|google.maps.Polyline|google.maps.Rectangle|google.maps.Circle} + * @type {!google.maps.Marker|!google.maps.Polygon|!google.maps.Polyline|!google.maps.Rectangle|!google.maps.Circle} */ google.maps.drawing.OverlayCompleteEvent.prototype.overlay; /** * The completed overlay's type. - * @type {google.maps.drawing.OverlayType} + * @type {!google.maps.drawing.OverlayType} */ google.maps.drawing.OverlayCompleteEvent.prototype.type; @@ -11152,40 +11356,15 @@ google.maps.drawing.OverlayType = { */ google.maps.geometry = {}; -/** - * Utilities for polyline encoding and decoding. - * - * Access by calling `const {encoding} = await - * google.maps.importLibrary("geometry")`. See - * https://developers.google.com/maps/documentation/javascript/libraries. - * @const - */ -google.maps.geometry.encoding = {}; - -/** - * Decodes an encoded path string into a sequence of LatLngs. - * @param {string} encodedPath - * @return {!Array} - */ -google.maps.geometry.encoding.decodePath = function(encodedPath) {}; - -/** - * Encodes a sequence of LatLngs into an encoded path string. - * @param {!Array|!google.maps.MVCArray} - * path - * @return {string} - */ -google.maps.geometry.encoding.encodePath = function(path) {}; - /** * Utility functions for computations involving polygons and polylines. * * Access by calling `const {poly} = await * google.maps.importLibrary("geometry")`. See * https://developers.google.com/maps/documentation/javascript/libraries. - * @const + * @constructor */ -google.maps.geometry.poly = {}; +google.maps.geometry.poly = function() {}; /** * Computes whether the given point lies inside the specified polygon. @@ -11209,6 +11388,31 @@ google.maps.geometry.poly.containsLocation = function(point, polygon) {}; google.maps.geometry.poly.isLocationOnEdge = function( point, poly, tolerance) {}; +/** + * Utilities for polyline encoding and decoding. + * + * Access by calling `const {encoding} = await + * google.maps.importLibrary("geometry")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @const + */ +google.maps.geometry.encoding = {}; + +/** + * Decodes an encoded path string into a sequence of LatLngs. + * @param {string} encodedPath + * @return {!Array} + */ +google.maps.geometry.encoding.decodePath = function(encodedPath) {}; + +/** + * Encodes a sequence of LatLngs into an encoded path string. + * @param {!Array|!google.maps.MVCArray} + * path + * @return {string} + */ +google.maps.geometry.encoding.encodePath = function(path) {}; + /** * Utility functions for computing geodesic angles, distances and areas. The * default radius is Earth's radius of 6378137 meters. @@ -12066,8 +12270,6 @@ google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderUpdateEvent .prototype.tasks; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * Fleet Location Provider. * * Access by calling `const {FleetEngineFleetLocationProvider} = await @@ -12107,8 +12309,6 @@ google.maps.journeySharing.FleetEngineFleetLocationProvider.prototype .vehicleFilter; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * Options for fleet location provider. * @record */ @@ -12186,8 +12386,6 @@ google.maps.journeySharing.FleetEngineFleetLocationProviderOptions.prototype .vehicleMarkerCustomization; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * The event object passed to the event handler when the {@link * google.maps.journeySharing.FleetEngineFleetLocationProvider.update} event is * triggered. @@ -12718,8 +12916,6 @@ google.maps.journeySharing.FleetEngineTripLocationProviderUpdateEvent.prototype .trip; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * Vehicle Location Provider. * * Access by calling `const {FleetEngineVehicleLocationProvider} = await @@ -12776,8 +12972,6 @@ google.maps.journeySharing.FleetEngineVehicleLocationProvider params) {}; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * Options for vehicle location provider. * @record */ @@ -12982,8 +13176,6 @@ google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype .vehicleMarkerCustomization; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * The event object passed to the event handler when the {@link * google.maps.journeySharing.FleetEngineVehicleLocationProvider.update} event * is triggered. @@ -14326,8 +14518,6 @@ google.maps.journeySharing.TripPolylineCustomizationFunctionParams.prototype .trip; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * Trip types supported by a {@link google.maps.journeySharing.Vehicle}. * * Access by calling `const {TripType} = await @@ -14351,8 +14541,6 @@ google.maps.journeySharing.TripType = { }; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * TripWaypoint type. * @record */ @@ -14430,8 +14618,6 @@ google.maps.journeySharing.TripWaypointMarkerCustomizationFunctionParams .prototype.waypointIndex; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * The details for a vehicle returned by Fleet Engine. * @record */ @@ -14594,8 +14780,6 @@ google.maps.journeySharing.VehicleLocationUpdate.prototype google.maps.journeySharing.VehicleLocationUpdate.prototype.time; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * Parameters specific to marker customization functions that apply options to * vehicle markers. Used by {@link * google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.vehicleMarkerCustomization} @@ -14615,8 +14799,6 @@ google.maps.journeySharing.VehicleMarkerCustomizationFunctionParams.prototype .vehicle; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * The current navigation status of a {@link * google.maps.journeySharing.Vehicle}. * @@ -14666,8 +14848,6 @@ google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams.prototype .vehicle; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * The current state of a {@link google.maps.journeySharing.Vehicle}. * * Access by calling `const {VehicleState} = await @@ -14691,8 +14871,6 @@ google.maps.journeySharing.VehicleState = { }; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * The type of {@link google.maps.journeySharing.Vehicle}. * * Access by calling `const {VehicleType} = await @@ -14770,8 +14948,6 @@ google.maps.journeySharing.VehicleWaypoint.prototype.path; google.maps.journeySharing.VehicleWaypoint.prototype.speedReadingIntervals; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * Parameters specific to marker customization functions that apply options to * vehicle waypoint markers. Used by {@link * google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.originMarkerCustomization}, {@link @@ -14794,8 +14970,6 @@ google.maps.journeySharing.VehicleWaypointMarkerCustomizationFunctionParams .prototype.waypointIndex; /** - * Available only in the v=beta channel: https://goo.gle/3oAthT3. - * * Waypoint types supported by {@link google.maps.journeySharing.Vehicle}. * * Access by calling `const {WaypointType} = await @@ -15307,29 +15481,108 @@ google.maps.maps3d.AltitudeMode = { /** * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. * - * This event is created from monitoring center change on - * Map3DElement. This event bubbles up through the DOM tree. + * CameraOptions object used to define the properties that can be set on a + * camera object. The camera object can be anything that has a camera position, + * e.g. a current map state, or a future requested animation state. + * @record + */ +google.maps.maps3d.CameraOptions = function() {}; + +/** + * See {@link google.maps.maps3d.Map3DElement.center}. + * @type {!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.center; + +/** + * See {@link google.maps.maps3d.Map3DElement.heading}. + * @type {number|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.heading; + +/** + * See {@link google.maps.maps3d.Map3DElement.range}. + * @type {number|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.range; + +/** + * See {@link google.maps.maps3d.Map3DElement.roll}. + * @type {number|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.roll; + +/** + * See {@link google.maps.maps3d.Map3DElement.tilt}. + * @type {number|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.tilt; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. * - * Access by calling `const {CenterChangeEvent} = await - * google.maps.importLibrary("maps3d")`. See - * https://developers.google.com/maps/documentation/javascript/libraries. - * @extends {Event} - * @constructor + * Customization options for the FlyCameraAround Animation. + * @record */ -google.maps.maps3d.CenterChangeEvent = function() {}; +google.maps.maps3d.FlyAroundAnimationOptions = function() {}; + +/** + * The central point at which the camera should look at during the orbit + * animation. Note that the map heading will change as the camera orbits around + * this center point. + * @type {!google.maps.maps3d.CameraOptions} + */ +google.maps.maps3d.FlyAroundAnimationOptions.prototype.camera; + +/** + * The duration of the animation in milliseconds. This is the total duration of + * the animation, not the duration of a single rotation. + * @type {number|undefined} + */ +google.maps.maps3d.FlyAroundAnimationOptions.prototype.durationMillis; + +/** + * The number of rounds to rotate around the center in the given duration. This + * controls the overall speed of rotation. Passing a negative number to rounds + * will cause the camera to rotate in a counter-clockwise direction instead of + * the default clockwise direction. + * @type {number|undefined} + */ +google.maps.maps3d.FlyAroundAnimationOptions.prototype.rounds; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Customization options for the FlyCameraTo Animation. + * @record + */ +google.maps.maps3d.FlyToAnimationOptions = function() {}; + +/** + * The duration of the animation in milliseconds. A duration of 0 will teleport + * the camera straight to the end position. + * @type {number|undefined} + */ +google.maps.maps3d.FlyToAnimationOptions.prototype.durationMillis; + +/** + * The location at which the camera should point at the end of the animation. + * @type {!google.maps.maps3d.CameraOptions} + */ +google.maps.maps3d.FlyToAnimationOptions.prototype.endCamera; /** * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. * * This event is created from clicking a Map3DElement. * - * Access by calling `const {ClickEvent} = await + * Access by calling `const {LocationClickEvent} = await * google.maps.importLibrary("maps3d")`. See * https://developers.google.com/maps/documentation/javascript/libraries. * @extends {Event} * @constructor */ -google.maps.maps3d.ClickEvent = function() {}; +google.maps.maps3d.LocationClickEvent = function() {}; /** * The latitude/longitude/altitude that was below the cursor when the event @@ -15339,21 +15592,7 @@ google.maps.maps3d.ClickEvent = function() {}; * bubbles up through the DOM tree. * @type {!google.maps.LatLngAltitude|null} */ -google.maps.maps3d.ClickEvent.prototype.position; - -/** - * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. - * - * This event is created from monitoring heading change on - * Map3DElement. This event bubbles up through the DOM tree. - * - * Access by calling `const {HeadingChangeEvent} = await - * google.maps.importLibrary("maps3d")`. See - * https://developers.google.com/maps/documentation/javascript/libraries. - * @extends {Event} - * @constructor - */ -google.maps.maps3d.HeadingChangeEvent = function() {}; +google.maps.maps3d.LocationClickEvent.prototype.position; /** * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. @@ -15400,6 +15639,14 @@ google.maps.maps3d.Map3DElement.prototype.center; */ google.maps.maps3d.Map3DElement.prototype.defaultLabelsDisabled; +/** + * When true, all default UI buttons are disabled. Does not disable + * the keyboard and gesture controls. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.defaultUIDisabled; + /** * The compass heading of the map, in degrees, where due north is zero. When * there is no tilt, any roll will be interpreted as heading. @@ -15486,6 +15733,43 @@ google.maps.maps3d.Map3DElement.prototype.tilt; +/** + * This method orbits the camera around a given location for a given duration, + * making the given number of rounds in that time.

By default, the + * camera orbits clockwise. If given a negative number for rounds, the camera + * will orbit in a counter-clockwise direction instead.

The method + * is asynchronous because animations can only start after the map has loaded a + * minimum amount. The method returns once the animation has been started.

If the number of rounds is zero, no spin will occur, and the + * animation will complete immediately after it starts. + * @param {!google.maps.maps3d.FlyAroundAnimationOptions} options + * @return {undefined} + */ +google.maps.maps3d.Map3DElement.prototype.flyCameraAround = function( + options) {}; + +/** + * This method moves the camera parabolically from the current location to a + * given end location over a given duration.

The method is + * asynchronous because animations can only start after the map has loaded a + * minimum amount. The method returns once the animation has been started. + * @param {!google.maps.maps3d.FlyToAnimationOptions} options + * @return {undefined} + */ +google.maps.maps3d.Map3DElement.prototype.flyCameraTo = function(options) {}; + + + +/** + * This method stops any fly animation that might happen to be running. The + * camera stays wherever it is mid-animation; it does not teleport to the end + * point.

The method is asynchronous because animations can only + * start or stop after the map has loaded a minimum amount. The method returns + * once the animation has stopped. + * @return {undefined} + */ +google.maps.maps3d.Map3DElement.prototype.stopCameraAnimation = function() {}; + /** * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. * @@ -15513,6 +15797,12 @@ google.maps.maps3d.Map3DElementOptions.prototype.center; */ google.maps.maps3d.Map3DElementOptions.prototype.defaultLabelsDisabled; +/** + * See {@link google.maps.maps3d.Map3DElement.defaultUIDisabled}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.defaultUIDisabled; + /** * See {@link google.maps.maps3d.Map3DElement.heading}. * @type {number|null|undefined} @@ -15573,6 +15863,302 @@ google.maps.maps3d.Map3DElementOptions.prototype.roll; */ google.maps.maps3d.Map3DElementOptions.prototype.tilt; +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Shows a position on a 3D map. Note that the position must be set + * for the Marker3DElement to display. + * + * Access by calling `const {Marker3DElement} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.maps3d.Marker3DElementOptions=} options + * @implements {google.maps.maps3d.Marker3DElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.maps3d.Marker3DElement = function(options) {}; + +/** + * Specifies how the altitude component of the position is interpreted. + * @default {@link google.maps.maps3d.AltitudeMode.CLAMP_TO_GROUND} + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.altitudeMode; + +/** + * An enumeration specifying how a Marker3DElement should behave when it + * collides with another Marker3DElement or with the basemap labels. + * @default {@link google.maps.CollisionBehavior.REQUIRED} + * @type {!google.maps.CollisionBehavior|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.collisionBehavior; + +/** + * Specifies whether this marker should be drawn or not when it's occluded. + * The marker can be occluded by map geometry (e.g. buildings). + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.drawsWhenOccluded; + +/** + * Specifies whether to connect the marker to the ground. To extrude a marker, + * the altitudeMode must be either RELATIVE_TO_GROUND + * or ABSOLUTE. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.extruded; + +/** + * Text to be displayed by this marker. + * @type {string|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.label; + +/** + * The location of the tip of the marker. Altitude is ignored in certain modes + * and thus optional. + * @type {!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.position; + +/** + * Specifies whether this marker should preserve its size or not regardless of + * distance from camera. By default, the marker is scaled based on distance from + * camera/tilt. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.sizePreserved; + +/** + * The zIndex compared to other markers. + * @type {number|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.zIndex; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Marker3DElementOptions object used to define the properties that can be set + * on a Marker3DElement. + * @record + */ +google.maps.maps3d.Marker3DElementOptions = function() {}; + +/** + * See {@link google.maps.maps3d.Marker3DElement.altitudeMode}. + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.altitudeMode; + +/** + * See {@link google.maps.maps3d.Marker3DElement.collisionBehavior}. + * @type {!google.maps.CollisionBehavior|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.collisionBehavior; + +/** + * See {@link google.maps.maps3d.Marker3DElement.drawsWhenOccluded}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.drawsWhenOccluded; + +/** + * See {@link google.maps.maps3d.Marker3DElement.extruded}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.extruded; + +/** + * See {@link google.maps.maps3d.Marker3DElement.label}. + * @type {string|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.label; + +/** + * See {@link google.maps.maps3d.Marker3DElement.position}. + * @type {!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.position; + +/** + * See {@link google.maps.maps3d.Marker3DElement.sizePreserved}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.sizePreserved; + +/** + * See {@link google.maps.maps3d.Marker3DElement.zIndex}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.zIndex; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Shows a position on a 3D map. Note that the position must be set + * for the Marker3DInteractiveElement to display. Unlike + * Marker3DElement, Marker3DInteractiveElement + * receives a gmp-click event. + * + * Access by calling `const {Marker3DInteractiveElement} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.maps3d.Marker3DElementOptions=} options + * @implements {google.maps.maps3d.Marker3DInteractiveElementOptions} + * @extends {google.maps.maps3d.Marker3DElement} + * @constructor + */ +google.maps.maps3d.Marker3DInteractiveElement = function(options) {}; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Marker3DInteractiveElementOptions object used to define the properties that + * can be set on a Marker3DInteractiveElement. + * @extends {google.maps.maps3d.Marker3DElementOptions} + * @record + */ +google.maps.maps3d.Marker3DInteractiveElementOptions = function() {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * A 3D model which allows the rendering of gLTF models. Note that the + * position and the src must be set for the + * Model3DElement to display.

Core properties of the + * gLTF PBR should be supported. + * No extensions or extension properties are currently supported. + * + * Access by calling `const {Model3DElement} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.maps3d.Model3DElementOptions=} options + * @implements {google.maps.maps3d.Model3DElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.maps3d.Model3DElement = function(options) {}; + +/** + * Specifies how altitude in the position is interpreted. + * @default {@link google.maps.maps3d.AltitudeMode.CLAMP_TO_GROUND} + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.altitudeMode; + +/** + * Describes rotation of a 3D model's coordinate system to position the + * model on the 3D Map.

Rotations are applied to the model in the + * following order: roll, tilt and then heading. + * @type {!google.maps.Orientation3D|!google.maps.Orientation3DLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.orientation; + +/** + * Sets the Model3DElement's position. Altitude is ignored in + * certain modes and thus optional. + * @type {!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.position; + +/** + * Scales the model along the x, y, and z axes in the model's coordinate + * space. + * @default 1 + * @type {number|!google.maps.Vector3D|!google.maps.Vector3DLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.scale; + +/** + * Specifies the url of the 3D model. At this time, only models in the + * .glb format are supported.

Any relative HTTP urls + * will be resolved to their corresponding absolute ones.

Please + * note that If you're hosting your .glb model files on a + * different website or server than your main application, make sure to set up + * the correct CORS HTTP headers. This allows your application to securely + * access the model files from the other domain. + * @type {string|!URL|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.src; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Model3DElementOptions object used to define the properties that can be set on + * a Model3DElement. + * @record + */ +google.maps.maps3d.Model3DElementOptions = function() {}; + +/** + * See {@link google.maps.maps3d.Model3DElement.altitudeMode}. + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.altitudeMode; + +/** + * See {@link google.maps.maps3d.Model3DElement.orientation}. + * @type {!google.maps.Orientation3D|!google.maps.Orientation3DLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.orientation; + +/** + * See {@link google.maps.maps3d.Model3DElement.position}. + * @type {!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.position; + +/** + * See {@link google.maps.maps3d.Model3DElement.scale}. + * @type {number|!google.maps.Vector3D|!google.maps.Vector3DLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.scale; + +/** + * See {@link google.maps.maps3d.Model3DElement.src}. + * @type {string|!URL|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.src; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * This event is created from clicking a Map3DElement. + * + * Access by calling `const {PlaceClickEvent} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.maps3d.LocationClickEvent} + * @constructor + */ +google.maps.maps3d.PlaceClickEvent = function() {}; + +/** + * The place id of the map feature. + * @type {string} + */ +google.maps.maps3d.PlaceClickEvent.prototype.placeId; + +/** + * Fetches a Place for this place id. In the resulting + * Place object, the id property will be populated. Additional + * fields can be subsequently requested via Place.fetchFields() + * subject to normal Places API enablement and billing. The promise is rejected + * if there was an error fetching the Place. + * @return {!Promise} + */ +google.maps.maps3d.PlaceClickEvent.prototype.fetchPlace = function() {}; + /** * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. * @@ -15620,12 +16206,6 @@ google.maps.maps3d.Polygon3DElement.prototype.extruded; */ google.maps.maps3d.Polygon3DElement.prototype.fillColor; -/** - * The fill opacity between 0.0 and 1.0. - * @type {number|null|undefined} - */ -google.maps.maps3d.Polygon3DElement.prototype.fillOpacity; - /** * When true, edges of the polygon are interpreted as geodesic and * will follow the curvature of the Earth. When false, edges of the @@ -15656,12 +16236,6 @@ google.maps.maps3d.Polygon3DElement.prototype.outerCoordinates; */ google.maps.maps3d.Polygon3DElement.prototype.strokeColor; -/** - * The stroke opacity between 0.0 and 1.0. - * @type {number|null|undefined} - */ -google.maps.maps3d.Polygon3DElement.prototype.strokeOpacity; - /** * The stroke width in pixels. * @type {number|null|undefined} @@ -15687,21 +16261,18 @@ google.maps.maps3d.Polygon3DElementOptions = function() {}; /** * See {@link google.maps.maps3d.Polygon3DElement.altitudeMode}. - * @default {@link google.maps.maps3d.AltitudeMode.ABSOLUTE} * @type {!google.maps.maps3d.AltitudeMode|null|undefined} */ google.maps.maps3d.Polygon3DElementOptions.prototype.altitudeMode; /** * See {@link google.maps.maps3d.Polygon3DElement.drawsOccludedSegments}. - * @default false * @type {boolean|null|undefined} */ google.maps.maps3d.Polygon3DElementOptions.prototype.drawsOccludedSegments; /** * See {@link google.maps.maps3d.Polygon3DElement.extruded}. - * @default false * @type {boolean|null|undefined} */ google.maps.maps3d.Polygon3DElementOptions.prototype.extruded; @@ -15712,15 +16283,8 @@ google.maps.maps3d.Polygon3DElementOptions.prototype.extruded; */ google.maps.maps3d.Polygon3DElementOptions.prototype.fillColor; -/** - * See {@link google.maps.maps3d.Polygon3DElement.fillOpacity}. - * @type {number|null|undefined} - */ -google.maps.maps3d.Polygon3DElementOptions.prototype.fillOpacity; - /** * See {@link google.maps.maps3d.Polygon3DElement.geodesic}. - * @default false * @type {boolean|null|undefined} */ google.maps.maps3d.Polygon3DElementOptions.prototype.geodesic; @@ -15743,12 +16307,6 @@ google.maps.maps3d.Polygon3DElementOptions.prototype.outerCoordinates; */ google.maps.maps3d.Polygon3DElementOptions.prototype.strokeColor; -/** - * See {@link google.maps.maps3d.Polygon3DElement.strokeOpacity}. - * @type {number|null|undefined} - */ -google.maps.maps3d.Polygon3DElementOptions.prototype.strokeOpacity; - /** * See {@link google.maps.maps3d.Polygon3DElement.strokeWidth}. * @type {number|null|undefined} @@ -15822,12 +16380,6 @@ google.maps.maps3d.Polyline3DElement.prototype.geodesic; */ google.maps.maps3d.Polyline3DElement.prototype.outerColor; -/** - * The outer opacity between 0.0 and 1.0. - * @type {number|null|undefined} - */ -google.maps.maps3d.Polyline3DElement.prototype.outerOpacity; - /** * The outer width is between 0.0 and 1.0. This is a * percentage of the strokeWidth. @@ -15841,12 +16393,6 @@ google.maps.maps3d.Polyline3DElement.prototype.outerWidth; */ google.maps.maps3d.Polyline3DElement.prototype.strokeColor; -/** - * The stroke opacity between 0.0 and 1.0. - * @type {number|null|undefined} - */ -google.maps.maps3d.Polyline3DElement.prototype.strokeOpacity; - /** * The stroke width in pixels. * @type {number|null|undefined} @@ -15872,7 +16418,6 @@ google.maps.maps3d.Polyline3DElementOptions = function() {}; /** * See {@link google.maps.maps3d.Polyline3DElement.altitudeMode}. - * @default {@link google.maps.maps3d.AltitudeMode.ABSOLUTE} * @type {!google.maps.maps3d.AltitudeMode|null|undefined} */ google.maps.maps3d.Polyline3DElementOptions.prototype.altitudeMode; @@ -15885,21 +16430,18 @@ google.maps.maps3d.Polyline3DElementOptions.prototype.coordinates; /** * See {@link google.maps.maps3d.Polyline3DElement.drawsOccludedSegments}. - * @default false * @type {boolean|null|undefined} */ google.maps.maps3d.Polyline3DElementOptions.prototype.drawsOccludedSegments; /** * See {@link google.maps.maps3d.Polyline3DElement.extruded}. - * @default false * @type {boolean|null|undefined} */ google.maps.maps3d.Polyline3DElementOptions.prototype.extruded; /** * See {@link google.maps.maps3d.Polyline3DElement.geodesic}. - * @default false * @type {boolean|null|undefined} */ google.maps.maps3d.Polyline3DElementOptions.prototype.geodesic; @@ -15910,12 +16452,6 @@ google.maps.maps3d.Polyline3DElementOptions.prototype.geodesic; */ google.maps.maps3d.Polyline3DElementOptions.prototype.outerColor; -/** - * See {@link google.maps.maps3d.Polyline3DElement.outerOpacity}. - * @type {number|null|undefined} - */ -google.maps.maps3d.Polyline3DElementOptions.prototype.outerOpacity; - /** * See {@link google.maps.maps3d.Polyline3DElement.outerWidth}. * @type {number|null|undefined} @@ -15928,12 +16464,6 @@ google.maps.maps3d.Polyline3DElementOptions.prototype.outerWidth; */ google.maps.maps3d.Polyline3DElementOptions.prototype.strokeColor; -/** - * See {@link google.maps.maps3d.Polyline3DElement.strokeOpacity}. - * @type {number|null|undefined} - */ -google.maps.maps3d.Polyline3DElementOptions.prototype.strokeOpacity; - /** * See {@link google.maps.maps3d.Polyline3DElement.strokeWidth}. * @type {number|null|undefined} @@ -15946,34 +16476,6 @@ google.maps.maps3d.Polyline3DElementOptions.prototype.strokeWidth; */ google.maps.maps3d.Polyline3DElementOptions.prototype.zIndex; -/** - * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. - * - * This event is created from monitoring range change on - * Map3DElement. This event bubbles up through the DOM tree. - * - * Access by calling `const {RangeChangeEvent} = await - * google.maps.importLibrary("maps3d")`. See - * https://developers.google.com/maps/documentation/javascript/libraries. - * @extends {Event} - * @constructor - */ -google.maps.maps3d.RangeChangeEvent = function() {}; - -/** - * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. - * - * This event is created from monitoring roll change on - * Map3DElement. This event bubbles up through the DOM tree. - * - * Access by calling `const {RollChangeEvent} = await - * google.maps.importLibrary("maps3d")`. See - * https://developers.google.com/maps/documentation/javascript/libraries. - * @extends {Event} - * @constructor - */ -google.maps.maps3d.RollChangeEvent = function() {}; - /** * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. * @@ -15995,20 +16497,6 @@ google.maps.maps3d.SteadyChangeEvent = function() {}; */ google.maps.maps3d.SteadyChangeEvent.prototype.isSteady; -/** - * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. - * - * This event is created from monitoring tilt change on - * Map3DElement. This event bubbles up through the DOM tree. - * - * Access by calling `const {TiltChangeEvent} = await - * google.maps.importLibrary("maps3d")`. See - * https://developers.google.com/maps/documentation/javascript/libraries. - * @extends {Event} - * @constructor - */ -google.maps.maps3d.TiltChangeEvent = function() {}; - /** * @const */ @@ -16374,13 +16862,13 @@ google.maps.places.AddressComponent = function() {}; /** * The full text of the address component. - * @type {?string} + * @type {string|null} */ google.maps.places.AddressComponent.prototype.longText; /** * The abbreviated, short text of the given address component. - * @type {?string} + * @type {string|null} */ google.maps.places.AddressComponent.prototype.shortText; @@ -16405,12 +16893,12 @@ google.maps.places.Attribution = function() {}; /** * Attribution text to be displayed for this Place result. - * @type {?string} + * @type {string|null} */ google.maps.places.Attribution.prototype.provider; /** - * @type {?string} + * @type {string|null} */ google.maps.places.Attribution.prototype.providerURI; @@ -16433,13 +16921,13 @@ google.maps.places.AuthorAttribution.prototype.displayName; /** * Author's photo URI for this result. This may not always be available. - * @type {?string} + * @type {string|null} */ google.maps.places.AuthorAttribution.prototype.photoURI; /** * Author's profile URI for this result. - * @type {?string} + * @type {string|null} */ google.maps.places.AuthorAttribution.prototype.uri; @@ -17500,7 +17988,7 @@ google.maps.places.OpeningHoursPeriod = function() {}; /** * The closing time for the Place. - * @type {?google.maps.places.OpeningHoursPoint} + * @type {!google.maps.places.OpeningHoursPoint|null} */ google.maps.places.OpeningHoursPeriod.prototype.close; @@ -19157,7 +19645,7 @@ google.maps.places.PlacesService = function(attrContainer) {}; * calling {@link google.maps.places.PlacesService.getDetails} and passing * the {@link google.maps.places.PlaceResult.place_id} for the desired place. * @param {!google.maps.places.FindPlaceFromPhoneNumberRequest} request - * @param {function(?Array, + * @param {function((!Array|null), * !google.maps.places.PlacesServiceStatus): void} callback * @return {undefined} */ @@ -19174,7 +19662,7 @@ google.maps.places.PlacesService.prototype.findPlaceFromPhoneNumber = function( * calling {@link google.maps.places.PlacesService.getDetails} and passing * the {@link google.maps.places.PlaceResult.place_id} for the desired place. * @param {!google.maps.places.FindPlaceFromQueryRequest} request - * @param {function(?Array, + * @param {function((!Array|null), * !google.maps.places.PlacesServiceStatus): void} callback * @return {undefined} */ @@ -19185,7 +19673,7 @@ google.maps.places.PlacesService.prototype.findPlaceFromQuery = function( * Retrieves details about the place identified by the given * placeId. * @param {!google.maps.places.PlaceDetailsRequest} request - * @param {function(?google.maps.places.PlaceResult, + * @param {function((!google.maps.places.PlaceResult|null), * !google.maps.places.PlacesServiceStatus): void} callback * @return {undefined} */ @@ -19207,9 +19695,9 @@ google.maps.places.PlacesService.prototype.getDetails = function( * additional pages of results (null if this is the last page of results or if * there is only one page of results). * @param {!google.maps.places.PlaceSearchRequest} request - * @param {function(?Array, + * @param {function((!Array|null), * !google.maps.places.PlacesServiceStatus, - * ?google.maps.places.PlaceSearchPagination): void} callback + * (!google.maps.places.PlaceSearchPagination|null)): void} callback * @return {undefined} */ google.maps.places.PlacesService.prototype.nearbySearch = function( @@ -19226,9 +19714,9 @@ google.maps.places.PlacesService.prototype.nearbySearch = function( * object can be used to fetch additional pages of results (null if this is the * last page of results or if there is only one page of results). * @param {!google.maps.places.TextSearchRequest} request - * @param {function(?Array, + * @param {function((!Array|null), * !google.maps.places.PlacesServiceStatus, - * ?google.maps.places.PlaceSearchPagination): void} callback + * (!google.maps.places.PlaceSearchPagination|null)): void} callback * @return {undefined} */ google.maps.places.PlacesService.prototype.textSearch = function( @@ -19292,14 +19780,14 @@ google.maps.places.PlusCode = function() {}; * A plus code with a 1/8000th of a degree by 1/8000th of a degree area where * the first four characters (the area code) are dropped and replaced with a * locality description. For example, "9G8F+5W Zurich, Switzerland". - * @type {?string} + * @type {string|null} */ google.maps.places.PlusCode.prototype.compoundCode; /** * A plus code with a 1/8000th of a degree by 1/8000th of a degree area. For * example, "8FVC9G8F+5W". - * @type {?string} + * @type {string|null} */ google.maps.places.PlusCode.prototype.globalCode; @@ -19473,18 +19961,18 @@ google.maps.places.Review = function() {}; /** * The reviewer. - * @type {?google.maps.places.AuthorAttribution} + * @type {!google.maps.places.AuthorAttribution|null} */ google.maps.places.Review.prototype.authorAttribution; /** - * @type {?Date} + * @type {!Date|null} */ google.maps.places.Review.prototype.publishTime; /** * The rating of this review, a number between 1.0 and 5.0 (inclusive). - * @type {?number} + * @type {number|null} */ google.maps.places.Review.prototype.rating; @@ -19492,13 +19980,13 @@ google.maps.places.Review.prototype.rating; * A string of formatted recent time, expressing the review time relative to the * current time in a form appropriate for the language and country. For example * `"a month ago"'. - * @type {?string} + * @type {string|null} */ google.maps.places.Review.prototype.relativePublishTimeDescription; /** * The text of a review. - * @type {?string} + * @type {string|null} */ google.maps.places.Review.prototype.text; @@ -19508,7 +19996,7 @@ google.maps.places.Review.prototype.text; * secondary tag indicating country or region. For example, all the English * reviews are tagged as 'en' rather than 'en-AU' or * 'en-UK'. - * @type {?string} + * @type {string|null} */ google.maps.places.Review.prototype.textLanguageCode; @@ -19558,7 +20046,7 @@ google.maps.places.SearchBoxOptions = function() {}; /** * The area towards which to bias query predictions. Predictions are biased * towards, but not restricted to, queries targeting these bounds. - * @type {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null|undefined} + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|null|undefined} */ google.maps.places.SearchBoxOptions.prototype.bounds; @@ -20025,7 +20513,7 @@ google.maps.visualization.HeatmapLayerOptions = function() {}; /** * The data points to display. Required. - * @type {google.maps.MVCArray|Array|null|undefined} + * @type {!google.maps.MVCArray|!Array|null|undefined} */ google.maps.visualization.HeatmapLayerOptions.prototype.data; @@ -20041,13 +20529,13 @@ google.maps.visualization.HeatmapLayerOptions.prototype.dissipating; /** * The color gradient of the heatmap, specified as an array of CSS color * strings. All CSS3 colors are supported except for extended named colors. - * @type {Array|null|undefined} + * @type {!Array|null|undefined} */ google.maps.visualization.HeatmapLayerOptions.prototype.gradient; /** * The map on which to display the layer. - * @type {google.maps.Map|null|undefined} + * @type {!google.maps.Map|null|undefined} */ google.maps.visualization.HeatmapLayerOptions.prototype.map; diff --git a/contrib/externs/maps/google_maps_api_v3_59.js b/contrib/externs/maps/google_maps_api_v3_59.js new file mode 100644 index 00000000000..7222fb65467 --- /dev/null +++ b/contrib/externs/maps/google_maps_api_v3_59.js @@ -0,0 +1,20850 @@ +/* + * Copyright 2010 The Closure Compiler Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Externs for the Google Maps v3 API. + * @see https://developers.google.com/maps/documentation/javascript/reference + * @externs + */ + +/** + * @const + * @suppress {const,duplicate,strictMissingProperties} + */ +var google = {}; + +/** + * @const + * @suppress {const,duplicate,strictMissingProperties} + */ +google.maps = {}; + +/** + * Loads a library + * of the Maps JavaScript API, resolving with the direct members of that API + * (without namespacing). (When loaded, libraries also add themselves to the + * global google.maps namespace, though using the global namespace + * is not generally recommended.) + * @param {string} libraryName + * @return {!Promise} + */ +google.maps.importLibrary = function(libraryName) {}; + +/** + * Google Maps JavaScript API version loaded by the browser. See https://developers.google.com/maps/documentation/javascript/versions + * @const + * @type {string} + */ +google.maps.version; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * A relational description of a location. Includes a ranked set of nearby + * landmarks and the areas containing the target location. + * @record + */ +google.maps.AddressDescriptor = function() {}; + +/** + * A ranked list of containing or adjacent areas. The most useful (recognizable + * and precise) areas are ranked first. + * @type {!Array} + */ +google.maps.AddressDescriptor.prototype.areas; + +/** + * A ranked list of nearby landmarks. The most useful (recognizable and nearby) + * landmarks are ranked first. + * @type {!Array} + */ +google.maps.AddressDescriptor.prototype.landmarks; + +/** + * Animations that can be played on a marker. Use the {@link + * google.maps.Marker.setAnimation} method on Marker or the {@link + * google.maps.MarkerOptions.animation} option to play an animation. + * + * Access by calling `const {Animation} = await + * google.maps.importLibrary("marker")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {number} + */ +google.maps.Animation = { + /** + * Marker bounces until animation is stopped by calling {@link + * google.maps.Marker.setAnimation} with null. + */ + BOUNCE: 0, + /** + * Marker drops from the top of the map to its final location. Animation will + * cease once the marker comes to rest and {@link + * google.maps.Marker.getAnimation} will return null. This type + * of animation is usually specified during creation of the marker. + */ + DROP: 1, +}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * A place that is a small region, such as a neighborhood, sublocality, or large + * complex that contains the target location. + * @record + */ +google.maps.Area = function() {}; + +/** + * Defines the spatial relationship between the target location and the area. + * @type {!google.maps.Containment} + */ +google.maps.Area.prototype.containment; + +/** + * The name for the area. + * @type {string} + */ +google.maps.Area.prototype.display_name; + +/** + * The language of the name for the area. + * @type {string} + */ +google.maps.Area.prototype.display_name_language_code; + +/** + * The Place ID of the underlying area. Can be used to resolve more information + * about the area through Place Details or Place ID Lookup. + * @type {string} + */ +google.maps.Area.prototype.place_id; + +/** + * A layer showing bike lanes and paths. + * + * Access by calling `const {BicyclingLayer} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.BicyclingLayer = function() {}; + +/** + * Returns the map on which this layer is displayed. + * @return {!google.maps.Map|null} + */ +google.maps.BicyclingLayer.prototype.getMap = function() {}; + +/** + * Renders the layer on the specified map. If map is set to null, + * the layer will be removed. + * @param {!google.maps.Map|null} map + * @return {void} + */ +google.maps.BicyclingLayer.prototype.setMap = function(map) {}; + +/** + * The display options for the Camera control. + * @record + */ +google.maps.CameraControlOptions = function() {}; + +/** + * Position id. Used to specify the position of the control on the map. + * @default {@link google.maps.ControlPosition.INLINE_START_BLOCK_END} + * @type {!google.maps.ControlPosition|null|undefined} + */ +google.maps.CameraControlOptions.prototype.position; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Used for setting the map's camera options. + * @record + */ +google.maps.CameraOptions = function() {}; + +/** + * @type {!google.maps.LatLngLiteral|!google.maps.LatLng|undefined} + */ +google.maps.CameraOptions.prototype.center; + +/** + * @type {number|undefined} + */ +google.maps.CameraOptions.prototype.heading; + +/** + * @type {number|undefined} + */ +google.maps.CameraOptions.prototype.tilt; + +/** + * @type {number|undefined} + */ +google.maps.CameraOptions.prototype.zoom; + +/** + * Used for retrieving camera parameters, such as that of the GL camera used for + * the {@link google.maps.WebGLOverlayView}. + * @extends {google.maps.CameraOptions} + * @record + */ +google.maps.CameraParams = function() {}; + +/** + * @type {!google.maps.LatLng} + */ +google.maps.CameraParams.prototype.center; + +/** + * @type {number} + */ +google.maps.CameraParams.prototype.heading; + +/** + * @type {number} + */ +google.maps.CameraParams.prototype.tilt; + +/** + * @type {number} + */ +google.maps.CameraParams.prototype.zoom; + +/** + * A circle on the Earth's surface; also known as a "spherical + * cap". + * + * Access by calling `const {Circle} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {(!google.maps.Circle|!google.maps.CircleLiteral|!google.maps.CircleOptions|null)=} + * circleOrCircleOptions + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.Circle = function(circleOrCircleOptions) {}; + +/** + * Gets the LatLngBounds of this Circle. + * @return {!google.maps.LatLngBounds|null} + */ +google.maps.Circle.prototype.getBounds = function() {}; + +/** + * Returns the center of this circle. + * @return {!google.maps.LatLng|null} + */ +google.maps.Circle.prototype.getCenter = function() {}; + +/** + * Returns whether this circle can be dragged by the user. + * @return {boolean} + */ +google.maps.Circle.prototype.getDraggable = function() {}; + +/** + * Returns whether this circle can be edited by the user. + * @return {boolean} + */ +google.maps.Circle.prototype.getEditable = function() {}; + +/** + * Returns the map on which this circle is displayed. + * @return {!google.maps.Map|null} + */ +google.maps.Circle.prototype.getMap = function() {}; + +/** + * Returns the radius of this circle (in meters). + * @return {number} + */ +google.maps.Circle.prototype.getRadius = function() {}; + +/** + * Returns whether this circle is visible on the map. + * @return {boolean} + */ +google.maps.Circle.prototype.getVisible = function() {}; + +/** + * Sets the center of this circle. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral|null} center + * @return {undefined} + */ +google.maps.Circle.prototype.setCenter = function(center) {}; + +/** + * If set to true, the user can drag this circle over the map. + * @param {boolean} draggable + * @return {undefined} + */ +google.maps.Circle.prototype.setDraggable = function(draggable) {}; + +/** + * If set to true, the user can edit this circle by dragging the + * control points shown at the center and around the circumference of the + * circle. + * @param {boolean} editable + * @return {undefined} + */ +google.maps.Circle.prototype.setEditable = function(editable) {}; + +/** + * Renders the circle on the specified map. If map is set to null, + * the circle will be removed. + * @param {!google.maps.Map|null} map + * @return {undefined} + */ +google.maps.Circle.prototype.setMap = function(map) {}; + +/** + * @param {!google.maps.CircleOptions|null} options + * @return {undefined} + */ +google.maps.Circle.prototype.setOptions = function(options) {}; + +/** + * Sets the radius of this circle (in meters). + * @param {number} radius + * @return {undefined} + */ +google.maps.Circle.prototype.setRadius = function(radius) {}; + +/** + * Hides this circle if set to false. + * @param {boolean} visible + * @return {undefined} + */ +google.maps.Circle.prototype.setVisible = function(visible) {}; + +/** + * Object literal which represents a circle. + * @extends {google.maps.CircleOptions} + * @record + */ +google.maps.CircleLiteral = function() {}; + +/** + * The center of the Circle. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral} + */ +google.maps.CircleLiteral.prototype.center; + +/** + * The radius in meters on the Earth's surface. + * @type {number} + */ +google.maps.CircleLiteral.prototype.radius; + +/** + * CircleOptions object used to define the properties that can be set on a + * Circle. + * @record + */ +google.maps.CircleOptions = function() {}; + +/** + * The center of the Circle. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} + */ +google.maps.CircleOptions.prototype.center; + +/** + * Indicates whether this Circle handles mouse events. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.CircleOptions.prototype.clickable; + +/** + * If set to true, the user can drag this circle over the map. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.CircleOptions.prototype.draggable; + +/** + * If set to true, the user can edit this circle by dragging the + * control points shown at the center and around the circumference of the + * circle. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.CircleOptions.prototype.editable; + +/** + * The fill color. All CSS3 colors are supported except for extended named + * colors. + * @type {string|null|undefined} + */ +google.maps.CircleOptions.prototype.fillColor; + +/** + * The fill opacity between 0.0 and 1.0. + * @type {number|null|undefined} + */ +google.maps.CircleOptions.prototype.fillOpacity; + +/** + * Map on which to display the Circle. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.CircleOptions.prototype.map; + +/** + * The radius in meters on the Earth's surface. + * @type {number|null|undefined} + */ +google.maps.CircleOptions.prototype.radius; + +/** + * The stroke color. All CSS3 colors are supported except for extended named + * colors. + * @type {string|null|undefined} + */ +google.maps.CircleOptions.prototype.strokeColor; + +/** + * The stroke opacity between 0.0 and 1.0. + * @type {number|null|undefined} + */ +google.maps.CircleOptions.prototype.strokeOpacity; + +/** + * The stroke position. + * @default {@link google.maps.StrokePosition.CENTER} + * @type {!google.maps.StrokePosition|null|undefined} + */ +google.maps.CircleOptions.prototype.strokePosition; + +/** + * The stroke width in pixels. + * @type {number|null|undefined} + */ +google.maps.CircleOptions.prototype.strokeWeight; + +/** + * Whether this circle is visible on the map. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.CircleOptions.prototype.visible; + +/** + * The zIndex compared to other polys. + * @type {number|null|undefined} + */ +google.maps.CircleOptions.prototype.zIndex; + +/** + * + * Access by calling `const {CollisionBehavior} = await + * google.maps.importLibrary("marker")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.CollisionBehavior = { + /** + * Display the marker only if it does not overlap with other markers. If two + * markers of this type would overlap, the one with the higher zIndex is + * shown. If they have the same zIndex, the one with the lower vertical screen + * position is shown. + */ + OPTIONAL_AND_HIDES_LOWER_PRIORITY: 'OPTIONAL_AND_HIDES_LOWER_PRIORITY', + /** + * Always display the marker regardless of collision. This is the default + * behavior. + */ + REQUIRED: 'REQUIRED', + /** + * Always display the marker regardless of collision, and hide any + * OPTIONAL_AND_HIDES_LOWER_PRIORITY markers or labels that would overlap with + * the marker. + */ + REQUIRED_AND_HIDES_OPTIONAL: 'REQUIRED_AND_HIDES_OPTIONAL', +}; + +/** + * Identifiers for map color schemes. Specify these by value, or by using the + * constant's name. For example, 'FOLLOW_SYSTEM' or + * google.maps.ColorScheme.FOLLOW_SYSTEM. + * + * Access by calling `const {ColorScheme} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.ColorScheme = { + /** + * The dark color scheme for a map. + */ + DARK: 'DARK', + /** + * The color scheme is selected based on system preferences. + */ + FOLLOW_SYSTEM: 'FOLLOW_SYSTEM', + /** + * The light color scheme for a map. Default value for legacy Maps JS. + */ + LIGHT: 'LIGHT', +}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * An enum representing the spatial relationship between the area and the target + * location. + * + * Access by calling `const {Containment} = await + * google.maps.importLibrary("geocoding")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.Containment = { + /** + * The target location is outside the area region, but close by. + */ + NEAR: 'NEAR', + /** + * The target location is within the area region, close to the edge. + */ + OUTSKIRTS: 'OUTSKIRTS', + /** + * The target location is within the area region, close to the center. + */ + WITHIN: 'WITHIN', +}; + +/** + * Identifiers used to specify the placement of controls on the map. Controls + * are positioned relative to other controls in the same layout position. + * Controls that are added first are positioned closer to the edge of the map. + * Usage of "logical values" (see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values) + * is recommended in order to be able to automatically support both + * left-to-right (LTR) and right-to-left (RTL) layout contexts.

Logical + * values in LTR:
+----------------+
+ * 
| BSIS BSIC BSIE | + *
| ISBS      IEBS | + *
|                | + *
| ISBC      IEBC | + *
|                | + *
| ISBE      IEBE | + *
| BEIS BEIC BEIE |
+----------------+

+ * Logical values in RTL:
+----------------+
+ * 
| BSIE BSIC BSIS | + *
| IEBS      ISBS | + *
|                | + *
| IEBC      ISBC | + *
|                | + *
| IEBE      ISBE | + *
| BEIE BEIC BEIS |
+----------------+

Legacy + * values:
+----------------+
+ * 
| TL    TC    TR | + *
| LT          RT | + *
|                | + *
| LC          RC | + *
|                | + *
| LB          RB | + *
| BL    BC    BR | + *
+----------------+

Elements in the top or bottom row flow + * towards the middle of the row. Elements in the left or right column flow + * towards the middle of the column. + * + * Access by calling `const {ControlPosition} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {number} + */ +google.maps.ControlPosition = { + /** + * Equivalent to BOTTOM_CENTER in both LTR and RTL. + */ + BLOCK_END_INLINE_CENTER: 0, + /** + * Equivalent to BOTTOM_RIGHT in LTR, or BOTTOM_LEFT in RTL. + */ + BLOCK_END_INLINE_END: 1, + /** + * Equivalent to BOTTOM_LEFT in LTR, or BOTTOM_RIGHT in RTL. + */ + BLOCK_END_INLINE_START: 2, + /** + * Equivalent to TOP_CENTER in both LTR and RTL. + */ + BLOCK_START_INLINE_CENTER: 3, + /** + * Equivalent to TOP_RIGHT in LTR, or TOP_LEFT in RTL. + */ + BLOCK_START_INLINE_END: 4, + /** + * Equivalent to TOP_LEFT in LTR, or TOP_RIGHT in RTL. + */ + BLOCK_START_INLINE_START: 5, + /** + * Elements are positioned in the center of the bottom row. Consider using + * BLOCK_END_INLINE_CENTER instead. + */ + BOTTOM_CENTER: 6, + /** + * Elements are positioned in the bottom left and flow towards the middle. + * Elements are positioned to the right of the Google logo. Consider using + * BLOCK_END_INLINE_START instead. + */ + BOTTOM_LEFT: 7, + /** + * Elements are positioned in the bottom right and flow towards the middle. + * Elements are positioned to the left of the copyrights. Consider using + * BLOCK_END_INLINE_END instead. + */ + BOTTOM_RIGHT: 8, + /** + * Equivalent to RIGHT_CENTER in LTR, or LEFT_CENTER in RTL. + */ + INLINE_END_BLOCK_CENTER: 9, + /** + * Equivalent to RIGHT_BOTTOM in LTR, or LEFT_BOTTOM in RTL. + */ + INLINE_END_BLOCK_END: 10, + /** + * Equivalent to RIGHT_TOP in LTR, or LEFT_TOP in RTL. + */ + INLINE_END_BLOCK_START: 11, + /** + * Equivalent to LEFT_CENTER in LTR, or RIGHT_CENTER in RTL. + */ + INLINE_START_BLOCK_CENTER: 12, + /** + * Equivalent to LEFT_BOTTOM in LTR, or RIGHT_BOTTOM in RTL. + */ + INLINE_START_BLOCK_END: 13, + /** + * Equivalent to LEFT_TOP in LTR, or RIGHT_TOP in RTL. + */ + INLINE_START_BLOCK_START: 14, + /** + * Elements are positioned on the left, above bottom-left elements, and flow + * upwards. Consider using INLINE_START_BLOCK_END instead. + */ + LEFT_BOTTOM: 15, + /** + * Elements are positioned in the center of the left side. Consider using + * INLINE_START_BLOCK_CENTER instead. + */ + LEFT_CENTER: 16, + /** + * Elements are positioned on the left, below top-left elements, and flow + * downwards. Consider using INLINE_START_BLOCK_START instead. + */ + LEFT_TOP: 17, + /** + * Elements are positioned on the right, above bottom-right elements, and flow + * upwards. Consider using INLINE_END_BLOCK_END instead. + */ + RIGHT_BOTTOM: 18, + /** + * Elements are positioned in the center of the right side. Consider using + * INLINE_END_BLOCK_CENTER instead. + */ + RIGHT_CENTER: 19, + /** + * Elements are positioned on the right, below top-right elements, and flow + * downwards. Consider using INLINE_END_BLOCK_START instead. + */ + RIGHT_TOP: 20, + /** + * Elements are positioned in the center of the top row. Consider using + * BLOCK_START_INLINE_CENTER instead. + */ + TOP_CENTER: 21, + /** + * Elements are positioned in the top left and flow towards the middle. + * Consider using BLOCK_START_INLINE_START instead. + */ + TOP_LEFT: 22, + /** + * Elements are positioned in the top right and flow towards the middle. + * Consider using BLOCK_START_INLINE_END instead. + */ + TOP_RIGHT: 23, +}; + +/** + * This interface provides convenience methods for generating matrices to use + * for rendering WebGL scenes on top of the Google base map.

Note: A + * reference to this object should not be held outside of the scope of + * the encapsulating {@link google.maps.WebGLOverlayView.onDraw} call. + * @record + */ +google.maps.CoordinateTransformer = function() {}; + +/** + * @param {!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral} + * latLngAltitude Latitude, longitude, and altitude. + * @param {!Float32Array=} rotations An array that contains an Euler rotation + * angle in degrees, in the XYZ convention. + * @param {!Float32Array=} scale Array that contains an XYZ scalar array to + * apply to the cardinal axis. + * @return {!Float64Array} MVP matrix to use with WebGL. + */ +google.maps.CoordinateTransformer.prototype.fromLatLngAltitude = function( + latLngAltitude, rotations, scale) {}; + +/** + * @return {!google.maps.CameraParams} camera parameters + */ +google.maps.CoordinateTransformer.prototype.getCameraParams = function() {}; + +/** + * @record + */ +google.maps.CoreLibrary = function() {}; + +/** + * @type {typeof google.maps.ColorScheme} + */ +google.maps.CoreLibrary.prototype.ColorScheme; + +/** + * @type {typeof google.maps.ControlPosition} + */ +google.maps.CoreLibrary.prototype.ControlPosition; + +/** + * @type {typeof google.maps.event} + */ +google.maps.CoreLibrary.prototype.event; + +/** + * @type {typeof google.maps.LatLng} + */ +google.maps.CoreLibrary.prototype.LatLng; + +/** + * @type {typeof google.maps.LatLngAltitude} + */ +google.maps.CoreLibrary.prototype.LatLngAltitude; + +/** + * @type {typeof google.maps.LatLngBounds} + */ +google.maps.CoreLibrary.prototype.LatLngBounds; + +/** + * @type {typeof google.maps.MapsNetworkError} + */ +google.maps.CoreLibrary.prototype.MapsNetworkError; + +/** + * @type {typeof google.maps.MapsNetworkErrorEndpoint} + */ +google.maps.CoreLibrary.prototype.MapsNetworkErrorEndpoint; + +/** + * @type {typeof google.maps.MapsRequestError} + */ +google.maps.CoreLibrary.prototype.MapsRequestError; + +/** + * @type {typeof google.maps.MapsServerError} + */ +google.maps.CoreLibrary.prototype.MapsServerError; + +/** + * @type {typeof google.maps.MVCArray} + */ +google.maps.CoreLibrary.prototype.MVCArray; + +/** + * @type {typeof google.maps.MVCObject} + */ +google.maps.CoreLibrary.prototype.MVCObject; + +/** + * @type {typeof google.maps.Orientation3D} + */ +google.maps.CoreLibrary.prototype.Orientation3D; + +/** + * @type {typeof google.maps.Point} + */ +google.maps.CoreLibrary.prototype.Point; + +/** + * @type {typeof google.maps.Settings} + */ +google.maps.CoreLibrary.prototype.Settings; + +/** + * @type {typeof google.maps.Size} + */ +google.maps.CoreLibrary.prototype.Size; + +/** + * @type {typeof google.maps.SymbolPath} + */ +google.maps.CoreLibrary.prototype.SymbolPath; + +/** + * @type {typeof google.maps.UnitSystem} + */ +google.maps.CoreLibrary.prototype.UnitSystem; + +/** + * @type {typeof google.maps.Vector3D} + */ +google.maps.CoreLibrary.prototype.Vector3D; + +/** + * A layer for displaying geospatial data. Points, line-strings and polygons can + * be displayed.

Every Map has a Data object by + * default, so most of the time there is no need to construct one. For example: + *

 var myMap = new google.maps.Map(...);
+ * myMap.data.addGeoJson(...);
myMap.data.setStyle(...);
The + * Data object is a collection of Features. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {google.maps.Data.DataOptions=} options + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.Data = function(options) {}; + +/** + * Adds a feature to the collection, and returns the added feature.

If the + * feature has an ID, it will replace any existing feature in the collection + * with the same ID. If no feature is given, a new feature will be created with + * null geometry and no properties. If FeatureOptions are given, a + * new feature will be created with the specified properties.

Note that the + * IDs 1234 and '1234' are equivalent. Adding a + * feature with ID 1234 will replace a feature with ID + * '1234', and vice versa. + * @param {(google.maps.Data.Feature|google.maps.Data.FeatureOptions)=} feature + * @return {!google.maps.Data.Feature} + */ +google.maps.Data.prototype.add = function(feature) {}; + +/** + * Adds GeoJSON features to the collection. Give this method a parsed JSON. The + * imported features are returned. Throws an exception if the GeoJSON could not + * be imported. + * @param {!Object} geoJson + * @param {google.maps.Data.GeoJsonOptions=} options + * @return {!Array} + */ +google.maps.Data.prototype.addGeoJson = function(geoJson, options) {}; + +/** + * Checks whether the given feature is in the collection. + * @param {!google.maps.Data.Feature} feature + * @return {boolean} + */ +google.maps.Data.prototype.contains = function(feature) {}; + +/** + * Repeatedly invokes the given function, passing a feature in the collection to + * the function on each invocation. The order of iteration through the features + * is undefined. + * @param {function(!google.maps.Data.Feature): void} callback + * @return {undefined} + */ +google.maps.Data.prototype.forEach = function(callback) {}; + +/** + * Returns the position of the drawing controls on the map. + * @return {google.maps.ControlPosition} + */ +google.maps.Data.prototype.getControlPosition = function() {}; + +/** + * Returns which drawing modes are available for the user to select, in the + * order they are displayed. This does not include the null drawing + * mode, which is added by default. Possible drawing modes are + * "Point", "LineString" or "Polygon". + * @return {Array} + */ +google.maps.Data.prototype.getControls = function() {}; + +/** + * Returns the current drawing mode of the given Data layer. A drawing mode of + * null means that the user can interact with the map as normal, + * and clicks do not draw anything. Possible drawing modes are + * null, "Point", "LineString" or + * "Polygon". + * @return {?string} + */ +google.maps.Data.prototype.getDrawingMode = function() {}; + +/** + * Returns the feature with the given ID, if it exists in the collection. + * Otherwise returns undefined.

Note that the IDs + * 1234 and '1234' are equivalent. Either can be used + * to look up the same feature. + * @param {number|string} id + * @return {!google.maps.Data.Feature|undefined} + */ +google.maps.Data.prototype.getFeatureById = function(id) {}; + +/** + * Returns the map on which the features are displayed. + * @return {google.maps.Map} + */ +google.maps.Data.prototype.getMap = function() {}; + +/** + * Gets the style for all features in the collection. + * @return {google.maps.Data.StylingFunction|google.maps.Data.StyleOptions} + */ +google.maps.Data.prototype.getStyle = function() {}; + +/** + * Loads GeoJSON from a URL, and adds the features to the collection.

NOTE: + * The GeoJSON is fetched using XHR, and may not work cross-domain. If you have + * issues, we recommend you fetch the GeoJSON using your choice of AJAX library, + * and then call addGeoJson(). + * @param {string} url + * @param {google.maps.Data.GeoJsonOptions=} options + * @param {(function(!Array): void)=} callback + * @return {undefined} + */ +google.maps.Data.prototype.loadGeoJson = function(url, options, callback) {}; + +/** + * Changes the style of a feature. These changes are applied on top of the style + * specified by setStyle(). Style properties set to + * null revert to the value specified via setStyle(). + * @param {!google.maps.Data.Feature} feature + * @param {!google.maps.Data.StyleOptions} style + * @return {undefined} + */ +google.maps.Data.prototype.overrideStyle = function(feature, style) {}; + +/** + * Removes a feature from the collection. + * @param {!google.maps.Data.Feature} feature + * @return {undefined} + */ +google.maps.Data.prototype.remove = function(feature) {}; + +/** + * Removes the effect of previous overrideStyle() calls. The style + * of the given feature reverts to the style specified by + * setStyle().

If no feature is given, all features have their + * style reverted.

+ * @param {google.maps.Data.Feature=} feature + * @return {undefined} + */ +google.maps.Data.prototype.revertStyle = function(feature) {}; + +/** + * Sets the position of the drawing controls on the map. + * @param {google.maps.ControlPosition} controlPosition + * @return {undefined} + */ +google.maps.Data.prototype.setControlPosition = function(controlPosition) {}; + +/** + * Sets which drawing modes are available for the user to select, in the order + * they are displayed. This should not include the null drawing + * mode, which is added by default. If null, drawing controls are + * disabled and not displayed. Possible drawing modes are "Point", + * "LineString" or "Polygon". + * @param {Array} controls + * @return {undefined} + */ +google.maps.Data.prototype.setControls = function(controls) {}; + +/** + * Sets the current drawing mode of the given Data layer. A drawing mode of + * null means that the user can interact with the map as normal, + * and clicks do not draw anything. Possible drawing modes are + * null, "Point", "LineString" or + * "Polygon". + * @param {?string} drawingMode + * @return {undefined} + */ +google.maps.Data.prototype.setDrawingMode = function(drawingMode) {}; + +/** + * Renders the features on the specified map. If map is set to + * null, the features will be removed from the map. + * @param {google.maps.Map} map + * @return {undefined} + */ +google.maps.Data.prototype.setMap = function(map) {}; + +/** + * Sets the style for all features in the collection. Styles specified on a + * per-feature basis via overrideStyle() continue to apply.

Pass + * either an object with the desired style options, or a function that computes + * the style for each feature. The function will be called every time a + * feature's properties are updated. + * @param {google.maps.Data.StylingFunction|google.maps.Data.StyleOptions} style + * @return {undefined} + */ +google.maps.Data.prototype.setStyle = function(style) {}; + +/** + * Exports the features in the collection to a GeoJSON object. + * @param {function(!Object): void} callback + * @return {undefined} + */ +google.maps.Data.prototype.toGeoJson = function(callback) {}; + +/** + * The properties of a addfeature event. + * @record + */ +google.maps.Data.AddFeatureEvent = function() {}; + +/** + * The feature that was added to the FeatureCollection. + * @type {!google.maps.Data.Feature} + */ +google.maps.Data.AddFeatureEvent.prototype.feature; + +/** + * DataOptions object used to define the properties that a developer can set on + * a Data object. + * @record + */ +google.maps.Data.DataOptions = function() {}; + +/** + * The position of the drawing controls on the map. + * @default {@link google.maps.ControlPosition.TOP_LEFT} + * @type {!google.maps.ControlPosition|undefined} + */ +google.maps.Data.DataOptions.prototype.controlPosition; + +/** + * Describes which drawing modes are available for the user to select, in the + * order they are displayed. This should not include the null + * drawing mode, which is added by default. If null, drawing + * controls are disabled and not displayed. Possible drawing modes are + * "Point", "LineString" or "Polygon". + * @default null + * @type {!Array|null|undefined} + */ +google.maps.Data.DataOptions.prototype.controls; + +/** + * The current drawing mode of the given Data layer. A drawing mode of + * null means that the user can interact with the map as normal, + * and clicks do not draw anything. Possible drawing modes are + * null, "Point", "LineString" or + * "Polygon". + * @default null + * @type {string|null|undefined} + */ +google.maps.Data.DataOptions.prototype.drawingMode; + +/** + * When drawing is enabled and a user draws a Geometry (a Point, Line String or + * Polygon), this function is called with that Geometry and should return a + * Feature that is to be added to the Data layer. If a featureFactory is not + * supplied, a Feature with no id and no properties will be created from that + * Geometry instead. Defaults to null. + * @type {(function(!google.maps.Data.Geometry): + * !google.maps.Data.Feature)|null|undefined} + */ +google.maps.Data.DataOptions.prototype.featureFactory; + +/** + * Map on which to display the features in the collection. + * @type {!google.maps.Map} + */ +google.maps.Data.DataOptions.prototype.map; + +/** + * Style for all features in the collection. For more details, see the setStyle() method above. + * @type {!google.maps.Data.StylingFunction|!google.maps.Data.StyleOptions|undefined} + */ +google.maps.Data.DataOptions.prototype.style; + +/** + * A feature has a geometry, an id, and a set of properties. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {google.maps.Data.FeatureOptions=} options + * @constructor + */ +google.maps.Data.Feature = function(options) {}; + +/** + * Repeatedly invokes the given function, passing a property value and name on + * each invocation. The order of iteration through the properties is undefined. + * @param {function(*, string): void} callback + * @return {undefined} + */ +google.maps.Data.Feature.prototype.forEachProperty = function(callback) {}; + +/** + * Returns the feature's geometry. + * @return {google.maps.Data.Geometry} + */ +google.maps.Data.Feature.prototype.getGeometry = function() {}; + +/** + * Returns the feature ID. + * @return {number|string|undefined} + */ +google.maps.Data.Feature.prototype.getId = function() {}; + +/** + * Returns the value of the requested property, or undefined if the + * property does not exist. + * @param {string} name + * @return {*} + */ +google.maps.Data.Feature.prototype.getProperty = function(name) {}; + +/** + * Removes the property with the given name. + * @param {string} name + * @return {undefined} + */ +google.maps.Data.Feature.prototype.removeProperty = function(name) {}; + +/** + * Sets the feature's geometry. + * @param {google.maps.Data.Geometry|google.maps.LatLng|google.maps.LatLngLiteral} + * newGeometry + * @return {undefined} + */ +google.maps.Data.Feature.prototype.setGeometry = function(newGeometry) {}; + +/** + * Sets the value of the specified property. If newValue is + * undefined this is equivalent to calling + * removeProperty. + * @param {string} name + * @param {*} newValue + * @return {undefined} + */ +google.maps.Data.Feature.prototype.setProperty = function(name, newValue) {}; + +/** + * Exports the feature to a GeoJSON object. + * @param {function(!Object): void} callback + * @return {undefined} + */ +google.maps.Data.Feature.prototype.toGeoJson = function(callback) {}; + +/** + * Optional parameters for creating Data.Feature objects. + * @record + */ +google.maps.Data.FeatureOptions = function() {}; + +/** + * The feature geometry. If none is specified when a feature is constructed, the + * feature's geometry will be null. If a LatLng + * object or LatLngLiteral is given, this will be converted to a + * Data.Point geometry. + * @type {!google.maps.Data.Geometry|!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} + */ +google.maps.Data.FeatureOptions.prototype.geometry; + +/** + * Feature ID is optional. If provided, it can be used to look up the feature in + * a Data object using the getFeatureById() method. + * Note that a feature's ID cannot be subsequently changed. + * @type {number|string|undefined} + */ +google.maps.Data.FeatureOptions.prototype.id; + +/** + * The feature properties. This is an arbitrary mapping of property names to + * values. + * @type {!Object|null|undefined} + */ +google.maps.Data.FeatureOptions.prototype.properties; + +/** + * Optional parameters for importing GeoJSON. + * @record + */ +google.maps.Data.GeoJsonOptions = function() {}; + +/** + * The name of the Feature property to use as the feature ID. If not specified, + * the GeoJSON Feature id will be used. + * @type {string|null|undefined} + */ +google.maps.Data.GeoJsonOptions.prototype.idPropertyName; + +/** + * A superclass for the various geometry objects. + * @record + */ +google.maps.Data.Geometry = function() {}; + +/** + * Repeatedly invokes the given function, passing a point from the geometry to + * the function on each invocation. + * @param {function(!google.maps.LatLng): void} callback + * @return {undefined} + */ +google.maps.Data.Geometry.prototype.forEachLatLng = function(callback) {}; + +/** + * Returns the type of the geometry object. Possibilities are + * "Point", "MultiPoint", "LineString", + * "MultiLineString", "LinearRing", + * "Polygon", "MultiPolygon", or + * "GeometryCollection". + * @return {string} + */ +google.maps.Data.Geometry.prototype.getType = function() {}; + +/** + * A GeometryCollection contains a number of geometry objects. Any + * LatLng or LatLngLiteral objects are automatically + * converted to Data.Point geometry objects. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!Array} + * elements + * @implements {google.maps.Data.Geometry} + * @constructor + */ +google.maps.Data.GeometryCollection = function(elements) {}; + +/** + * @param {function(!google.maps.LatLng): void} callback + * @return {undefined} + * @override + */ +google.maps.Data.GeometryCollection.prototype.forEachLatLng = function( + callback) {}; + +/** + * Returns an array of the contained geometry objects. A new array is returned + * each time getArray() is called. + * @return {!Array} + */ +google.maps.Data.GeometryCollection.prototype.getArray = function() {}; + +/** + * Returns the n-th contained geometry object. + * @param {number} n + * @return {!google.maps.Data.Geometry} + */ +google.maps.Data.GeometryCollection.prototype.getAt = function(n) {}; + +/** + * Returns the number of contained geometry objects. + * @return {number} + */ +google.maps.Data.GeometryCollection.prototype.getLength = function() {}; + +/** + * Returns the string "GeometryCollection". + * @return {string} + * @override + */ +google.maps.Data.GeometryCollection.prototype.getType = function() {}; + +/** + * A LineString geometry contains a number of LatLngs. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!Array} elements + * @implements {google.maps.Data.Geometry} + * @constructor + */ +google.maps.Data.LineString = function(elements) {}; + +/** + * @param {function(!google.maps.LatLng): void} callback + * @return {undefined} + * @override + */ +google.maps.Data.LineString.prototype.forEachLatLng = function(callback) {}; + +/** + * Returns an array of the contained LatLngs. A new array is + * returned each time getArray() is called. + * @return {!Array} + */ +google.maps.Data.LineString.prototype.getArray = function() {}; + +/** + * Returns the n-th contained LatLng. + * @param {number} n + * @return {!google.maps.LatLng} + */ +google.maps.Data.LineString.prototype.getAt = function(n) {}; + +/** + * Returns the number of contained LatLngs. + * @return {number} + */ +google.maps.Data.LineString.prototype.getLength = function() {}; + +/** + * Returns the string "LineString". + * @return {string} + * @override + */ +google.maps.Data.LineString.prototype.getType = function() {}; + +/** + * A LinearRing geometry contains a number of LatLngs, representing + * a closed LineString. There is no need to make the first LatLng + * equal to the last LatLng. The LinearRing is closed implicitly. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!Array} elements + * @implements {google.maps.Data.Geometry} + * @constructor + */ +google.maps.Data.LinearRing = function(elements) {}; + +/** + * @param {function(!google.maps.LatLng): void} callback + * @return {undefined} + * @override + */ +google.maps.Data.LinearRing.prototype.forEachLatLng = function(callback) {}; + +/** + * Returns an array of the contained LatLngs. A new array is + * returned each time getArray() is called. + * @return {!Array} + */ +google.maps.Data.LinearRing.prototype.getArray = function() {}; + +/** + * Returns the n-th contained LatLng. + * @param {number} n + * @return {!google.maps.LatLng} + */ +google.maps.Data.LinearRing.prototype.getAt = function(n) {}; + +/** + * Returns the number of contained LatLngs. + * @return {number} + */ +google.maps.Data.LinearRing.prototype.getLength = function() {}; + +/** + * Returns the string "LinearRing". + * @return {string} + * @override + */ +google.maps.Data.LinearRing.prototype.getType = function() {}; + +/** + * This object is passed to mouse event handlers on a Data object. + * @extends {google.maps.MapMouseEvent} + * @record + */ +google.maps.Data.MouseEvent = function() {}; + +/** + * The feature which generated the mouse event. + * @type {!google.maps.Data.Feature} + */ +google.maps.Data.MouseEvent.prototype.feature; + +/** + * A MultiLineString geometry contains a number of LineStrings. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!Array>} + * elements + * @implements {google.maps.Data.Geometry} + * @constructor + */ +google.maps.Data.MultiLineString = function(elements) {}; + +/** + * @param {function(!google.maps.LatLng): void} callback + * @return {undefined} + * @override + */ +google.maps.Data.MultiLineString.prototype.forEachLatLng = function( + callback) {}; + +/** + * Returns an array of the contained Data.LineStrings. A new array + * is returned each time getArray() is called. + * @return {!Array} + */ +google.maps.Data.MultiLineString.prototype.getArray = function() {}; + +/** + * Returns the n-th contained Data.LineString. + * @param {number} n + * @return {!google.maps.Data.LineString} + */ +google.maps.Data.MultiLineString.prototype.getAt = function(n) {}; + +/** + * Returns the number of contained Data.LineStrings. + * @return {number} + */ +google.maps.Data.MultiLineString.prototype.getLength = function() {}; + +/** + * Returns the string "MultiLineString". + * @return {string} + * @override + */ +google.maps.Data.MultiLineString.prototype.getType = function() {}; + +/** + * A MultiPoint geometry contains a number of LatLngs. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!Array} elements + * @implements {google.maps.Data.Geometry} + * @constructor + */ +google.maps.Data.MultiPoint = function(elements) {}; + +/** + * @param {function(!google.maps.LatLng): void} callback + * @return {undefined} + * @override + */ +google.maps.Data.MultiPoint.prototype.forEachLatLng = function(callback) {}; + +/** + * Returns an array of the contained LatLngs. A new array is + * returned each time getArray() is called. + * @return {!Array} + */ +google.maps.Data.MultiPoint.prototype.getArray = function() {}; + +/** + * Returns the n-th contained LatLng. + * @param {number} n + * @return {!google.maps.LatLng} + */ +google.maps.Data.MultiPoint.prototype.getAt = function(n) {}; + +/** + * Returns the number of contained LatLngs. + * @return {number} + */ +google.maps.Data.MultiPoint.prototype.getLength = function() {}; + +/** + * Returns the string "MultiPoint". + * @return {string} + * @override + */ +google.maps.Data.MultiPoint.prototype.getType = function() {}; + +/** + * A MultiPolygon geometry contains a number of Data.Polygons. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!Array>>} + * elements + * @implements {google.maps.Data.Geometry} + * @constructor + */ +google.maps.Data.MultiPolygon = function(elements) {}; + +/** + * @param {function(!google.maps.LatLng): void} callback + * @return {undefined} + * @override + */ +google.maps.Data.MultiPolygon.prototype.forEachLatLng = function(callback) {}; + +/** + * Returns an array of the contained Data.Polygons. A new array is + * returned each time getArray() is called. + * @return {!Array} + */ +google.maps.Data.MultiPolygon.prototype.getArray = function() {}; + +/** + * Returns the n-th contained Data.Polygon. + * @param {number} n + * @return {!google.maps.Data.Polygon} + */ +google.maps.Data.MultiPolygon.prototype.getAt = function(n) {}; + +/** + * Returns the number of contained Data.Polygons. + * @return {number} + */ +google.maps.Data.MultiPolygon.prototype.getLength = function() {}; + +/** + * Returns the string "MultiPolygon". + * @return {string} + * @override + */ +google.maps.Data.MultiPolygon.prototype.getType = function() {}; + +/** + * A Point geometry contains a single LatLng. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} latLng + * @implements {google.maps.Data.Geometry} + * @constructor + */ +google.maps.Data.Point = function(latLng) {}; + +/** + * @param {function(!google.maps.LatLng): void} callback + * @return {undefined} + * @override + */ +google.maps.Data.Point.prototype.forEachLatLng = function(callback) {}; + +/** + * Returns the contained LatLng. + * @return {!google.maps.LatLng} + */ +google.maps.Data.Point.prototype.get = function() {}; + +/** + * Returns the string "Point". + * @return {string} + * @override + */ +google.maps.Data.Point.prototype.getType = function() {}; + +/** + * A Polygon geometry contains a number of Data.LinearRings. The + * first linear-ring must be the polygon exterior boundary and subsequent + * linear-rings must be interior boundaries, also known as holes. See the sample + * polygon with a hole. + * + * Access by calling `const {Data} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!Array>} + * elements + * @implements {google.maps.Data.Geometry} + * @constructor + */ +google.maps.Data.Polygon = function(elements) {}; + +/** + * @param {function(!google.maps.LatLng): void} callback + * @return {undefined} + * @override + */ +google.maps.Data.Polygon.prototype.forEachLatLng = function(callback) {}; + +/** + * Returns an array of the contained Data.LinearRings. A new array + * is returned each time getArray() is called. + * @return {!Array} + */ +google.maps.Data.Polygon.prototype.getArray = function() {}; + +/** + * Returns the n-th contained Data.LinearRing. + * @param {number} n + * @return {!google.maps.Data.LinearRing} + */ +google.maps.Data.Polygon.prototype.getAt = function(n) {}; + +/** + * Returns the number of contained Data.LinearRings. + * @return {number} + */ +google.maps.Data.Polygon.prototype.getLength = function() {}; + +/** + * Returns the string "Polygon". + * @return {string} + * @override + */ +google.maps.Data.Polygon.prototype.getType = function() {}; + +/** + * The properties of a removefeature event. + * @record + */ +google.maps.Data.RemoveFeatureEvent = function() {}; + +/** + * The feature that was removed from the FeatureCollection. + * @type {!google.maps.Data.Feature} + */ +google.maps.Data.RemoveFeatureEvent.prototype.feature; + +/** + * The properties of a removeproperty event. + * @record + */ +google.maps.Data.RemovePropertyEvent = function() {}; + +/** + * The feature whose property was removed. + * @type {!google.maps.Data.Feature} + */ +google.maps.Data.RemovePropertyEvent.prototype.feature; + +/** + * The property name. + * @type {string} + */ +google.maps.Data.RemovePropertyEvent.prototype.name; + +/** + * The previous value. + * @type {*} + */ +google.maps.Data.RemovePropertyEvent.prototype.oldValue; + +/** + * The properties of a setgeometry event. + * @record + */ +google.maps.Data.SetGeometryEvent = function() {}; + +/** + * The feature whose geometry was set. + * @type {!google.maps.Data.Feature} + */ +google.maps.Data.SetGeometryEvent.prototype.feature; + +/** + * The new feature geometry. + * @type {!google.maps.Data.Geometry|undefined} + */ +google.maps.Data.SetGeometryEvent.prototype.newGeometry; + +/** + * The previous feature geometry. + * @type {!google.maps.Data.Geometry|undefined} + */ +google.maps.Data.SetGeometryEvent.prototype.oldGeometry; + +/** + * The properties of a setproperty event. + * @record + */ +google.maps.Data.SetPropertyEvent = function() {}; + +/** + * The feature whose property was set. + * @type {!google.maps.Data.Feature} + */ +google.maps.Data.SetPropertyEvent.prototype.feature; + +/** + * The property name. + * @type {string} + */ +google.maps.Data.SetPropertyEvent.prototype.name; + +/** + * The new value. + * @type {*} + */ +google.maps.Data.SetPropertyEvent.prototype.newValue; + +/** + * The previous value. Will be undefined if the property was added. + * @type {*} + */ +google.maps.Data.SetPropertyEvent.prototype.oldValue; + +/** + * These options specify the way a Feature should appear when displayed on a + * map. + * @record + */ +google.maps.Data.StyleOptions = function() {}; + +/** + * The animation to play when marker is added to a map. Only applies to point + * geometries. + * @type {!google.maps.Animation|undefined} + */ +google.maps.Data.StyleOptions.prototype.animation; + +/** + * If true, the marker receives mouse and touch events. + * @default true + * @type {boolean|undefined} + */ +google.maps.Data.StyleOptions.prototype.clickable; + +/** + * Mouse cursor to show on hover. Only applies to point geometries. + * @type {string|undefined} + */ +google.maps.Data.StyleOptions.prototype.cursor; + +/** + * If true, the object can be dragged across the map and the + * underlying feature will have its geometry updated. + * @default false + * @type {boolean|undefined} + */ +google.maps.Data.StyleOptions.prototype.draggable; + +/** + * If true, the object can be edited by dragging control points and + * the underlying feature will have its geometry updated. Only applies to + * LineString and Polygon geometries. + * @default false + * @type {boolean|undefined} + */ +google.maps.Data.StyleOptions.prototype.editable; + +/** + * The fill color. All CSS3 colors are supported except for extended named + * colors. Only applies to polygon geometries. + * @type {string|undefined} + */ +google.maps.Data.StyleOptions.prototype.fillColor; + +/** + * The fill opacity between 0.0 and 1.0. Only applies to polygon geometries. + * @type {number|undefined} + */ +google.maps.Data.StyleOptions.prototype.fillOpacity; + +/** + * Icon for the foreground. If a string is provided, it is treated as though it + * were an Icon with the string as url. Only applies + * to point geometries. + * @type {string|!google.maps.Icon|!google.maps.Symbol|undefined} + */ +google.maps.Data.StyleOptions.prototype.icon; + +/** + * The icons to be rendered along a polyline. Only applies to line geometries. + * @type {!Array|undefined} + */ +google.maps.Data.StyleOptions.prototype.icons; + +/** + * Adds a label to the marker. The label can either be a string, or a + * MarkerLabel object. Only applies to point geometries. + * @type {string|!google.maps.MarkerLabel|undefined} + */ +google.maps.Data.StyleOptions.prototype.label; + +/** + * The marker's opacity between 0.0 and 1.0. Only applies to point + * geometries. + * @type {number|undefined} + */ +google.maps.Data.StyleOptions.prototype.opacity; + +/** + * Defines the image map used for hit detection. Only applies to point + * geometries. + * @type {!google.maps.MarkerShape|undefined} + */ +google.maps.Data.StyleOptions.prototype.shape; + +/** + * The stroke color. All CSS3 colors are supported except for extended named + * colors. Only applies to line and polygon geometries. + * @type {string|undefined} + */ +google.maps.Data.StyleOptions.prototype.strokeColor; + +/** + * The stroke opacity between 0.0 and 1.0. Only applies to line and polygon + * geometries. + * @type {number|undefined} + */ +google.maps.Data.StyleOptions.prototype.strokeOpacity; + +/** + * The stroke width in pixels. Only applies to line and polygon geometries. + * @type {number|undefined} + */ +google.maps.Data.StyleOptions.prototype.strokeWeight; + +/** + * Rollover text. Only applies to point geometries. + * @type {string|undefined} + */ +google.maps.Data.StyleOptions.prototype.title; + +/** + * Whether the feature is visible. + * @default true + * @type {boolean|undefined} + */ +google.maps.Data.StyleOptions.prototype.visible; + +/** + * All features are displayed on the map in order of their zIndex, with higher + * values displaying in front of features with lower values. Markers are always + * displayed in front of line-strings and polygons. + * @type {number|undefined} + */ +google.maps.Data.StyleOptions.prototype.zIndex; + +/** + * @typedef {function(!google.maps.Data.Feature): + * !google.maps.Data.StyleOptions} + */ +google.maps.Data.StylingFunction; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * An interface representing a feature from a Dataset. The + * featureType of a DatasetFeature will always be + * FeatureType.DATASET. + * @extends {google.maps.Feature} + * @record + */ +google.maps.DatasetFeature = function() {}; + +/** + * Key-value mapping of the feature's attributes. + * @type {!Object} + */ +google.maps.DatasetFeature.prototype.datasetAttributes; + +/** + * Dataset id of the dataset that this feature belongs to. + * @type {string} + */ +google.maps.DatasetFeature.prototype.datasetId; + +/** + * A single geocoded waypoint. + * @record + */ +google.maps.DirectionsGeocodedWaypoint = function() {}; + +/** + * Whether the geocoder did not return an exact match for the original waypoint, + * though it was able to match part of the requested address. + * @type {boolean|undefined} + */ +google.maps.DirectionsGeocodedWaypoint.prototype.partial_match; + +/** + * The place ID associated with the waypoint. Place IDs uniquely identify a + * place in the Google Places database and on Google Maps. Learn more about Place + * IDs in the Places API developer guide. + * @type {string|undefined} + */ +google.maps.DirectionsGeocodedWaypoint.prototype.place_id; + +/** + * An array of strings denoting the type of the returned geocoded element. For a + * list of possible strings, refer to the + * Address Component Types section of the Developer's Guide. + * @type {!Array|undefined} + */ +google.maps.DirectionsGeocodedWaypoint.prototype.types; + +/** + * A single leg consisting of a set of steps in a DirectionsResult. Some fields in the leg + * may not be returned for all requests. Note that though this result is + * "JSON-like," it is not strictly JSON, as it directly and indirectly + * includes LatLng objects. + * @record + */ +google.maps.DirectionsLeg = function() {}; + +/** + * An estimated arrival time for this leg. Only applicable for TRANSIT requests. + * @type {!google.maps.Time|undefined} + */ +google.maps.DirectionsLeg.prototype.arrival_time; + +/** + * An estimated departure time for this leg. Only applicable for TRANSIT + * requests. + * @type {!google.maps.Time|undefined} + */ +google.maps.DirectionsLeg.prototype.departure_time; + +/** + * The total distance covered by this leg. This property may be undefined as the + * distance may be unknown. + * @type {!google.maps.Distance|undefined} + */ +google.maps.DirectionsLeg.prototype.distance; + +/** + * The total duration of this leg. This property may be undefined + * as the duration may be unknown. + * @type {!google.maps.Duration|undefined} + */ +google.maps.DirectionsLeg.prototype.duration; + +/** + * The total duration of this leg, taking into account the traffic conditions + * indicated by the trafficModel property. This property may be + * undefined as the duration may be unknown. + * @type {!google.maps.Duration|undefined} + */ +google.maps.DirectionsLeg.prototype.duration_in_traffic; + +/** + * The address of the destination of this leg. This content is meant to be read + * as-is. Do not programmatically parse the formatted address. + * @type {string} + */ +google.maps.DirectionsLeg.prototype.end_address; + +/** + * The DirectionsService calculates directions between locations by + * using the nearest transportation option (usually a road) at the start and end + * locations. end_location indicates the actual geocoded + * destination, which may be different than the end_location of the + * last step if, for example, the road is not near the destination of this leg. + * @type {!google.maps.LatLng} + */ +google.maps.DirectionsLeg.prototype.end_location; + +/** + * The address of the origin of this leg. This content is meant to be read + * as-is. Do not programmatically parse the formatted address. + * @type {string} + */ +google.maps.DirectionsLeg.prototype.start_address; + +/** + * The DirectionsService calculates directions between locations by + * using the nearest transportation option (usually a road) at the start and end + * locations. start_location indicates the actual geocoded origin, + * which may be different than the start_location of the first step + * if, for example, the road is not near the origin of this leg. + * @type {!google.maps.LatLng} + */ +google.maps.DirectionsLeg.prototype.start_location; + +/** + * An array of DirectionsSteps, each of which contains information + * about the individual steps in this leg. + * @type {!Array} + */ +google.maps.DirectionsLeg.prototype.steps; + +/** + * An array of non-stopover waypoints along this leg, which were specified in + * the original request.

Deprecated in alternative routes. + * Version 3.27 will be the last version of the API that adds extra + * via_waypoints in alternative routes.

When using the + * Directions Service to implement draggable directions, it is recommended to + * disable dragging of alternative routes. Only the main route should be + * draggable. Users can drag the main route until it matches an alternative + * route. + * @type {!Array} + */ +google.maps.DirectionsLeg.prototype.via_waypoints; + +/** + * Information about traffic speed along the leg. + * @type {!Array} + * @deprecated This array will always be empty. + */ +google.maps.DirectionsLeg.prototype.traffic_speed_entry; + +/** + * An object containing a points property to describe the polyline + * of a {@link google.maps.DirectionsStep}. + * @record + */ +google.maps.DirectionsPolyline = function() {}; + +/** + * An encoded + * polyline. + * @type {string} + */ +google.maps.DirectionsPolyline.prototype.points; + +/** + * Renders directions obtained from the DirectionsService. + * + * Access by calling `const {DirectionsRenderer} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {google.maps.DirectionsRendererOptions=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.DirectionsRenderer = function(opts) {}; + +/** + * Returns the renderer's current set of directions. + * @return {google.maps.DirectionsResult} + */ +google.maps.DirectionsRenderer.prototype.getDirections = function() {}; + +/** + * Returns the map on which the DirectionsResult is rendered. + * @return {google.maps.Map} + */ +google.maps.DirectionsRenderer.prototype.getMap = function() {}; + +/** + * Returns the panel <div> in which the + * DirectionsResult is rendered. + * @return {?HTMLElement} + */ +google.maps.DirectionsRenderer.prototype.getPanel = function() {}; + +/** + * Returns the current (zero-based) route index in use by this + * DirectionsRenderer object. + * @return {number} + */ +google.maps.DirectionsRenderer.prototype.getRouteIndex = function() {}; + +/** + * Set the renderer to use the result from the DirectionsService. + * Setting a valid set of directions in this manner will display the directions + * on the renderer's designated map and panel. + * @param {google.maps.DirectionsResult} directions + * @return {undefined} + */ +google.maps.DirectionsRenderer.prototype.setDirections = function( + directions) {}; + +/** + * This method specifies the map on which directions will be rendered. Pass + * null to remove the directions from the map. + * @param {google.maps.Map} map + * @return {undefined} + */ +google.maps.DirectionsRenderer.prototype.setMap = function(map) {}; + +/** + * Change the options settings of this DirectionsRenderer after + * initialization. + * @param {google.maps.DirectionsRendererOptions} options + * @return {undefined} + */ +google.maps.DirectionsRenderer.prototype.setOptions = function(options) {}; + +/** + * This method renders the directions in a <div>. Pass + * null to remove the content from the panel. + * @param {?HTMLElement} panel + * @return {undefined} + */ +google.maps.DirectionsRenderer.prototype.setPanel = function(panel) {}; + +/** + * Set the (zero-based) index of the route in the DirectionsResult + * object to render. By default, the first route in the array will be rendered. + * @param {number} routeIndex + * @return {undefined} + */ +google.maps.DirectionsRenderer.prototype.setRouteIndex = function( + routeIndex) {}; + +/** + * This object defines the properties that can be set on a + * DirectionsRenderer object. + * @record + */ +google.maps.DirectionsRendererOptions = function() {}; + +/** + * The directions to display on the map and/or in a <div> + * panel, retrieved as a DirectionsResult object from + * DirectionsService. + * @type {google.maps.DirectionsResult|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.directions; + +/** + * If true, allows the user to drag and modify the paths of routes + * rendered by this DirectionsRenderer. + * @type {boolean|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.draggable; + +/** + * This property indicates whether the renderer should provide a user-selectable + * list of routes shown in the directions panel. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.hideRouteList; + +/** + * The InfoWindow in which to render text information when a marker + * is clicked. Existing info window content will be overwritten and its position + * moved. If no info window is specified, the DirectionsRenderer + * will create and use its own info window. This property will be ignored if + * suppressInfoWindows is set to true. + * @type {google.maps.InfoWindow|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.infoWindow; + +/** + * Map on which to display the directions. + * @type {google.maps.Map|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.map; + +/** + * Options for the markers. All markers rendered by the + * DirectionsRenderer will use these options. + * @type {google.maps.MarkerOptions|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.markerOptions; + +/** + * The <div> in which to display the directions steps. + * @type {HTMLElement|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.panel; + +/** + * Options for the polylines. All polylines rendered by the + * DirectionsRenderer will use these options. + * @type {google.maps.PolylineOptions|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.polylineOptions; + +/** + * If this option is set to true or the map's center and zoom + * were never set, the input map is centered and zoomed to the bounding box of + * this set of directions. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.preserveViewport; + +/** + * The index of the route within the DirectionsResult object. The + * default value is 0. + * @type {number|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.routeIndex; + +/** + * Suppress the rendering of the BicyclingLayer when bicycling + * directions are requested. + * @type {boolean|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.suppressBicyclingLayer; + +/** + * Suppress the rendering of info windows. + * @type {boolean|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.suppressInfoWindows; + +/** + * Suppress the rendering of markers. + * @type {boolean|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.suppressMarkers; + +/** + * Suppress the rendering of polylines. + * @type {boolean|null|undefined} + */ +google.maps.DirectionsRendererOptions.prototype.suppressPolylines; + +/** + * A directions query to be sent to the DirectionsService. + * @record + */ +google.maps.DirectionsRequest = function() {}; + +/** + * If true, instructs the Directions service to avoid ferries where + * possible. Optional. + * @type {boolean|undefined} + */ +google.maps.DirectionsRequest.prototype.avoidFerries; + +/** + * If true, instructs the Directions service to avoid highways + * where possible. Optional. + * @type {boolean|undefined} + */ +google.maps.DirectionsRequest.prototype.avoidHighways; + +/** + * If true, instructs the Directions service to avoid toll roads + * where possible. Optional. + * @type {boolean|undefined} + */ +google.maps.DirectionsRequest.prototype.avoidTolls; + +/** + * Location of destination. This can be specified as either a string to be + * geocoded, or a LatLng, or a Place. Required. + * @type {string|!google.maps.LatLng|!google.maps.Place|!google.maps.LatLngLiteral} + */ +google.maps.DirectionsRequest.prototype.destination; + +/** + * Settings that apply only to requests where travelMode is + * DRIVING. This object will have no effect for other travel modes. + * @type {!google.maps.DrivingOptions|undefined} + */ +google.maps.DirectionsRequest.prototype.drivingOptions; + +/** + * A language identifier for the language in which results should be returned, + * when possible. See the list of + * supported languages. + * @type {string|null|undefined} + */ +google.maps.DirectionsRequest.prototype.language; + +/** + * If set to true, the DirectionsService will attempt + * to re-order the supplied intermediate waypoints to minimize overall cost of + * the route. If waypoints are optimized, inspect + * DirectionsRoute.waypoint_order in the response to determine the + * new ordering. + * @type {boolean|undefined} + */ +google.maps.DirectionsRequest.prototype.optimizeWaypoints; + +/** + * Location of origin. This can be specified as either a string to be geocoded, + * or a LatLng, or a Place. Required. + * @type {string|!google.maps.LatLng|!google.maps.Place|!google.maps.LatLngLiteral} + */ +google.maps.DirectionsRequest.prototype.origin; + +/** + * Whether or not route alternatives should be provided. Optional. + * @type {boolean|undefined} + */ +google.maps.DirectionsRequest.prototype.provideRouteAlternatives; + +/** + * Region code used as a bias for geocoding requests. The region code accepts a + * ccTLD + * ("top-level domain") two-character value. Most ccTLD codes are + * identical to ISO 3166-1 codes, with some notable exceptions. For example, the + * United Kingdom's ccTLD is "uk" (.co.uk) while its + * ISO 3166-1 code is "gb" (technically for the entity of "The + * United Kingdom of Great Britain and Northern Ireland"). + * @type {string|null|undefined} + */ +google.maps.DirectionsRequest.prototype.region; + +/** + * Settings that apply only to requests where travelMode is + * TRANSIT. This object will have no effect for other travel modes. + * @type {!google.maps.TransitOptions|undefined} + */ +google.maps.DirectionsRequest.prototype.transitOptions; + +/** + * Type of routing requested. Required. + * @type {!google.maps.TravelMode} + */ +google.maps.DirectionsRequest.prototype.travelMode; + +/** + * Preferred unit system to use when displaying distance. + * @default The unit system used in the country of origin. + * @type {!google.maps.UnitSystem|undefined} + */ +google.maps.DirectionsRequest.prototype.unitSystem; + +/** + * Array of intermediate waypoints. Directions are calculated from the origin to + * the destination by way of each waypoint in this array. See the + * developer's guide for the maximum number of waypoints allowed. + * Waypoints are not supported for transit directions. Optional. + * @type {!Array|undefined} + */ +google.maps.DirectionsRequest.prototype.waypoints; + +/** + * The directions response retrieved from the directions server. You can render + * these using a {@link google.maps.DirectionsRenderer} or parse this object and + * render it yourself. You must display the warnings and copyrights as noted in + * the Google Maps + * Platform Terms of Service. Note that though this result is + * "JSON-like," it is not strictly JSON, as it indirectly includes + * LatLng objects. + * @record + */ +google.maps.DirectionsResult = function() {}; + +/** + * Contains an array of available travel modes. This field is returned when a + * request specifies a travel mode and gets no results. The array contains the + * available travel modes in the countries of the given set of waypoints. This + * field is not returned if one or more of the waypoints are 'via + * waypoints'. + * @type {!Array|undefined} + */ +google.maps.DirectionsResult.prototype.available_travel_modes; + +/** + * An array of DirectionsGeocodedWaypoints, each of which contains + * information about the geocoding of origin, destination and waypoints. + * @type {!Array|undefined} + */ +google.maps.DirectionsResult.prototype.geocoded_waypoints; + +/** + * The DirectionsRequest that yielded this result. + * @type {!google.maps.DirectionsRequest} + */ +google.maps.DirectionsResult.prototype.request; + +/** + * An array of DirectionsRoutes, each of which contains information + * about the legs and steps of which it is composed. There will only be one + * route unless the DirectionsRequest was made with + * provideRouteAlternatives set to true. + * @type {!Array} + */ +google.maps.DirectionsResult.prototype.routes; + +/** + * A single route containing a set of legs in a DirectionsResult. Note that though this + * object is "JSON-like," it is not strictly JSON, as it directly and + * indirectly includes LatLng objects. + * @record + */ +google.maps.DirectionsRoute = function() {}; + +/** + * The bounds for this route. + * @type {!google.maps.LatLngBounds} + */ +google.maps.DirectionsRoute.prototype.bounds; + +/** + * Copyrights text to be displayed for this route. + * @type {string} + */ +google.maps.DirectionsRoute.prototype.copyrights; + +/** + * The total fare for the whole transit trip. Only applicable to transit + * requests. + * @type {!google.maps.TransitFare|undefined} + */ +google.maps.DirectionsRoute.prototype.fare; + +/** + * An array of DirectionsLegs, each of which contains information + * about the steps of which it is composed. There will be one leg for each + * stopover waypoint or destination specified. So a route with no stopover + * waypoints will contain one DirectionsLeg and a route with one + * stopover waypoint will contain two. + * @type {!Array} + */ +google.maps.DirectionsRoute.prototype.legs; + +/** + * An array of LatLngs representing the entire course of this + * route. The path is simplified in order to make it suitable in contexts where + * a small number of vertices is required (such as Static Maps API URLs). + * @type {!Array} + */ +google.maps.DirectionsRoute.prototype.overview_path; + +/** + * An encoded + * polyline representation of the route in overview_path. This polyline is + * an approximate (smoothed) path of the resulting directions. + * @type {string} + */ +google.maps.DirectionsRoute.prototype.overview_polyline; + +/** + * Contains a short textual description for the route, suitable for naming and + * disambiguating the route from alternatives. + * @type {string} + */ +google.maps.DirectionsRoute.prototype.summary; + +/** + * Warnings to be displayed when showing these directions. + * @type {!Array} + */ +google.maps.DirectionsRoute.prototype.warnings; + +/** + * If optimizeWaypoints was set to true, this field + * will contain the re-ordered permutation of the input waypoints. For example, + * if the input was:
  Origin: Los Angeles
+ *   Waypoints: Dallas, Bangor, Phoenix
  Destination: + * New York
and the optimized output was ordered as follows:
+ *   Origin: Los Angeles
  Waypoints: Phoenix, Dallas, + * Bangor
  Destination: New York
then this field will be an + * Array containing the values [2, 0, 1]. Note that the numbering + * of waypoints is zero-based.
If any of the input waypoints has + * stopover set to false, this field will be empty, + * since route optimization is not available for such queries. + * @type {!Array} + */ +google.maps.DirectionsRoute.prototype.waypoint_order; + +/** + * A service for computing directions between two or more places. + * + * Access by calling `const {DirectionsService} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.DirectionsService = function() {}; + +/** + * Issue a directions search request. + * @param {!google.maps.DirectionsRequest} request + * @param {(function(?google.maps.DirectionsResult, + * !google.maps.DirectionsStatus): void)=} callback + * @return {!Promise} + */ +google.maps.DirectionsService.prototype.route = function(request, callback) {}; + +/** + * The status returned by the DirectionsService on the completion + * of a call to route(). Specify these by value, or by using the + * constant's name. For example, 'OK' or + * google.maps.DirectionsStatus.OK. + * + * Access by calling `const {DirectionsStatus} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.DirectionsStatus = { + /** + * The DirectionsRequest provided was invalid. + */ + INVALID_REQUEST: 'INVALID_REQUEST', + /** + * Too many DirectionsWaypoints were provided in the + * DirectionsRequest. See the + * developer's guide for the maximum number of waypoints allowed. + */ + MAX_WAYPOINTS_EXCEEDED: 'MAX_WAYPOINTS_EXCEEDED', + /** + * At least one of the origin, destination, or waypoints could not be + * geocoded. + */ + NOT_FOUND: 'NOT_FOUND', + /** + * The response contains a valid DirectionsResult. + */ + OK: 'OK', + /** + * The webpage has gone over the requests limit in too short a period of time. + */ + OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT', + /** + * The webpage is not allowed to use the directions service. + */ + REQUEST_DENIED: 'REQUEST_DENIED', + /** + * A directions request could not be processed due to a server error. The + * request may succeed if you try again. + */ + UNKNOWN_ERROR: 'UNKNOWN_ERROR', + /** + * No route could be found between the origin and destination. + */ + ZERO_RESULTS: 'ZERO_RESULTS', +}; + +/** + * A single DirectionsStep in a DirectionsResult. Some + * fields may be undefined. Note that though this object is + * "JSON-like," it is not strictly JSON, as it directly includes + * LatLng objects. + * @record + */ +google.maps.DirectionsStep = function() {}; + +/** + * The distance covered by this step. This property may be + * undefined as the distance may be unknown. + * @type {!google.maps.Distance|undefined} + */ +google.maps.DirectionsStep.prototype.distance; + +/** + * The typical time required to perform this step in seconds and in text form. + * This property may be undefined as the duration may be unknown. + * @type {!google.maps.Duration|undefined} + */ +google.maps.DirectionsStep.prototype.duration; + +/** + * An encoded + * polyline representation of the step. This is an approximate (smoothed) + * path of the step. + * @type {string} + */ +google.maps.DirectionsStep.prototype.encoded_lat_lngs; + +/** + * The ending location of this step. + * @type {!google.maps.LatLng} + */ +google.maps.DirectionsStep.prototype.end_location; + +/** + * Instructions for this step. + * @type {string} + */ +google.maps.DirectionsStep.prototype.instructions; + +/** + * Contains the action to take for the current step (turn-left, + * merge, straight, etc.). Values are subject to + * change, and new values may be introduced without prior notice. + * @type {string} + */ +google.maps.DirectionsStep.prototype.maneuver; + +/** + * A sequence of LatLngs describing the course of this step. This + * is an approximate (smoothed) path of the step. + * @type {!Array} + */ +google.maps.DirectionsStep.prototype.path; + +/** + * The starting location of this step. + * @type {!google.maps.LatLng} + */ +google.maps.DirectionsStep.prototype.start_location; + +/** + * Sub-steps of this step. Specified for non-transit sections of transit routes. + * @type {!Array|undefined} + */ +google.maps.DirectionsStep.prototype.steps; + +/** + * Transit-specific details about this step. This property will be undefined + * unless the travel mode of this step is TRANSIT. + * @type {!google.maps.TransitDetails|undefined} + */ +google.maps.DirectionsStep.prototype.transit; + +/** + * Details pertaining to this step if the travel mode is TRANSIT. + * @type {!google.maps.TransitDetails|undefined} + */ +google.maps.DirectionsStep.prototype.transit_details; + +/** + * The mode of travel used in this step. + * @type {!google.maps.TravelMode} + */ +google.maps.DirectionsStep.prototype.travel_mode; + +/** + * The starting location of this step. + * @type {!google.maps.LatLng} + * @deprecated Please use {@link google.maps.DirectionsStep.start_location}. + */ +google.maps.DirectionsStep.prototype.start_point; + +/** + * The ending location of this step. + * @type {!google.maps.LatLng} + * @deprecated Please use {@link google.maps.DirectionsStep.end_location}. + */ +google.maps.DirectionsStep.prototype.end_point; + +/** + * A sequence of LatLngs describing the course of this step. This + * is an approximate (smoothed) path of the step. + * @type {!Array} + * @deprecated Please use {@link google.maps.DirectionsStep.path}. + */ +google.maps.DirectionsStep.prototype.lat_lngs; + +/** + * Contains an object with a single property, 'points', that holds an encoded + * polyline representation of the step. This polyline is an approximate + * (smoothed) path of the step. + * @type {!google.maps.DirectionsPolyline|undefined} + * @deprecated Please use {@link google.maps.DirectionsStep.encoded_lat_lngs}. + */ +google.maps.DirectionsStep.prototype.polyline; + +/** + * @enum {string} + * @deprecated Deprecated as of 2011. Use {@link google.maps.TravelMode} + * instead. + */ +google.maps.DirectionsTravelMode = {}; + +/** + * @enum {string} + * @deprecated Deprecated as of 2011. Use {@link google.maps.UnitSystem} + * instead. + */ +google.maps.DirectionsUnitSystem = {}; + +/** + * A DirectionsWaypoint represents a location between origin and + * destination through which the trip should be routed. + * @record + */ +google.maps.DirectionsWaypoint = function() {}; + +/** + * Waypoint location. Can be an address string, a LatLng, or a + * Place. Optional. + * @type {string|!google.maps.LatLng|!google.maps.LatLngLiteral|!google.maps.Place|undefined} + */ +google.maps.DirectionsWaypoint.prototype.location; + +/** + * If true, indicates that this waypoint is a stop between the + * origin and destination. This has the effect of splitting the route into two + * legs. If false, indicates that the route should be biased to go + * through this waypoint, but not split into two legs. This is useful if you + * want to create a route in response to the user dragging waypoints on a map. + * @default true + * @type {boolean|undefined} + */ +google.maps.DirectionsWaypoint.prototype.stopover; + +/** + * A representation of distance as a numeric value and a display string. + * @record + */ +google.maps.Distance = function() {}; + +/** + * A string representation of the distance value, using the + * UnitSystem specified in the request. + * @type {string} + */ +google.maps.Distance.prototype.text; + +/** + * The distance in meters. + * @type {number} + */ +google.maps.Distance.prototype.value; + +/** + * The element-level status about a particular origin-destination pairing + * returned by the DistanceMatrixService upon completion of a + * distance matrix request. These values are specified as strings, for example, + * 'OK'. + * + * Access by calling `const {DistanceMatrixElementStatus} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.DistanceMatrixElementStatus = { + /** + * The origin and/or destination of this pairing could not be geocoded. + */ + NOT_FOUND: 'NOT_FOUND', + /** + * The response contains a valid result. + */ + OK: 'OK', + /** + * No route could be found between the origin and destination. + */ + ZERO_RESULTS: 'ZERO_RESULTS', +}; + +/** + * A distance matrix query sent by the DistanceMatrixService + * containing arrays of origin and destination locations, and various options + * for computing metrics. + * @record + */ +google.maps.DistanceMatrixRequest = function() {}; + +/** + * If true, instructs the Distance Matrix service to avoid ferries + * where possible. Optional. + * @type {boolean|undefined} + */ +google.maps.DistanceMatrixRequest.prototype.avoidFerries; + +/** + * If true, instructs the Distance Matrix service to avoid highways + * where possible. Optional. + * @type {boolean|undefined} + */ +google.maps.DistanceMatrixRequest.prototype.avoidHighways; + +/** + * If true, instructs the Distance Matrix service to avoid toll + * roads where possible. Optional. + * @type {boolean|undefined} + */ +google.maps.DistanceMatrixRequest.prototype.avoidTolls; + +/** + * An array containing destination address strings, or LatLng, or + * Place objects, to which to calculate distance and time. + * Required. + * @type {!Array} + */ +google.maps.DistanceMatrixRequest.prototype.destinations; + +/** + * Settings that apply only to requests where travelMode is + * DRIVING. This object will have no effect for other travel modes. + * @type {!google.maps.DrivingOptions|undefined} + */ +google.maps.DistanceMatrixRequest.prototype.drivingOptions; + +/** + * A language identifier for the language in which results should be returned, + * when possible. See the list of + * supported languages. + * @type {string|null|undefined} + */ +google.maps.DistanceMatrixRequest.prototype.language; + +/** + * An array containing origin address strings, or LatLng, or + * Place objects, from which to calculate distance and time. + * Required. + * @type {!Array} + */ +google.maps.DistanceMatrixRequest.prototype.origins; + +/** + * Region code used as a bias for geocoding requests. The region code accepts a + * ccTLD + * ("top-level domain") two-character value. Most ccTLD codes are + * identical to ISO 3166-1 codes, with some notable exceptions. For example, the + * United Kingdom's ccTLD is "uk" (.co.uk) while its + * ISO 3166-1 code is "gb" (technically for the entity of "The + * United Kingdom of Great Britain and Northern Ireland"). + * @type {string|null|undefined} + */ +google.maps.DistanceMatrixRequest.prototype.region; + +/** + * Settings that apply only to requests where travelMode is + * TRANSIT. This object will have no effect for other travel modes. + * @type {!google.maps.TransitOptions|undefined} + */ +google.maps.DistanceMatrixRequest.prototype.transitOptions; + +/** + * Type of routing requested. Required. + * @type {!google.maps.TravelMode} + */ +google.maps.DistanceMatrixRequest.prototype.travelMode; + +/** + * Preferred unit system to use when displaying distance. Optional; defaults to + * metric. + * @type {!google.maps.UnitSystem|undefined} + */ +google.maps.DistanceMatrixRequest.prototype.unitSystem; + +/** + * The response to a DistanceMatrixService request, consisting of + * the formatted origin and destination addresses, and a sequence of + * DistanceMatrixResponseRows, one for each corresponding origin + * address. + * @record + */ +google.maps.DistanceMatrixResponse = function() {}; + +/** + * The formatted destination addresses. + * @type {!Array} + */ +google.maps.DistanceMatrixResponse.prototype.destinationAddresses; + +/** + * The formatted origin addresses. + * @type {!Array} + */ +google.maps.DistanceMatrixResponse.prototype.originAddresses; + +/** + * The rows of the matrix, corresponding to the origin addresses. + * @type {!Array} + */ +google.maps.DistanceMatrixResponse.prototype.rows; + +/** + * A single element of a response to a DistanceMatrixService + * request, which contains the duration and distance from one origin to one + * destination. + * @record + */ +google.maps.DistanceMatrixResponseElement = function() {}; + +/** + * The distance for this origin-destination pairing. This property may be + * undefined as the distance may be unknown. + * @type {!google.maps.Distance} + */ +google.maps.DistanceMatrixResponseElement.prototype.distance; + +/** + * The duration for this origin-destination pairing. This property may be + * undefined as the duration may be unknown. + * @type {!google.maps.Duration} + */ +google.maps.DistanceMatrixResponseElement.prototype.duration; + +/** + * The duration for this origin-destination pairing, taking into account the + * traffic conditions indicated by the trafficModel property. This + * property may be undefined as the duration may be unknown. Only + * available to Premium Plan customers when drivingOptions is + * defined when making the request. + * @type {!google.maps.Duration} + */ +google.maps.DistanceMatrixResponseElement.prototype.duration_in_traffic; + +/** + * The total fare for this origin-destination pairing. Only applicable to + * transit requests. + * @type {!google.maps.TransitFare} + */ +google.maps.DistanceMatrixResponseElement.prototype.fare; + +/** + * The status of this particular origin-destination pairing. + * @type {!google.maps.DistanceMatrixElementStatus} + */ +google.maps.DistanceMatrixResponseElement.prototype.status; + +/** + * A row of the response to a DistanceMatrixService request, + * consisting of a sequence of DistanceMatrixResponseElements, one + * for each corresponding destination address. + * @record + */ +google.maps.DistanceMatrixResponseRow = function() {}; + +/** + * The row's elements, corresponding to the destination addresses. + * @type {!Array} + */ +google.maps.DistanceMatrixResponseRow.prototype.elements; + +/** + * A service for computing distances between multiple origins and destinations. + * + * Access by calling `const {DistanceMatrixService} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.DistanceMatrixService = function() {}; + +/** + * Issues a distance matrix request. + * @param {!google.maps.DistanceMatrixRequest} request + * @param {(function(?google.maps.DistanceMatrixResponse, + * !google.maps.DistanceMatrixStatus): void)=} callback + * @return {!Promise} + */ +google.maps.DistanceMatrixService.prototype.getDistanceMatrix = function( + request, callback) {}; + +/** + * The top-level status about the request in general returned by the + * DistanceMatrixService upon completion of a distance matrix + * request. Specify these by value, or by using the constant's name. For + * example, 'OK' or + * google.maps.DistanceMatrixStatus.OK. + * + * Access by calling `const {DistanceMatrixStatus} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.DistanceMatrixStatus = { + /** + * The provided request was invalid. + */ + INVALID_REQUEST: 'INVALID_REQUEST', + /** + * The request contains more than 25 origins, or more than 25 destinations. + */ + MAX_DIMENSIONS_EXCEEDED: 'MAX_DIMENSIONS_EXCEEDED', + /** + * The product of origins and destinations exceeds the per-query limit. + */ + MAX_ELEMENTS_EXCEEDED: 'MAX_ELEMENTS_EXCEEDED', + /** + * The response contains a valid result. + */ + OK: 'OK', + /** + * Too many elements have been requested within the allowed time period. The + * request should succeed if you try again after some time. + */ + OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT', + /** + * The service denied use of the Distance Matrix service by your web page. + */ + REQUEST_DENIED: 'REQUEST_DENIED', + /** + * A Distance Matrix request could not be processed due to a server error. The + * request may succeed if you try again. + */ + UNKNOWN_ERROR: 'UNKNOWN_ERROR', +}; + +/** + * @record + */ +google.maps.DrawingLibrary = function() {}; + +/** + * @type {typeof google.maps.drawing.DrawingManager} + */ +google.maps.DrawingLibrary.prototype.DrawingManager; + +/** + * @type {typeof google.maps.drawing.OverlayType} + */ +google.maps.DrawingLibrary.prototype.OverlayType; + +/** + * Configures the DirectionsRequest when the travel mode + * is set to DRIVING. + * @record + */ +google.maps.DrivingOptions = function() {}; + +/** + * The desired departure time for the route, specified as a Date + * object. The Date object measures time in milliseconds since 1 + * January 1970. This must be specified for a DrivingOptions to be + * valid. The departure time must be set to the current time or some time in the + * future. It cannot be in the past. + * @type {!Date} + */ +google.maps.DrivingOptions.prototype.departureTime; + +/** + * The preferred assumption to use when predicting duration in traffic. The + * default is BEST_GUESS. + * @type {!google.maps.TrafficModel|undefined} + */ +google.maps.DrivingOptions.prototype.trafficModel; + +/** + * A representation of duration as a numeric value and a display string. + * @record + */ +google.maps.Duration = function() {}; + +/** + * A string representation of the duration value. + * @type {string} + */ +google.maps.Duration.prototype.text; + +/** + * The duration in seconds. + * @type {number} + */ +google.maps.Duration.prototype.value; + +/** + * @record + */ +google.maps.ElevationLibrary = function() {}; + +/** + * @type {typeof google.maps.ElevationService} + */ +google.maps.ElevationLibrary.prototype.ElevationService; + +/** + * @type {typeof google.maps.ElevationStatus} + */ +google.maps.ElevationLibrary.prototype.ElevationStatus; + +/** + * The result of an ElevationService request, consisting of the set + * of elevation coordinates and their elevation values. Note that a single + * request may produce multiple ElevationResults. + * @record + */ +google.maps.ElevationResult = function() {}; + +/** + * The elevation of this point on Earth, in meters above sea level. + * @type {number} + */ +google.maps.ElevationResult.prototype.elevation; + +/** + * The location of this elevation result. + * @type {!google.maps.LatLng|null} + */ +google.maps.ElevationResult.prototype.location; + +/** + * The distance, in meters, between sample points from which the elevation was + * interpolated. This property will be missing if the resolution is not known. + * Note that elevation data becomes more coarse (larger resolution + * values) when multiple points are passed. To obtain the most accurate + * elevation value for a point, it should be queried independently. + * @type {number} + */ +google.maps.ElevationResult.prototype.resolution; + +/** + * Defines a service class that talks directly to Google servers for requesting + * elevation data. + * + * Access by calling `const {ElevationService} = await + * google.maps.importLibrary("elevation")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.ElevationService = function() {}; + +/** + * Makes an elevation request along a path, where the elevation data are + * returned as distance-based samples along that path. + * @param {!google.maps.PathElevationRequest} request + * @param {(function((!Array|null), + * !google.maps.ElevationStatus): void)=} callback + * @return {!Promise} + */ +google.maps.ElevationService.prototype.getElevationAlongPath = function( + request, callback) {}; + +/** + * Makes an elevation request for a list of discrete locations. + * @param {!google.maps.LocationElevationRequest} request + * @param {(function((!Array|null), + * !google.maps.ElevationStatus): void)=} callback + * @return {!Promise} + */ +google.maps.ElevationService.prototype.getElevationForLocations = function( + request, callback) {}; + +/** + * The status returned by the ElevationService upon completion of + * an elevation request. Specify these by value, or by using the constant's + * name. For example, 'OK' or + * google.maps.ElevationStatus.OK. + * + * Access by calling `const {ElevationStatus} = await + * google.maps.importLibrary("elevation")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.ElevationStatus = { + /** + * The request was invalid. + */ + INVALID_REQUEST: 'INVALID_REQUEST', + /** + * The request did not encounter any errors. + */ + OK: 'OK', + /** + * The webpage has gone over the requests limit in too short a period of time. + */ + OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT', + /** + * The webpage is not allowed to use the elevation service. + */ + REQUEST_DENIED: 'REQUEST_DENIED', + /** + * The elevation request could not be successfully processed, yet the exact + * reason for the failure is not known. + */ + UNKNOWN_ERROR: 'UNKNOWN_ERROR', +}; + +/** + * An event with an associated Error. + * @record + */ +google.maps.ErrorEvent = function() {}; + +/** + * The Error related to the event. + * @type {!Error} + */ +google.maps.ErrorEvent.prototype.error; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Extra computations to perform while completing a geocoding request. + * + * Access by calling `const {ExtraGeocodeComputation} = await + * google.maps.importLibrary("geocoding")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.ExtraGeocodeComputation = { + /** + * Generate an address descriptor. + */ + ADDRESS_DESCRIPTORS: 'ADDRESS_DESCRIPTORS', +}; + +/** + * An interface representing a vector map tile feature. These are inputs to the + * FeatureStyleFunction. Do not save a reference to a particular + * Feature object because the reference will not be stable. + * @record + */ +google.maps.Feature = function() {}; + +/** + * FeatureType of this Feature. + * @type {!google.maps.FeatureType} + */ +google.maps.Feature.prototype.featureType; + +/** + * An interface representing a map layer containing features of a + * specific {@link google.maps.FeatureType} whose style can be overridden + * client-side, or have events attached. + * @record + */ +google.maps.FeatureLayer = function() {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * The Dataset ID for this FeatureLayer. Only present if the + * featureType is FeatureType.DATASET. + * @type {string|undefined} + */ +google.maps.FeatureLayer.prototype.datasetId; + +/** + * The FeatureType associated with this FeatureLayer. + * @type {!google.maps.FeatureType} + */ +google.maps.FeatureLayer.prototype.featureType; + +/** + * Whether this FeatureLayer is available, meaning whether + * Data-driven styling is available for this map (there is a map ID using vector + * tiles with this FeatureLayer enabled in the Google Cloud Console + * map style.) If this is false (or becomes false), styling on this + * FeatureLayer returns to default and events are not triggered. + * @type {boolean} + */ +google.maps.FeatureLayer.prototype.isAvailable; + +/** + * The style of Features in the FeatureLayer. The + * style is applied when style is set. If your style function updates, you must + * set the style property again. A FeatureStyleFunction must return + * consistent results when it is applied over the map tiles, and should be + * optimized for performance. Asynchronous functions are not supported. If you + * use a FeatureStyleOptions, all features of that layer will be + * styled with the same FeatureStyleOptions. Set the style to + * null to remove the previously set style. If this + * FeatureLayer is not available, setting style does nothing and + * logs an error. + * @type {google.maps.FeatureStyleOptions|google.maps.FeatureStyleFunction|null|undefined} + */ +google.maps.FeatureLayer.prototype.style; + +/** + * Adds the given listener function to the given event name. Returns an + * identifier for this listener that can be used with {@link + * google.maps.event.removeListener}. + * @param {string} eventName Observed event. + * @param {!Function} handler Function to handle events. + * @return {!google.maps.MapsEventListener} Resulting event listener. + */ +google.maps.FeatureLayer.prototype.addListener = function( + eventName, handler) {}; + +/** + * This object is returned from a mouse event on a FeatureLayer. + * @extends {google.maps.MapMouseEvent} + * @record + */ +google.maps.FeatureMouseEvent = function() {}; + +/** + * The Features at this mouse event. + * @type {!Array} + */ +google.maps.FeatureMouseEvent.prototype.features; + +/** + * @typedef {function(!google.maps.FeatureStyleFunctionOptions): + * (google.maps.FeatureStyleOptions|null|undefined)} + */ +google.maps.FeatureStyleFunction; + +/** + * Options passed to a FeatureStyleFunction. + * @record + */ +google.maps.FeatureStyleFunctionOptions = function() {}; + +/** + * Feature passed into the FeatureStyleFunction for + * styling. + * @type {!google.maps.Feature} + */ +google.maps.FeatureStyleFunctionOptions.prototype.feature; + +/** + * These options specify the way the style of a Feature should be + * modified on a map. + * @record + */ +google.maps.FeatureStyleOptions = function() {}; + +/** + * Hex RGB string (like "#00FF00" for green). Only applies to polygon + * geometries. + * @type {string|undefined} + */ +google.maps.FeatureStyleOptions.prototype.fillColor; + +/** + * The fill opacity between 0.0 and 1.0. Only applies to polygon geometries. + * @type {number|undefined} + */ +google.maps.FeatureStyleOptions.prototype.fillOpacity; + +/** + * Hex RGB string (like "#00FF00" for green). + * @type {string|undefined} + */ +google.maps.FeatureStyleOptions.prototype.strokeColor; + +/** + * The stroke opacity between 0.0 and 1.0. Only applies to line and polygon + * geometries. + * @type {number|undefined} + */ +google.maps.FeatureStyleOptions.prototype.strokeOpacity; + +/** + * The stroke width in pixels. Only applies to line and polygon geometries. + * @type {number|undefined} + */ +google.maps.FeatureStyleOptions.prototype.strokeWeight; + +/** + * Identifiers for feature types. + * + * Access by calling `const {FeatureType} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.FeatureType = { + /** + * Indicates a first-order civil entity below the country level. + */ + ADMINISTRATIVE_AREA_LEVEL_1: 'ADMINISTRATIVE_AREA_LEVEL_1', + /** + * Indicates a second-order civil entity below the country level. + */ + ADMINISTRATIVE_AREA_LEVEL_2: 'ADMINISTRATIVE_AREA_LEVEL_2', + /** + * Indicates the national political entity. + */ + COUNTRY: 'COUNTRY', + /** + * Indicates a third-party dataset. + */ + DATASET: 'DATASET', + /** + * Indicates an incorporated city or town political entity. + */ + LOCALITY: 'LOCALITY', + /** + * Indicates a postal code as used to address postal mail within the country. + * Includes zip codes. + */ + POSTAL_CODE: 'POSTAL_CODE', + /** + * Indicates a school district. + */ + SCHOOL_DISTRICT: 'SCHOOL_DISTRICT', +}; + +/** + * Options for the rendering of the fullscreen control. + * @record + */ +google.maps.FullscreenControlOptions = function() {}; + +/** + * Position id. Used to specify the position of the control on the map. + * @default {@link google.maps.ControlPosition.INLINE_END_BLOCK_START} + * @type {google.maps.ControlPosition|null|undefined} + */ +google.maps.FullscreenControlOptions.prototype.position; + +/** + * A service for converting between an address and a LatLng. + * + * Access by calling `const {Geocoder} = await + * google.maps.importLibrary("geocoding")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.Geocoder = function() {}; + +/** + * Geocode a request. + * @param {!google.maps.GeocoderRequest} request + * @param {((function((!Array|null), + * !google.maps.GeocoderStatus): void)|null)=} callback + * @return {!Promise} + */ +google.maps.Geocoder.prototype.geocode = function(request, callback) {}; + +/** + * A single address component within a GeocoderResult. A full + * address may consist of multiple address components. + * @record + */ +google.maps.GeocoderAddressComponent = function() {}; + +/** + * The full text of the address component + * @type {string} + */ +google.maps.GeocoderAddressComponent.prototype.long_name; + +/** + * The abbreviated, short text of the given address component + * @type {string} + */ +google.maps.GeocoderAddressComponent.prototype.short_name; + +/** + * An array of strings denoting the type of this address component. A list of + * valid types can be found here + * @type {!Array} + */ +google.maps.GeocoderAddressComponent.prototype.types; + +/** + * GeocoderComponentRestrictions represents a set of filters that + * resolve to a specific area. For details on how this works, see + * Geocoding Component Filtering. + * @record + */ +google.maps.GeocoderComponentRestrictions = function() {}; + +/** + * Matches all the administrative_area levels. Optional. + * @type {string|undefined} + */ +google.maps.GeocoderComponentRestrictions.prototype.administrativeArea; + +/** + * Matches a country name or a two letter ISO 3166-1 country code. Optional. + * @type {string|undefined} + */ +google.maps.GeocoderComponentRestrictions.prototype.country; + +/** + * Matches against both locality and sublocality + * types. Optional. + * @type {string|undefined} + */ +google.maps.GeocoderComponentRestrictions.prototype.locality; + +/** + * Matches postal_code and postal_code_prefix. + * Optional. + * @type {string|undefined} + */ +google.maps.GeocoderComponentRestrictions.prototype.postalCode; + +/** + * Matches the long or short name of a route. Optional. + * @type {string|undefined} + */ +google.maps.GeocoderComponentRestrictions.prototype.route; + +/** + * Geometry information about this GeocoderResult + * @record + */ +google.maps.GeocoderGeometry = function() {}; + +/** + * The precise bounds of this GeocoderResult, if applicable + * @type {!google.maps.LatLngBounds|undefined} + */ +google.maps.GeocoderGeometry.prototype.bounds; + +/** + * The latitude/longitude coordinates of this result + * @type {!google.maps.LatLng} + */ +google.maps.GeocoderGeometry.prototype.location; + +/** + * The type of location returned in location + * @type {!google.maps.GeocoderLocationType} + */ +google.maps.GeocoderGeometry.prototype.location_type; + +/** + * The bounds of the recommended viewport for displaying this + * GeocoderResult + * @type {!google.maps.LatLngBounds} + */ +google.maps.GeocoderGeometry.prototype.viewport; + +/** + * Describes the type of location returned from a geocode. Specify these by + * value, or by using the constant's name. For example, + * 'ROOFTOP' or + * google.maps.GeocoderLocationType.ROOFTOP. + * + * Access by calling `const {GeocoderLocationType} = await + * google.maps.importLibrary("geocoding")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.GeocoderLocationType = { + /** + * The returned result is approximate. + */ + APPROXIMATE: 'APPROXIMATE', + /** + * The returned result is the geometric center of a result such a line (e.g. + * street) or polygon (region). + */ + GEOMETRIC_CENTER: 'GEOMETRIC_CENTER', + /** + * The returned result reflects an approximation (usually on a road) + * interpolated between two precise points (such as intersections). + * Interpolated results are generally returned when rooftop geocodes are + * unavailable for a street address. + */ + RANGE_INTERPOLATED: 'RANGE_INTERPOLATED', + /** + * The returned result reflects a precise geocode. + */ + ROOFTOP: 'ROOFTOP', +}; + +/** + * The specification for a geocoding request to be sent to the + * Geocoder. + * @record + */ +google.maps.GeocoderRequest = function() {}; + +/** + * Address to geocode. One, and only one, of address, + * location and placeId must be supplied. + * @type {string|null|undefined} + */ +google.maps.GeocoderRequest.prototype.address; + +/** + * LatLngBounds within which to search. Optional. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|null|undefined} + */ +google.maps.GeocoderRequest.prototype.bounds; + +/** + * Components are used to restrict results to a specific area. A filter consists + * of one or more of: route, locality, + * administrativeArea, postalCode, + * country. Only the results that match all the filters will be + * returned. Filter values support the same methods of spelling correction and + * partial matching as other geocoding requests. Optional. + * @type {!google.maps.GeocoderComponentRestrictions|null|undefined} + */ +google.maps.GeocoderRequest.prototype.componentRestrictions; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * A list of extra computations which may be used to complete the request. Note: + * These extra computations may return extra fields on the response. + * @type {!Array|undefined} + */ +google.maps.GeocoderRequest.prototype.extraComputations; + +/** + * Fulfill the promise on a ZERO_RESULT status in the response. This may be + * desired because even with zero geocoding results there may still be + * additional response level fields returned. + * @type {boolean|null|undefined} + */ +google.maps.GeocoderRequest.prototype.fulfillOnZeroResults; + +/** + * A language identifier for the language in which results should be returned, + * when possible. See the list of + * supported languages. + * @type {string|null|undefined} + */ +google.maps.GeocoderRequest.prototype.language; + +/** + * LatLng (or LatLngLiteral) for which to search. The + * geocoder performs a reverse geocode. See + * Reverse Geocoding for more information. One, and only one, of + * address, location and placeId must be + * supplied. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} + */ +google.maps.GeocoderRequest.prototype.location; + +/** + * The place ID associated with the location. Place IDs uniquely identify a + * place in the Google Places database and on Google Maps. Learn more about place + * IDs in the Places API developer guide. The geocoder performs a reverse + * geocode. See Reverse + * Geocoding for more information. One, and only one, of + * address, location and placeId must be + * supplied. + * @type {string|null|undefined} + */ +google.maps.GeocoderRequest.prototype.placeId; + +/** + * Country code used to bias the search, specified as a two-character + * (non-numeric) Unicode region subtag / CLDR identifier. Optional. See Google Maps Platform + * Coverage Details for supported regions. + * @type {string|null|undefined} + */ +google.maps.GeocoderRequest.prototype.region; + +/** + * A Geocoder response returned by the {@link google.maps.Geocoder} containing + * the list of {@link google.maps.GeocoderResult}s. + * @record + */ +google.maps.GeocoderResponse = function() {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * A relational description of a location. Includes a ranked set of nearby + * landmarks and the areas containing the target location. It is only populated + * for reverse geocoding requests and only when {@link + * google.maps.ExtraGeocodeComputation.ADDRESS_DESCRIPTORS} is enabled. + * @type {!google.maps.AddressDescriptor|null|undefined} + */ +google.maps.GeocoderResponse.prototype.address_descriptor; + +/** + * The plus code associated with the location. + * @type {!google.maps.places.PlacePlusCode|null|undefined} + */ +google.maps.GeocoderResponse.prototype.plus_code; + +/** + * The list of {@link google.maps.GeocoderResult}s. + * @type {!Array} + */ +google.maps.GeocoderResponse.prototype.results; + +/** + * A single geocoder result retrieved from the geocode server. A geocode request + * may return multiple result objects. Note that though this result is + * "JSON-like," it is not strictly JSON, as it indirectly includes a + * LatLng object. + * @record + */ +google.maps.GeocoderResult = function() {}; + +/** + * An array of GeocoderAddressComponents + * @type {!Array} + */ +google.maps.GeocoderResult.prototype.address_components; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * A relational description of the location associated with this geocode. + * Includes a ranked set of nearby landmarks and the areas containing the target + * location. This will only be populated for forward geocoding and place ID + * lookup requests, only when {@link + * google.maps.ExtraGeocodeComputation.ADDRESS_DESCRIPTORS} is enabled, and only + * for certain localized places. + * @type {!google.maps.AddressDescriptor|undefined} + */ +google.maps.GeocoderResult.prototype.address_descriptor; + +/** + * A string containing the human-readable address of this location. + * @type {string} + */ +google.maps.GeocoderResult.prototype.formatted_address; + +/** + * A GeocoderGeometry object + * @type {!google.maps.GeocoderGeometry} + */ +google.maps.GeocoderResult.prototype.geometry; + +/** + * Whether the geocoder did not return an exact match for the original request, + * though it was able to match part of the requested address. If an exact match, + * the value will be undefined. + * @type {boolean|undefined} + */ +google.maps.GeocoderResult.prototype.partial_match; + +/** + * The place ID associated with the location. Place IDs uniquely identify a + * place in the Google Places database and on Google Maps. Learn more about Place + * IDs in the Places API developer guide. + * @type {string} + */ +google.maps.GeocoderResult.prototype.place_id; + +/** + * The plus code associated with the location. + * @type {!google.maps.places.PlacePlusCode|undefined} + */ +google.maps.GeocoderResult.prototype.plus_code; + +/** + * An array of strings denoting all the localities contained in a postal code. + * This is only present when the result is a postal code that contains multiple + * localities. + * @type {!Array|undefined} + */ +google.maps.GeocoderResult.prototype.postcode_localities; + +/** + * An array of strings denoting the type of the returned geocoded element. For a + * list of possible strings, refer to the + * Address Component Types section of the Developer's Guide. + * @type {!Array} + */ +google.maps.GeocoderResult.prototype.types; + +/** + * The status returned by the Geocoder on the completion of a call + * to geocode(). Specify these by value, or by using the + * constant's name. For example, 'OK' or + * google.maps.GeocoderStatus.OK. + * + * Access by calling `const {GeocoderStatus} = await + * google.maps.importLibrary("geocoding")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.GeocoderStatus = { + /** + * There was a problem contacting the Google servers. + */ + ERROR: 'ERROR', + /** + * This GeocoderRequest was invalid. + */ + INVALID_REQUEST: 'INVALID_REQUEST', + /** + * The response contains a valid GeocoderResponse. + */ + OK: 'OK', + /** + * The webpage has gone over the requests limit in too short a period of time. + */ + OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT', + /** + * The webpage is not allowed to use the geocoder. + */ + REQUEST_DENIED: 'REQUEST_DENIED', + /** + * A geocoding request could not be processed due to a server error. The + * request may succeed if you try again. + */ + UNKNOWN_ERROR: 'UNKNOWN_ERROR', + /** + * No result was found for this GeocoderRequest. + */ + ZERO_RESULTS: 'ZERO_RESULTS', +}; + +/** + * @record + */ +google.maps.GeocodingLibrary = function() {}; + +/** + * @type {typeof google.maps.Containment} + */ +google.maps.GeocodingLibrary.prototype.Containment; + +/** + * @type {typeof google.maps.ExtraGeocodeComputation} + */ +google.maps.GeocodingLibrary.prototype.ExtraGeocodeComputation; + +/** + * @type {typeof google.maps.Geocoder} + */ +google.maps.GeocodingLibrary.prototype.Geocoder; + +/** + * @type {typeof google.maps.GeocoderLocationType} + */ +google.maps.GeocodingLibrary.prototype.GeocoderLocationType; + +/** + * @type {typeof google.maps.GeocoderStatus} + */ +google.maps.GeocodingLibrary.prototype.GeocoderStatus; + +/** + * @type {typeof google.maps.SpatialRelationship} + */ +google.maps.GeocodingLibrary.prototype.SpatialRelationship; + +/** + * @record + */ +google.maps.GeometryLibrary = function() {}; + +/** + * @type {typeof google.maps.geometry.encoding} + */ +google.maps.GeometryLibrary.prototype.encoding; + +/** + * @type {typeof google.maps.geometry.poly} + */ +google.maps.GeometryLibrary.prototype.poly; + +/** + * @type {typeof google.maps.geometry.spherical} + */ +google.maps.GeometryLibrary.prototype.spherical; + +/** + * A rectangular image overlay on the map. + * + * Access by calling `const {GroundOverlay} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {string} url + * @param {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral} bounds + * @param {google.maps.GroundOverlayOptions=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.GroundOverlay = function(url, bounds, opts) {}; + +/** + * Gets the LatLngBounds of this overlay. + * @return {google.maps.LatLngBounds} + */ +google.maps.GroundOverlay.prototype.getBounds = function() {}; + +/** + * Returns the map on which this ground overlay is displayed. + * @return {google.maps.Map} + */ +google.maps.GroundOverlay.prototype.getMap = function() {}; + +/** + * Returns the opacity of this ground overlay. + * @return {number} + */ +google.maps.GroundOverlay.prototype.getOpacity = function() {}; + +/** + * Gets the url of the projected image. + * @return {string} + */ +google.maps.GroundOverlay.prototype.getUrl = function() {}; + +/** + * Renders the ground overlay on the specified map. If map is set to + * null, the overlay is removed. + * @param {google.maps.Map} map + * @return {undefined} + */ +google.maps.GroundOverlay.prototype.setMap = function(map) {}; + +/** + * Sets the opacity of this ground overlay. + * @param {number} opacity + * @return {undefined} + */ +google.maps.GroundOverlay.prototype.setOpacity = function(opacity) {}; + +/** + * This object defines the properties that can be set on a + * GroundOverlay object. + * @record + */ +google.maps.GroundOverlayOptions = function() {}; + +/** + * If true, the ground overlay can receive mouse events. + * @type {boolean|null|undefined} + */ +google.maps.GroundOverlayOptions.prototype.clickable; + +/** + * The map on which to display the overlay. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.GroundOverlayOptions.prototype.map; + +/** + * The opacity of the overlay, expressed as a number between 0 and 1. Optional. + * @default 1.0 + * @type {number|null|undefined} + */ +google.maps.GroundOverlayOptions.prototype.opacity; + +/** + * A structure representing a Marker icon image. + * @record + */ +google.maps.Icon = function() {}; + +/** + * The position at which to anchor an image in correspondence to the location of + * the marker on the map. By default, the anchor is located along the center + * point of the bottom of the image. + * @type {!google.maps.Point|null|undefined} + */ +google.maps.Icon.prototype.anchor; + +/** + * The origin of the label relative to the top-left corner of the icon image, if + * a label is supplied by the marker. By default, the origin is located in the + * center point of the image. + * @type {!google.maps.Point|null|undefined} + */ +google.maps.Icon.prototype.labelOrigin; + +/** + * The position of the image within a sprite, if any. By default, the origin is + * located at the top left corner of the image (0, 0). + * @type {!google.maps.Point|null|undefined} + */ +google.maps.Icon.prototype.origin; + +/** + * The size of the entire image after scaling, if any. Use this property to + * stretch/shrink an image or a sprite. + * @type {!google.maps.Size|null|undefined} + */ +google.maps.Icon.prototype.scaledSize; + +/** + * The display size of the sprite or image. When using sprites, you must specify + * the sprite size. If the size is not provided, it will be set when the image + * loads. + * @type {!google.maps.Size|null|undefined} + */ +google.maps.Icon.prototype.size; + +/** + * The URL of the image or sprite sheet. + * @type {string} + */ +google.maps.Icon.prototype.url; + +/** + * This object is sent in an event when a user clicks on an icon on the map. The + * place ID of this place is stored in the placeId member. To prevent the + * default info window from showing up, call the stop() method on this event to + * prevent it being propagated. Learn more about place + * IDs in the Places API developer guide. + * @extends {google.maps.MapMouseEvent} + * @record + */ +google.maps.IconMouseEvent = function() {}; + +/** + * The place ID of the place that was clicked. This place ID can be used to + * query more information about the feature that was clicked.

Learn more + * about place + * IDs in the Places API developer guide. + * @type {?string} + */ +google.maps.IconMouseEvent.prototype.placeId; + +/** + * Describes how icons are to be rendered on a line.

If your polyline + * is geodesic, then the distances specified for both offset and repeat are + * calculated in meters by default. Setting either offset or repeat to a pixel + * value will cause the distances to be calculated in pixels on the screen. + * @record + */ +google.maps.IconSequence = function() {}; + +/** + * If true, each icon in the sequence has the same fixed rotation + * regardless of the angle of the edge on which it lies. If false, + * case each icon in the sequence is rotated to align with its edge. + * @default false + * @type {boolean|undefined} + */ +google.maps.IconSequence.prototype.fixedRotation; + +/** + * The icon to render on the line. + * @type {!google.maps.Symbol|null|undefined} + */ +google.maps.IconSequence.prototype.icon; + +/** + * The distance from the start of the line at which an icon is to be rendered. + * This distance may be expressed as a percentage of line's length (e.g. + * '50%') or in pixels (e.g. '50px'). + * @default '100%' + * @type {string|undefined} + */ +google.maps.IconSequence.prototype.offset; + +/** + * The distance between consecutive icons on the line. This distance may be + * expressed as a percentage of the line's length (e.g. '50%') or in + * pixels (e.g. '50px'). To disable repeating of the icon, specify + * '0'. + * @default 0 + * @type {string|undefined} + */ +google.maps.IconSequence.prototype.repeat; + +/** + * This class implements the MapType interface and is provided for rendering + * image tiles. + * + * Access by calling `const {ImageMapType} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {google.maps.ImageMapTypeOptions} opts + * @implements {google.maps.MapType} + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.ImageMapType = function(opts) {}; + +/** + * @type {?string} + */ +google.maps.ImageMapType.prototype.alt; + +/** + * @type {number} + */ +google.maps.ImageMapType.prototype.maxZoom; + +/** + * @type {number} + */ +google.maps.ImageMapType.prototype.minZoom; + +/** + * @type {?string} + */ +google.maps.ImageMapType.prototype.name; + +/** + * @type {google.maps.Projection} + */ +google.maps.ImageMapType.prototype.projection; + +/** + * @type {number} + */ +google.maps.ImageMapType.prototype.radius; + +/** + * @type {google.maps.Size} + */ +google.maps.ImageMapType.prototype.tileSize; + +/** + * Returns the opacity level (0 (transparent) to 1.0) + * of the ImageMapType tiles. + * @return {number} opacity The current opacity. + */ +google.maps.ImageMapType.prototype.getOpacity = function() {}; + +/** + * @param {google.maps.Point} tileCoord Tile coordinates. + * @param {number} zoom Tile zoom. + * @param {Document} ownerDocument The document which owns this tile. + * @return {?Element} Resulting tile. + * @override + */ +google.maps.ImageMapType.prototype.getTile = function( + tileCoord, zoom, ownerDocument) {}; + +/** + * @param {?Element} tileDiv Tile to release. + * @return {undefined} + * @override + */ +google.maps.ImageMapType.prototype.releaseTile = function(tileDiv) {}; + +/** + * Sets the opacity level (0 (transparent) to 1.0) of + * the ImageMapType tiles. + * @param {number} opacity The new opacity. + * @return {undefined} + */ +google.maps.ImageMapType.prototype.setOpacity = function(opacity) {}; + +/** + * This class is used to create a MapType that renders image tiles. + * @record + */ +google.maps.ImageMapTypeOptions = function() {}; + +/** + * Alt text to display when this MapType's button is hovered over in the + * MapTypeControl. + * @type {string|null|undefined} + */ +google.maps.ImageMapTypeOptions.prototype.alt; + +/** + * Returns a string (URL) for given tile coordinate (x, y) and zoom level. + * @type {(function(!google.maps.Point, number): (string|null))|null|undefined} + */ +google.maps.ImageMapTypeOptions.prototype.getTileUrl; + +/** + * The maximum zoom level for the map when displaying this MapType. + * @type {number|null|undefined} + */ +google.maps.ImageMapTypeOptions.prototype.maxZoom; + +/** + * The minimum zoom level for the map when displaying this MapType. Optional. + * @type {number|null|undefined} + */ +google.maps.ImageMapTypeOptions.prototype.minZoom; + +/** + * Name to display in the MapTypeControl. + * @type {string|null|undefined} + */ +google.maps.ImageMapTypeOptions.prototype.name; + +/** + * The opacity to apply to the tiles. The opacity should be specified as a float + * value between 0 and 1.0, where 0 is fully transparent and 1 is fully opaque. + * @type {number|null|undefined} + */ +google.maps.ImageMapTypeOptions.prototype.opacity; + +/** + * The tile size. + * @type {!google.maps.Size|null|undefined} + */ +google.maps.ImageMapTypeOptions.prototype.tileSize; + +/** + * An overlay that looks like a bubble and is often connected to a marker. + * + * Access by calling `const {InfoWindow} = await + * google.maps.importLibrary("maps")` or `const {InfoWindow} = await + * google.maps.importLibrary("streetView")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {(!google.maps.InfoWindowOptions|null)=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.InfoWindow = function(opts) {}; + +/** + * Checks if the InfoWindow is open. + * @type {boolean} + */ +google.maps.InfoWindow.prototype.isOpen; + +/** + * Closes this InfoWindow by removing it from the DOM structure. + * @return {undefined} + */ +google.maps.InfoWindow.prototype.close = function() {}; + +/** + * Sets focus on this InfoWindow. You may wish to consider using + * this method along with a visible event to make sure that + * InfoWindow is visible before setting focus on it. An + * InfoWindow that is not visible cannot be focused. + * @return {undefined} + */ +google.maps.InfoWindow.prototype.focus = function() {}; + +/** + * @return {string|!Element|!Text|null|undefined} The content of this + * InfoWindow. The same as what was previously set as the content. + */ +google.maps.InfoWindow.prototype.getContent = function() {}; + +/** + * @return {string|!Element|!Text|null|undefined} The header content of this + * InfoWindow. See {@link google.maps.InfoWindowOptions.headerContent}. + */ +google.maps.InfoWindow.prototype.getHeaderContent = function() {}; + +/** + * @return {boolean|undefined} Whether the whole header row is disabled or not. + * See {@link google.maps.InfoWindowOptions.headerDisabled}. + */ +google.maps.InfoWindow.prototype.getHeaderDisabled = function() {}; + +/** + * @return {!google.maps.LatLng|null|undefined} The LatLng position of this + * InfoWindow. + */ +google.maps.InfoWindow.prototype.getPosition = function() {}; + +/** + * @return {number} The zIndex of this InfoWindow. + */ +google.maps.InfoWindow.prototype.getZIndex = function() {}; + +/** + * Opens this InfoWindow on the given map. Optionally, an InfoWindow can be + * associated with an anchor. In the core API, the only anchor is the Marker + * class. However, an anchor can be any MVCObject that exposes a LatLng + * position property and optionally a Point + * anchorPoint property for calculating the + * pixelOffset (see InfoWindowOptions). The + * anchorPoint is the offset from the anchor's position to the + * tip of the InfoWindow. It is recommended to use the {@link + * google.maps.InfoWindowOpenOptions} interface as the single argument for this + * method. To prevent changing browser focus on open, set {@link + * google.maps.InfoWindowOpenOptions.shouldFocus} to false. + * @param {(!google.maps.InfoWindowOpenOptions|!google.maps.Map|!google.maps.StreetViewPanorama|null)=} + * options Either an InfoWindowOpenOptions object (recommended) or the + * map|panorama on which to render this InfoWindow. + * @param {(!google.maps.MVCObject|!google.maps.marker.AdvancedMarkerElement|null)=} + * anchor The anchor to which this InfoWindow will be positioned. If the + * anchor is non-null, the InfoWindow will be positioned at the top-center + * of the anchor. The InfoWindow will be rendered on the same map or + * panorama as the anchor (when available). + * @return {undefined} + */ +google.maps.InfoWindow.prototype.open = function(options, anchor) {}; + +/** + * @param {(string|!Element|!Text|null)=} content The content to be displayed by + * this InfoWindow. + * @return {undefined} + */ +google.maps.InfoWindow.prototype.setContent = function(content) {}; + +/** + * @param {(string|!Element|!Text|null)=} headerContent The header content to be + * displayed by this InfoWindow. See {@link + * google.maps.InfoWindowOptions.headerContent}. + * @return {undefined} + */ +google.maps.InfoWindow.prototype.setHeaderContent = function(headerContent) {}; + +/** + * @param {(boolean|null)=} headerDisabled Specifies whether to disable the + * whole header row. See {@link + * google.maps.InfoWindowOptions.headerDisabled}. + * @return {undefined} + */ +google.maps.InfoWindow.prototype.setHeaderDisabled = function( + headerDisabled) {}; + +/** + * @param {(!google.maps.InfoWindowOptions|null)=} options + * @return {undefined} + */ +google.maps.InfoWindow.prototype.setOptions = function(options) {}; + +/** + * @param {(!google.maps.LatLng|!google.maps.LatLngLiteral|null)=} position The + * LatLng position at which to display this InfoWindow. + * @return {undefined} + */ +google.maps.InfoWindow.prototype.setPosition = function(position) {}; + +/** + * @param {number} zIndex The z-index for this InfoWindow. An InfoWindow with a + * greater z-index will be displayed in front of all other InfoWindows with + * a lower z-index. + * @return {undefined} + */ +google.maps.InfoWindow.prototype.setZIndex = function(zIndex) {}; + +/** + * Options for opening an InfoWindow + * @record + */ +google.maps.InfoWindowOpenOptions = function() {}; + +/** + * The anchor to which this InfoWindow will be positioned. If the anchor is + * non-null, the InfoWindow will be positioned at the top-center of the anchor. + * The InfoWindow will be rendered on the same map or panorama as the anchor + * (when available). + * @type {!google.maps.MVCObject|!google.maps.marker.AdvancedMarkerElement|null|undefined} + */ +google.maps.InfoWindowOpenOptions.prototype.anchor; + +/** + * The map or panorama on which to render this InfoWindow. + * @type {!google.maps.Map|!google.maps.StreetViewPanorama|null|undefined} + */ +google.maps.InfoWindowOpenOptions.prototype.map; + +/** + * Whether or not focus should be moved inside the InfoWindow when it is opened. + * When this property is unset or when it is set to null or + * undefined, a heuristic is used to decide whether or not focus + * should be moved. It is recommended to explicitly set this property to fit + * your needs as the heuristic is subject to change and may not work well for + * all use cases. + * @type {boolean|null|undefined} + */ +google.maps.InfoWindowOpenOptions.prototype.shouldFocus; + +/** + * InfoWindowOptions object used to define the properties that can be set on a + * InfoWindow. + * @record + */ +google.maps.InfoWindowOptions = function() {}; + +/** + * AriaLabel to assign to the InfoWindow. + * @type {string|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.ariaLabel; + +/** + * Content to display in the InfoWindow. This can be an HTML element, a + * plain-text string, or a string containing HTML. The InfoWindow will be sized + * according to the content. To set an explicit size for the content, set + * content to be a HTML element with that size. + * @type {string|!Element|!Text|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.content; + +/** + * Disable panning the map to make the InfoWindow fully visible when it opens. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.disableAutoPan; + +/** + * The content to display in the InfoWindow header row. This can be an HTML + * element, or a string of plain text. The InfoWindow will be sized according to + * the content. To set an explicit size for the header content, set + * headerContent to be a HTML element with that size. + * @type {string|!Element|!Text|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.headerContent; + +/** + * Disables the whole header row in the InfoWindow. When set to true, the header + * will be removed so that the header content and the close button will be + * hidden. + * @type {boolean|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.headerDisabled; + +/** + * Maximum width of the InfoWindow, regardless of content's width. This + * value is only considered if it is set before a call to open(). + * To change the maximum width when changing content, call close(), + * setOptions(), and then open(). + * @type {number|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.maxWidth; + +/** + * Minimum width of the InfoWindow, regardless of the content's width. When + * using this property, it is strongly recommended to set the + * minWidth to a value less than the width of the map (in pixels). + * This value is only considered if it is set before a call to + * open(). To change the minimum width when changing content, call + * close(), setOptions(), and then + * open(). + * @type {number|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.minWidth; + +/** + * The offset, in pixels, of the tip of the info window from the point on the + * map at whose geographical coordinates the info window is anchored. If an + * InfoWindow is opened with an anchor, the pixelOffset will be + * calculated from the anchor's anchorPoint property. + * @type {!google.maps.Size|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.pixelOffset; + +/** + * The LatLng at which to display this InfoWindow. If the InfoWindow is opened + * with an anchor, the anchor's position will be used instead. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.position; + +/** + * All InfoWindows are displayed on the map in order of their zIndex, with + * higher values displaying in front of InfoWindows with lower values. By + * default, InfoWindows are displayed according to their latitude, with + * InfoWindows of lower latitudes appearing in front of InfoWindows at higher + * latitudes. InfoWindows are always displayed in front of markers. + * @type {number|null|undefined} + */ +google.maps.InfoWindowOptions.prototype.zIndex; + +/** + * @record + */ +google.maps.JourneySharingLibrary = function() {}; + +/** + * @type {typeof google.maps.journeySharing.AutomaticViewportMode} + */ +google.maps.JourneySharingLibrary.prototype.AutomaticViewportMode; + +/** + * @type {typeof google.maps.journeySharing.DeliveryVehicleStopState} + */ +google.maps.JourneySharingLibrary.prototype.DeliveryVehicleStopState; + +/** + * @type {typeof + * google.maps.journeySharing.FleetEngineDeliveryFleetLocationProvider} + */ +google.maps.JourneySharingLibrary.prototype + .FleetEngineDeliveryFleetLocationProvider; + +/** + * @type {typeof + * google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider} + */ +google.maps.JourneySharingLibrary.prototype + .FleetEngineDeliveryVehicleLocationProvider; + +/** + * @type {typeof google.maps.journeySharing.FleetEngineFleetLocationProvider} + */ +google.maps.JourneySharingLibrary.prototype.FleetEngineFleetLocationProvider; + +/** + * @type {typeof google.maps.journeySharing.FleetEngineServiceType} + */ +google.maps.JourneySharingLibrary.prototype.FleetEngineServiceType; + +/** + * @type {typeof google.maps.journeySharing.FleetEngineShipmentLocationProvider} + */ +google.maps.JourneySharingLibrary.prototype.FleetEngineShipmentLocationProvider; + +/** + * @type {typeof google.maps.journeySharing.FleetEngineTripLocationProvider} + */ +google.maps.JourneySharingLibrary.prototype.FleetEngineTripLocationProvider; + +/** + * @type {typeof google.maps.journeySharing.FleetEngineVehicleLocationProvider} + */ +google.maps.JourneySharingLibrary.prototype.FleetEngineVehicleLocationProvider; + +/** + * @type {typeof google.maps.journeySharing.JourneySharingMapView} + */ +google.maps.JourneySharingLibrary.prototype.JourneySharingMapView; + +/** + * @type {typeof google.maps.journeySharing.Speed} + */ +google.maps.JourneySharingLibrary.prototype.Speed; + +/** + * @type {typeof google.maps.journeySharing.TripType} + */ +google.maps.JourneySharingLibrary.prototype.TripType; + +/** + * @type {typeof google.maps.journeySharing.VehicleNavigationStatus} + */ +google.maps.JourneySharingLibrary.prototype.VehicleNavigationStatus; + +/** + * @type {typeof google.maps.journeySharing.VehicleState} + */ +google.maps.JourneySharingLibrary.prototype.VehicleState; + +/** + * @type {typeof google.maps.journeySharing.VehicleType} + */ +google.maps.JourneySharingLibrary.prototype.VehicleType; + +/** + * @type {typeof google.maps.journeySharing.WaypointType} + */ +google.maps.JourneySharingLibrary.prototype.WaypointType; + +/** + * Contains details of the author of a KML document or feature. + * @record + */ +google.maps.KmlAuthor = function() {}; + +/** + * The author's e-mail address, or an empty string if not specified. + * @type {string} + */ +google.maps.KmlAuthor.prototype.email; + +/** + * The author's name, or an empty string if not specified. + * @type {string} + */ +google.maps.KmlAuthor.prototype.name; + +/** + * The author's home page, or an empty string if not specified. + * @type {string} + */ +google.maps.KmlAuthor.prototype.uri; + +/** + * Data for a single KML feature in JSON format, returned when a KML feature is + * clicked. The data contained in this object mirrors that associated with the + * feature in the KML or GeoRSS markup in which it is declared. + * @record + */ +google.maps.KmlFeatureData = function() {}; + +/** + * The feature's <atom:author>, extracted from the layer + * markup (if specified). + * @type {!google.maps.KmlAuthor} + */ +google.maps.KmlFeatureData.prototype.author; + +/** + * The feature's <description>, extracted from the layer + * markup. + * @type {string} + */ +google.maps.KmlFeatureData.prototype.description; + +/** + * The feature's <id>, extracted from the layer markup. + * If no <id> has been specified, a unique ID will be + * generated for this feature. + * @type {string} + */ +google.maps.KmlFeatureData.prototype.id; + +/** + * The feature's balloon styled text, if set. + * @type {string} + */ +google.maps.KmlFeatureData.prototype.infoWindowHtml; + +/** + * The feature's <name>, extracted from the layer markup. + * @type {string} + */ +google.maps.KmlFeatureData.prototype.name; + +/** + * The feature's <Snippet>, extracted from the layer + * markup. + * @type {string} + */ +google.maps.KmlFeatureData.prototype.snippet; + +/** + * A KmlLayer adds geographic markup to the map from a KML, KMZ or + * GeoRSS file that is hosted on a publicly accessible web server. A + * KmlFeatureData object is provided for each feature when clicked. + * + * Access by calling `const {KmlLayer} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {google.maps.KmlLayerOptions=} opts Options for this layer. + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.KmlLayer = function(opts) {}; + +/** + * Get the default viewport for the layer being displayed. + * @return {google.maps.LatLngBounds} + */ +google.maps.KmlLayer.prototype.getDefaultViewport = function() {}; + +/** + * Get the map on which the KML Layer is being rendered. + * @return {google.maps.Map} + */ +google.maps.KmlLayer.prototype.getMap = function() {}; + +/** + * Get the metadata associated with this layer, as specified in the layer + * markup. + * @return {google.maps.KmlLayerMetadata} + */ +google.maps.KmlLayer.prototype.getMetadata = function() {}; + +/** + * Get the status of the layer, set once the requested document has loaded. + * @return {google.maps.KmlLayerStatus} + */ +google.maps.KmlLayer.prototype.getStatus = function() {}; + +/** + * Gets the URL of the KML file being displayed. + * @return {string} URL + */ +google.maps.KmlLayer.prototype.getUrl = function() {}; + +/** + * Gets the z-index of the KML Layer. + * @return {number} The z-index. + */ +google.maps.KmlLayer.prototype.getZIndex = function() {}; + +/** + * Renders the KML Layer on the specified map. If map is set to + * null, the layer is removed. + * @param {google.maps.Map} map + * @return {undefined} + */ +google.maps.KmlLayer.prototype.setMap = function(map) {}; + +/** + * @param {google.maps.KmlLayerOptions} options + * @return {undefined} + */ +google.maps.KmlLayer.prototype.setOptions = function(options) {}; + +/** + * Sets the URL of the KML file to display. + * @param {string} url + * @return {undefined} + */ +google.maps.KmlLayer.prototype.setUrl = function(url) {}; + +/** + * Sets the z-index of the KML Layer. + * @param {number} zIndex The z-index to set. + * @return {undefined} + */ +google.maps.KmlLayer.prototype.setZIndex = function(zIndex) {}; + +/** + * Metadata for a single KML layer, in JSON format. + * @record + */ +google.maps.KmlLayerMetadata = function() {}; + +/** + * The layer's <atom:author>, extracted from the layer + * markup. + * @type {!google.maps.KmlAuthor|null} + */ +google.maps.KmlLayerMetadata.prototype.author; + +/** + * The layer's <description>, extracted from the layer + * markup. + * @type {string} + */ +google.maps.KmlLayerMetadata.prototype.description; + +/** + * Whether the layer has any screen overlays. + * @type {boolean} + */ +google.maps.KmlLayerMetadata.prototype.hasScreenOverlays; + +/** + * The layer's <name>, extracted from the layer markup. + * @type {string} + */ +google.maps.KmlLayerMetadata.prototype.name; + +/** + * The layer's <Snippet>, extracted from the layer markup + * @type {string} + */ +google.maps.KmlLayerMetadata.prototype.snippet; + +/** + * This object defines the properties that can be set on a KmlLayer + * object. + * @record + */ +google.maps.KmlLayerOptions = function() {}; + +/** + * If true, the layer receives mouse events. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.KmlLayerOptions.prototype.clickable; + +/** + * The map on which to display the layer. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.KmlLayerOptions.prototype.map; + +/** + * If this option is set to true or if the map's center and + * zoom were never set, the input map is centered and zoomed to the bounding box + * of the contents of the layer. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.KmlLayerOptions.prototype.preserveViewport; + +/** + * Whether to render the screen overlays. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.KmlLayerOptions.prototype.screenOverlays; + +/** + * Suppress the rendering of info windows when layer features are clicked. + * @type {boolean|null|undefined} + */ +google.maps.KmlLayerOptions.prototype.suppressInfoWindows; + +/** + * The URL of the KML document to display. + * @type {string|null|undefined} + */ +google.maps.KmlLayerOptions.prototype.url; + +/** + * The z-index of the layer. + * @type {number|null|undefined} + */ +google.maps.KmlLayerOptions.prototype.zIndex; + +/** + * The status returned by KmlLayer on the completion of loading a + * document. Specify these by value, or by using the constant's name. For + * example, 'OK' or google.maps.KmlLayerStatus.OK. + * + * Access by calling `const {KmlLayerStatus} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.KmlLayerStatus = { + /** + * The document could not be found. Most likely it is an invalid URL, or the + * document is not publicly available. + */ + DOCUMENT_NOT_FOUND: 'DOCUMENT_NOT_FOUND', + /** + * The document exceeds the file size limits of KmlLayer. + */ + DOCUMENT_TOO_LARGE: 'DOCUMENT_TOO_LARGE', + /** + * The document could not be fetched. + */ + FETCH_ERROR: 'FETCH_ERROR', + /** + * The document is not a valid KML, KMZ or GeoRSS document. + */ + INVALID_DOCUMENT: 'INVALID_DOCUMENT', + /** + * The KmlLayer is invalid. + */ + INVALID_REQUEST: 'INVALID_REQUEST', + /** + * The document exceeds the feature limits of KmlLayer. + */ + LIMITS_EXCEEDED: 'LIMITS_EXCEEDED', + /** + * The layer loaded successfully. + */ + OK: 'OK', + /** + * The document could not be loaded within a reasonable amount of time. + */ + TIMED_OUT: 'TIMED_OUT', + /** + * The document failed to load for an unknown reason. + */ + UNKNOWN: 'UNKNOWN', +}; + +/** + * The properties of a click event on a KML/KMZ or GeoRSS document. + * @record + */ +google.maps.KmlMouseEvent = function() {}; + +/** + * A KmlFeatureData object, containing information about the + * clicked feature. + * @type {google.maps.KmlFeatureData} + */ +google.maps.KmlMouseEvent.prototype.featureData; + +/** + * The position at which to anchor an infowindow on the clicked feature. + * @type {google.maps.LatLng} + */ +google.maps.KmlMouseEvent.prototype.latLng; + +/** + * The offset to apply to an infowindow anchored on the clicked feature. + * @type {google.maps.Size} + */ +google.maps.KmlMouseEvent.prototype.pixelOffset; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * A place that represents a point of reference for the address. + * @record + */ +google.maps.Landmark = function() {}; + +/** + * The name for the landmark. + * @type {string} + */ +google.maps.Landmark.prototype.display_name; + +/** + * The language of the name for the landmark. + * @type {string} + */ +google.maps.Landmark.prototype.display_name_language_code; + +/** + * The Place ID of the underlying establishment serving as the landmark. Can be + * used to resolve more information about the landmark through Place Details or + * Place Id Lookup. + * @type {string} + */ +google.maps.Landmark.prototype.place_id; + +/** + * Defines the spatial relationship between the target location and the + * landmark. + * @type {!google.maps.SpatialRelationship} + */ +google.maps.Landmark.prototype.spatial_relationship; + +/** + * The straight line distance between the target location and the landmark. + * @type {number} + */ +google.maps.Landmark.prototype.straight_line_distance_meters; + +/** + * The travel distance along the road network between the target location and + * the landmark. This can be unpopulated if the landmark is disconnected from + * the part of the road network the target is closest to OR if the target + * location was not actually considered to be on the road network. + * @type {number|undefined} + */ +google.maps.Landmark.prototype.travel_distance_meters; + +/** + * One or more values indicating the type of the returned result. Please see Types + * for more detail. + * @type {!Array} + */ +google.maps.Landmark.prototype.types; + +/** + * A LatLng is a point in geographical coordinates: latitude and + * longitude.

  • Latitude ranges between -90 and 90 degrees, + * inclusive. Values above or below this range will be clamped to the range + * [-90, 90]. This means that if the value specified is less than -90, it will + * be set to -90. And if the value is greater than 90, it will be set + * to 90.
  • Longitude ranges between -180 and 180 degrees, inclusive. + * Values above or below this range will be wrapped so that they fall within the + * range. For example, a value of -190 will be converted to 170. A value of 190 + * will be converted to -170. This reflects the fact that longitudes wrap around + * the globe.
Although the default map projection associates + * longitude with the x-coordinate of the map, and latitude with the + * y-coordinate, the latitude coordinate is always written first, + * followed by the longitude.
Notice that you cannot modify the coordinates + * of a LatLng. If you want to compute another point, you have to + * create a new one.

Most methods that accept LatLng + * objects also accept a {@link google.maps.LatLngLiteral} object, so that the + * following are equivalent:

 map.setCenter(new google.maps.LatLng(-34,
+ * 151));
map.setCenter({lat: -34, lng: 151});

The constructor + * also accepts {@link google.maps.LatLngLiteral} and LatLng + * objects. If a LatLng instance is passed to the constructor, a + * copy is created.

The possible calls to the constructor are below:

+ * new google.maps.LatLng(-34, 151);
new google.maps.LatLng(-34, 151, + * true);
new google.maps.LatLng({lat: -34, lng: 151});
new + * google.maps.LatLng({lat: -34, lng: 151}, true);
new + * google.maps.LatLng(new google.maps.LatLng(-34, 151));
new + * google.maps.LatLng(new google.maps.LatLng(-34, 151), true);
+ * + * Access by calling `const {LatLng} = await google.maps.importLibrary("core")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {number|!google.maps.LatLngLiteral|!google.maps.LatLng} + * latOrLatLngOrLatLngLiteral + * @param {?(number|boolean)=} lngOrNoClampNoWrap + * @param {boolean=} noClampNoWrap + * @constructor + */ +google.maps.LatLng = function( + latOrLatLngOrLatLngLiteral, lngOrNoClampNoWrap, noClampNoWrap) {}; + +/** + * Comparison function. + * @param {google.maps.LatLng} other + * @return {boolean} + */ +google.maps.LatLng.prototype.equals = function(other) {}; + +/** + * Returns the latitude in degrees. + * @return {number} + */ +google.maps.LatLng.prototype.lat = function() {}; + +/** + * Returns the longitude in degrees. + * @return {number} + */ +google.maps.LatLng.prototype.lng = function() {}; + +/** + * Converts to JSON representation. This function is intended to be used via + * JSON.stringify. + * @return {!google.maps.LatLngLiteral} + * @override + */ +google.maps.LatLng.prototype.toJSON = function() {}; + +/** + * Converts to string representation. + * @return {string} + * @override + */ +google.maps.LatLng.prototype.toString = function() {}; + +/** + * Returns a string of the form "lat,lng" for this LatLng. We round + * the lat/lng values to 6 decimal places by default. + * @param {number=} precision + * @return {string} + */ +google.maps.LatLng.prototype.toUrlValue = function(precision) {}; + +/** + * A LatLngAltitude is a 3D point in geographical coordinates: + * latitude, longitude, and altitude.
  • Latitude ranges between -90 + * and 90 degrees, inclusive. Values above or below this range will be clamped + * to the range [-90, 90]. This means that if the value specified is less than + * -90, it will be set to -90. And if the value is greater than 90, it will be + * set to 90.
  • Longitude ranges between -180 and 180 degrees, inclusive. + * Values above or below this range will be wrapped so that they fall within the + * range. For example, a value of -190 will be converted to 170. A value of 190 + * will be converted to -170. This reflects the fact that longitudes wrap around + * the globe.
  • Altitude is measured in meters. Positive values denote + * heights above ground level, and negative values denote heights underneath the + * ground surface.
+ * + * Access by calling `const {LatLngAltitude} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|!google.maps.LatLng|!google.maps.LatLngLiteral} + * value The initializing value. + * @param {boolean=} noClampNoWrap Whether to preserve the initialization + * values, even if they may not necessarily be valid latitude values in the + * range of [-90, 90] or valid longitude values in the range of [-180, 180]. + * The default is false which enables latitude clamping and + * longitude wrapping. + * @implements {google.maps.LatLngAltitudeLiteral} + * @implements {google.maps.LatLngLiteral} + * @constructor + */ +google.maps.LatLngAltitude = function(value, noClampNoWrap) {}; + +/** + * Returns the altitude. + * @type {number} + */ +google.maps.LatLngAltitude.prototype.altitude; + +/** + * Returns the latitude. + * @type {number} + */ +google.maps.LatLngAltitude.prototype.lat; + +/** + * Returns the longitude. + * @type {number} + */ +google.maps.LatLngAltitude.prototype.lng; + +/** + * Comparison function. + * @param {!google.maps.LatLngAltitude|null} other Another LatLngAltitude + * object. + * @return {boolean} Whether the two objects are equal. + */ +google.maps.LatLngAltitude.prototype.equals = function(other) {}; + +/** + * @return {!google.maps.LatLngAltitudeLiteral} A JSON representation of this + * object. + * @override + */ +google.maps.LatLngAltitude.prototype.toJSON = function() {}; + +/** + * Object literals are accepted in place of LatLngAltitude objects, + * as a convenience, in many places. These are converted to + * LatLngAltitude objects when the Maps API encounters them. + * @extends {google.maps.LatLngLiteral} + * @record + */ +google.maps.LatLngAltitudeLiteral = function() {}; + +/** + * Distance (in meters) above the ground surface. Negative value means + * underneath the ground surface. + * @default 0 + * @type {number} + */ +google.maps.LatLngAltitudeLiteral.prototype.altitude; + +/** + * Latitude in degrees. Values will be clamped to the range [-90, 90]. This + * means that if the value specified is less than -90, it will be set to -90. + * And if the value is greater than 90, it will be set to 90. + * @type {number} + */ +google.maps.LatLngAltitudeLiteral.prototype.lat; + +/** + * Longitude in degrees. Values outside the range [-180, 180] will be wrapped so + * that they fall within the range. For example, a value of -190 will be + * converted to 170. A value of 190 will be converted to -170. This reflects the + * fact that longitudes wrap around the globe. + * @type {number} + */ +google.maps.LatLngAltitudeLiteral.prototype.lng; + +/** + * A LatLngBounds instance represents a + * rectangle in geographical coordinates, including one that crosses the 180 + * degrees longitudinal meridian. + * + * Access by calling `const {LatLngBounds} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {(google.maps.LatLng|google.maps.LatLngLiteral|google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null)=} + * swOrLatLngBounds + * @param {(google.maps.LatLng|google.maps.LatLngLiteral|null)=} ne + * @constructor + */ +google.maps.LatLngBounds = function(swOrLatLngBounds, ne) {}; + +/** + * Returns true if the given lat/lng is in this bounds. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} latLng + * @return {boolean} + */ +google.maps.LatLngBounds.prototype.contains = function(latLng) {}; + +/** + * Returns true if this bounds approximately equals the given + * bounds. + * @param {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null} other + * @return {boolean} + */ +google.maps.LatLngBounds.prototype.equals = function(other) {}; + +/** + * Extends this bounds to contain the given point. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} point + * @return {!google.maps.LatLngBounds} + */ +google.maps.LatLngBounds.prototype.extend = function(point) {}; + +/** + * Computes the center of this LatLngBounds + * @return {!google.maps.LatLng} + */ +google.maps.LatLngBounds.prototype.getCenter = function() {}; + +/** + * Returns the north-east corner of this bounds. + * @return {!google.maps.LatLng} + */ +google.maps.LatLngBounds.prototype.getNorthEast = function() {}; + +/** + * Returns the south-west corner of this bounds. + * @return {!google.maps.LatLng} + */ +google.maps.LatLngBounds.prototype.getSouthWest = function() {}; + +/** + * Returns true if this bounds shares any points with the other + * bounds. + * @param {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral} other + * @return {boolean} + */ +google.maps.LatLngBounds.prototype.intersects = function(other) {}; + +/** + * Returns if the bounds are empty. + * @return {boolean} + */ +google.maps.LatLngBounds.prototype.isEmpty = function() {}; + +/** + * Converts to JSON representation. This function is intended to be used via + * JSON.stringify. + * @return {!google.maps.LatLngBoundsLiteral} + * @override + */ +google.maps.LatLngBounds.prototype.toJSON = function() {}; + +/** + * Converts the given map bounds to a lat/lng span. + * @return {!google.maps.LatLng} + */ +google.maps.LatLngBounds.prototype.toSpan = function() {}; + +/** + * Converts to string. + * @return {string} + * @override + */ +google.maps.LatLngBounds.prototype.toString = function() {}; + +/** + * Returns a string of the form "lat_lo,lng_lo,lat_hi,lng_hi" for this + * bounds, where "lo" corresponds to the southwest corner of the + * bounding box, while "hi" corresponds to the northeast corner of + * that box. + * @param {number=} precision + * @return {string} + */ +google.maps.LatLngBounds.prototype.toUrlValue = function(precision) {}; + +/** + * Extends this bounds to contain the union of this and the given bounds. + * @param {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral} other + * @return {!google.maps.LatLngBounds} + */ +google.maps.LatLngBounds.prototype.union = function(other) {}; + +/** + * LatLngBounds for the max bounds of the Earth. These bounds will encompass the + * entire globe. + * @const + * @type {!google.maps.LatLngBounds} + */ +google.maps.LatLngBounds.MAX_BOUNDS; + +/** + * Object literals are accepted in place of LatLngBounds objects + * throughout the API. These are automatically converted to + * LatLngBounds objects. All south, west, + * north and east must be set, otherwise an exception + * is thrown. + * @record + */ +google.maps.LatLngBoundsLiteral = function() {}; + +/** + * East longitude in degrees. Values outside the range [-180, 180] will be + * wrapped to the range [-180, 180). For example, a value of -190 will be + * converted to 170. A value of 190 will be converted to -170. This reflects the + * fact that longitudes wrap around the globe. + * @type {number} + */ +google.maps.LatLngBoundsLiteral.prototype.east; + +/** + * North latitude in degrees. Values will be clamped to the range [-90, 90]. + * This means that if the value specified is less than -90, it will be set to + * -90. And if the value is greater than 90, it will be set to 90. + * @type {number} + */ +google.maps.LatLngBoundsLiteral.prototype.north; + +/** + * South latitude in degrees. Values will be clamped to the range [-90, 90]. + * This means that if the value specified is less than -90, it will be set to + * -90. And if the value is greater than 90, it will be set to 90. + * @type {number} + */ +google.maps.LatLngBoundsLiteral.prototype.south; + +/** + * West longitude in degrees. Values outside the range [-180, 180] will be + * wrapped to the range [-180, 180). For example, a value of -190 will be + * converted to 170. A value of 190 will be converted to -170. This reflects the + * fact that longitudes wrap around the globe. + * @type {number} + */ +google.maps.LatLngBoundsLiteral.prototype.west; + +/** + * Object literals are accepted in place of LatLng objects, as a + * convenience, in many places. These are converted to LatLng + * objects when the Maps API encounters them.

Examples:

+ * map.setCenter({lat: -34, lng: 151});
new + * google.maps.Marker({position: {lat: -34, lng: 151}, map: map});

LatLng object literals are not supported in the Geometry + * library.

+ * @record + */ +google.maps.LatLngLiteral = function() {}; + +/** + * Latitude in degrees. Values will be clamped to the range [-90, 90]. This + * means that if the value specified is less than -90, it will be set to -90. + * And if the value is greater than 90, it will be set to 90. + * @type {number} + */ +google.maps.LatLngLiteral.prototype.lat; + +/** + * Longitude in degrees. Values outside the range [-180, 180] will be wrapped so + * that they fall within the range. For example, a value of -190 will be + * converted to 170. A value of 190 will be converted to -170. This reflects the + * fact that longitudes wrap around the globe. + * @type {number} + */ +google.maps.LatLngLiteral.prototype.lng; + +/** + * An elevation request sent by the ElevationService containing the + * list of discrete coordinates (LatLngs) for which to return + * elevation data. + * @record + */ +google.maps.LocationElevationRequest = function() {}; + +/** + * The discrete locations for which to retrieve elevations. + * @type {!Array|null|undefined} + */ +google.maps.LocationElevationRequest.prototype.locations; + +/** + * An elevation response returned by the {@link google.maps.ElevationService} + * containing the list of {@link google.maps.ElevationResult}s matching the + * locations of the {@link google.maps.LocationElevationRequest}. + * @record + */ +google.maps.LocationElevationResponse = function() {}; + +/** + * The list of {@link google.maps.ElevationResult}s matching the locations of + * the {@link google.maps.LocationElevationRequest}. + * @type {!Array} + */ +google.maps.LocationElevationResponse.prototype.results; + +/** + * + * Access by calling `const {MVCArray} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {Array=} array + * @extends {google.maps.MVCObject} + * @template T + * @constructor + */ +google.maps.MVCArray = function(array) {}; + +/** + * Removes all elements from the array. + * @return {undefined} + */ +google.maps.MVCArray.prototype.clear = function() {}; + +/** + * Iterate over each element, calling the provided callback. The callback is + * called for each element like: callback(element, index). + * @param {function(T, number): void} callback + * @return {undefined} + */ +google.maps.MVCArray.prototype.forEach = function(callback) {}; + +/** + * Returns a reference to the underlying Array. Warning: if the Array is + * mutated, no events will be fired by this object. + * @return {!Array} + */ +google.maps.MVCArray.prototype.getArray = function() {}; + +/** + * Returns the element at the specified index. + * @param {number} i + * @return {T} + */ +google.maps.MVCArray.prototype.getAt = function(i) {}; + +/** + * Returns the number of elements in this array. + * @return {number} + */ +google.maps.MVCArray.prototype.getLength = function() {}; + +/** + * Inserts an element at the specified index. + * @param {number} i + * @param {T} elem + * @return {undefined} + */ +google.maps.MVCArray.prototype.insertAt = function(i, elem) {}; + +/** + * Removes the last element of the array and returns that element. + * @return {T} + */ +google.maps.MVCArray.prototype.pop = function() {}; + +/** + * Adds one element to the end of the array and returns the new length of the + * array. + * @param {T} elem + * @return {number} + */ +google.maps.MVCArray.prototype.push = function(elem) {}; + +/** + * Removes an element from the specified index. + * @param {number} i + * @return {T} + */ +google.maps.MVCArray.prototype.removeAt = function(i) {}; + +/** + * Sets an element at the specified index. + * @param {number} i + * @param {T} elem + * @return {undefined} + */ +google.maps.MVCArray.prototype.setAt = function(i, elem) {}; + +/** + * Base class implementing KVO.

The MVCObject constructor + * is guaranteed to be an empty function, and so you may inherit from + * MVCObject by writing MySubclass.prototype = new + * google.maps.MVCObject();. Unless otherwise noted, this is not true of + * other classes in the API, and inheriting from other classes in the API is not + * supported. + * + * Access by calling `const {MVCObject} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.MVCObject = function() {}; + +/** + * Adds the given listener function to the given event name. Returns an + * identifier for this listener that can be used with + * google.maps.event.removeListener. + * @param {string} eventName + * @param {!Function} handler + * @return {!google.maps.MapsEventListener} + */ +google.maps.MVCObject.prototype.addListener = function(eventName, handler) {}; + +/** + * Binds a View to a Model. + * @param {string} key + * @param {!google.maps.MVCObject} target + * @param {?string=} targetKey + * @param {boolean=} noNotify + * @return {undefined} + */ +google.maps.MVCObject.prototype.bindTo = function( + key, target, targetKey, noNotify) {}; + +/** + * Gets a value. + * @param {string} key + * @return {?} + */ +google.maps.MVCObject.prototype.get = function(key) {}; + +/** + * Notify all observers of a change on this property. This notifies both objects + * that are bound to the object's property as well as the object that it is + * bound to. + * @param {string} key + * @return {undefined} + */ +google.maps.MVCObject.prototype.notify = function(key) {}; + +/** + * Sets a value. + * @param {string} key + * @param {*} value + * @return {undefined} + */ +google.maps.MVCObject.prototype.set = function(key, value) {}; + +/** + * Sets a collection of key-value pairs. + * @param {?Object=} values + * @return {undefined} + */ +google.maps.MVCObject.prototype.setValues = function(values) {}; + +/** + * Removes a binding. Unbinding will set the unbound property to the current + * value. The object will not be notified, as the value has not changed. + * @param {string} key + * @return {undefined} + */ +google.maps.MVCObject.prototype.unbind = function(key) {}; + +/** + * Removes all bindings. + * @return {undefined} + */ +google.maps.MVCObject.prototype.unbindAll = function() {}; + +/** + * + * Access by calling `const {Map} = await google.maps.importLibrary("maps")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!HTMLElement} mapDiv The map will render to fill this element. + * @param {!google.maps.MapOptions=} opts Options + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.Map = function(mapDiv, opts) {}; + +/** + * Additional controls to attach to the map. To add a control to the map, add + * the control's <div> to the MVCArray + * corresponding to the ControlPosition where it should be + * rendered. + * @type {!Array>} + */ +google.maps.Map.prototype.controls; + +/** + * An instance of Data, bound to the map. Add features to this + * Data object to conveniently display them on this map. + * @type {!google.maps.Data} + */ +google.maps.Map.prototype.data; + +/** + * A registry of MapType instances by string ID. + * @type {!google.maps.MapTypeRegistry} + */ +google.maps.Map.prototype.mapTypes; + +/** + * Additional map types to overlay. Overlay map types will display on top of the + * base map they are attached to, in the order in which they appear in the + * overlayMapTypes array (overlays with higher index values are + * displayed in front of overlays with lower index values). + * @type {!google.maps.MVCArray} + */ +google.maps.Map.prototype.overlayMapTypes; + +/** + * Sets the viewport to contain the given bounds.
Note: + * When the map is set to display: none, the fitBounds + * function reads the map's size as 0x0, and therefore does not do anything. + * To change the viewport while the map is hidden, set the map to + * visibility: hidden, thereby ensuring the map div has an actual + * size. For vector maps, this method sets the map's tilt and heading to + * their default zero values. Calling this method may cause a smooth animation + * as the map pans and zooms to fit the bounds. Whether or not this method + * animates depends on an internal heuristic. + * @param {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral} bounds + * Bounds to show. + * @param {(number|!google.maps.Padding)=} padding Padding in pixels. The bounds + * will be fit in the part of the map that remains after padding is removed. + * A number value will yield the same padding on all 4 sides. Supply 0 here + * to make a fitBounds idempotent on the result of getBounds. + * @return {undefined} + */ +google.maps.Map.prototype.fitBounds = function(bounds, padding) {}; + +/** + * Returns the lat/lng bounds of the current viewport. If more than one copy of + * the world is visible, the bounds range in longitude from -180 to 180 degrees + * inclusive. If the map is not yet initialized or center and zoom have not been + * set then the result is undefined. For vector maps with non-zero + * tilt or heading, the returned lat/lng bounds represents the smallest bounding + * box that includes the visible region of the map's viewport. See {@link + * google.maps.MapCanvasProjection.getVisibleRegion} for getting the exact + * visible region of the map's viewport. + * @return {!google.maps.LatLngBounds|undefined} The lat/lng bounds of the + * current viewport. + */ +google.maps.Map.prototype.getBounds = function() {}; + +/** + * Returns the position displayed at the center of the map. Note that + * this {@link google.maps.LatLng} object is not wrapped. See LatLng for more information. If the center or + * bounds have not been set then the result is undefined. + * @return {!google.maps.LatLng|undefined} + */ +google.maps.Map.prototype.getCenter = function() {}; + +/** + * Returns the clickability of the map icons. A map icon represents a point of + * interest, also known as a POI. If the returned value is true, + * then the icons are clickable on the map. + * @return {boolean|undefined} + */ +google.maps.Map.prototype.getClickableIcons = function() {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * Returns the FeatureLayer for the specified + * datasetId. Dataset IDs must be configured in the Google Cloud + * Console. If the dataset ID is not associated with the map's map style, or + * if Data-driven styling is not available (no map ID, no vector tiles, no + * Data-Driven Styling feature layers or Datasets configured in the Map Style), + * this logs an error, and the resulting FeatureLayer.isAvailable + * will be false. + * @param {string} datasetId + * @return {!google.maps.FeatureLayer} + */ +google.maps.Map.prototype.getDatasetFeatureLayer = function(datasetId) {}; + +/** + * @return {!HTMLElement} The mapDiv of the map. + */ +google.maps.Map.prototype.getDiv = function() {}; + +/** + * Returns the FeatureLayer of the specific + * FeatureType. A FeatureLayer must be enabled in the + * Google Cloud Console. If a FeatureLayer of the specified + * FeatureType does not exist on this map, or if Data-driven + * styling is not available (no map ID, no vector tiles, and no + * FeatureLayer enabled in the map style), this logs an error, and + * the resulting FeatureLayer.isAvailable will be false. + * @param {!google.maps.FeatureType} featureType + * @return {!google.maps.FeatureLayer} + */ +google.maps.Map.prototype.getFeatureLayer = function(featureType) {}; + +/** + * Returns the compass heading of the map. The heading value is measured in + * degrees (clockwise) from cardinal direction North. If the map is not yet + * initialized then the result is undefined. + * @return {number|undefined} + */ +google.maps.Map.prototype.getHeading = function() {}; + +/** + * Returns whether heading interactions are enabled. This option is only in + * effect when the map is a vector map. If not set in code, then the cloud + * configuration for the map ID will be used (if available). + * @return {boolean|null} + */ +google.maps.Map.prototype.getHeadingInteractionEnabled = function() {}; + +/** + * Informs the caller of the current capabilities available to the map based on + * the Map ID that was provided. + * @return {!google.maps.MapCapabilities} + */ +google.maps.Map.prototype.getMapCapabilities = function() {}; + +/** + * @return {!google.maps.MapTypeId|string|undefined} + */ +google.maps.Map.prototype.getMapTypeId = function() {}; + +/** + * Returns the current Projection. If the map is not yet + * initialized then the result is undefined. Listen to the + * projection_changed event and check its value to ensure it is not + * undefined. + * @return {!google.maps.Projection|undefined} + */ +google.maps.Map.prototype.getProjection = function() {}; + +/** + * Returns the current RenderingType of the map. + * @return {!google.maps.RenderingType} + */ +google.maps.Map.prototype.getRenderingType = function() {}; + +/** + * Returns the default StreetViewPanorama bound to the map, which + * may be a default panorama embedded within the map, or the panorama set using + * setStreetView(). Changes to the map's + * streetViewControl will be reflected in the display of such a + * bound panorama. + * @return {!google.maps.StreetViewPanorama} The panorama bound to the map. + */ +google.maps.Map.prototype.getStreetView = function() {}; + +/** + * Returns the current angle of incidence of the map, in degrees from the + * viewport plane to the map plane. For raster maps, the result will be + * 0 for imagery taken directly overhead or 45 for + * 45° imagery. This method does not return the value set by + * setTilt. See setTilt for details. + * @return {number|undefined} + */ +google.maps.Map.prototype.getTilt = function() {}; + +/** + * Returns whether tilt interactions are enabled. This option is only in effect + * when the map is a vector map. If not set in code, then the cloud + * configuration for the map ID will be used (if available). + * @return {boolean|null} + */ +google.maps.Map.prototype.getTiltInteractionEnabled = function() {}; + +/** + * Returns the zoom of the map. If the zoom has not been set then the result is + * undefined. + * @return {number|undefined} + */ +google.maps.Map.prototype.getZoom = function() {}; + +/** + * Immediately sets the map's camera to the target camera options, without + * animation. + * @param {!google.maps.CameraOptions} cameraOptions + * @return {undefined} + */ +google.maps.Map.prototype.moveCamera = function(cameraOptions) {}; + +/** + * Changes the center of the map by the given distance in pixels. If the + * distance is less than both the width and height of the map, the transition + * will be smoothly animated. Note that the map coordinate system increases from + * west to east (for x values) and north to south (for y values). + * @param {number} x Number of pixels to move the map in the x direction. + * @param {number} y Number of pixels to move the map in the y direction. + * @return {undefined} + */ +google.maps.Map.prototype.panBy = function(x, y) {}; + +/** + * Changes the center of the map to the given LatLng. If the change + * is less than both the width and height of the map, the transition will be + * smoothly animated. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} latLng The new center + * latitude/longitude of the map. + * @return {undefined} + */ +google.maps.Map.prototype.panTo = function(latLng) {}; + +/** + * Pans the map by the minimum amount necessary to contain the given + * LatLngBounds. It makes no guarantee where on the map the bounds + * will be, except that the map will be panned to show as much of the bounds as + * possible inside {currentMapSizeInPx} - {padding}. For both + * raster and vector maps, the map's zoom, tilt, and heading will not be + * changed. + * @param {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral} + * latLngBounds The bounds to pan the map to. + * @param {(number|!google.maps.Padding)=} padding Padding in pixels. A number + * value will yield the same padding on all 4 sides. The default value is 0. + * @return {undefined} + */ +google.maps.Map.prototype.panToBounds = function(latLngBounds, padding) {}; + +/** + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} latlng + * @return {undefined} + */ +google.maps.Map.prototype.setCenter = function(latlng) {}; + +/** + * Controls whether the map icons are clickable or not. A map icon represents a + * point of interest, also known as a POI. To disable the clickability of map + * icons, pass a value of false to this method. + * @param {boolean} value + * @return {undefined} + */ +google.maps.Map.prototype.setClickableIcons = function(value) {}; + +/** + * Sets the compass heading for map measured in degrees from cardinal direction + * North. For raster maps, this method only applies to aerial imagery. + * @param {number} heading + * @return {undefined} + */ +google.maps.Map.prototype.setHeading = function(heading) {}; + +/** + * Sets whether heading interactions are enabled. This option is only in effect + * when the map is a vector map. If not set in code, then the cloud + * configuration for the map ID will be used (if available). + * @param {boolean} headingInteractionEnabled + * @return {undefined} + */ +google.maps.Map.prototype.setHeadingInteractionEnabled = function( + headingInteractionEnabled) {}; + +/** + * @param {!google.maps.MapTypeId|string} mapTypeId + * @return {undefined} + */ +google.maps.Map.prototype.setMapTypeId = function(mapTypeId) {}; + +/** + * @param {?google.maps.MapOptions} options + * @return {undefined} + */ +google.maps.Map.prototype.setOptions = function(options) {}; + +/** + * Sets the current RenderingType of the map. + * @param {!google.maps.RenderingType} renderingType + * @return {undefined} + */ +google.maps.Map.prototype.setRenderingType = function(renderingType) {}; + +/** + * Binds a StreetViewPanorama to the map. This panorama overrides + * the default StreetViewPanorama, allowing the map to bind to an + * external panorama outside of the map. Setting the panorama to + * null binds the default embedded panorama back to the map. + * @param {?google.maps.StreetViewPanorama} panorama The panorama to bind to the + * map. + * @return {undefined} + */ +google.maps.Map.prototype.setStreetView = function(panorama) {}; + +/** + * For vector maps, sets the angle of incidence of the map. The allowed values + * are restricted depending on the zoom level of the map.

For raster + * maps, controls the automatic switching behavior for the angle of incidence of + * the map. The only allowed values are 0 and 45. + * setTilt(0) causes the map to always use a 0° overhead view + * regardless of the zoom level and viewport. setTilt(45) causes + * the tilt angle to automatically switch to 45 whenever 45° imagery is + * available for the current zoom level and viewport, and switch back to 0 + * whenever 45° imagery is not available (this is the default behavior). + * 45° imagery is only available for satellite and + * hybrid map types, within some locations, and at some zoom + * levels. Note: getTilt returns the current tilt angle, not + * the value set by setTilt. Because getTilt and + * setTilt refer to different things, do not bind() + * the tilt property; doing so may yield unpredictable effects. + * @param {number} tilt + * @return {undefined} + */ +google.maps.Map.prototype.setTilt = function(tilt) {}; + +/** + * Sets whether tilt interactions are enabled. This option is only in effect + * when the map is a vector map. If not set in code, then the cloud + * configuration for the map ID will be used (if available). + * @param {boolean} tiltInteractionEnabled + * @return {undefined} + */ +google.maps.Map.prototype.setTiltInteractionEnabled = function( + tiltInteractionEnabled) {}; + +/** + * Sets the zoom of the map. + * @param {number} zoom Larger zoom values correspond to a higher resolution. + * @return {undefined} + */ +google.maps.Map.prototype.setZoom = function(zoom) {}; + +/** + * Map ID which can be used for code samples which require a Map ID. This Map ID + * is not intended for use in production applications and cannot be used for + * features which require cloud configuration (such as Cloud Styling). + * @const + * @type {string} + */ +google.maps.Map.DEMO_MAP_ID; + +/** + * This object is made available to the OverlayView from within the + * draw method. It is not guaranteed to be initialized until draw is called. + * @record + */ +google.maps.MapCanvasProjection = function() {}; + +/** + * Computes the geographical coordinates from pixel coordinates in the map's + * container. + * @param {?google.maps.Point} pixel + * @param {boolean=} noClampNoWrap + * @return {?google.maps.LatLng} + */ +google.maps.MapCanvasProjection.prototype.fromContainerPixelToLatLng = function( + pixel, noClampNoWrap) {}; + +/** + * Computes the geographical coordinates from pixel coordinates in the div that + * holds the draggable map. + * @param {?google.maps.Point} pixel + * @param {boolean=} noClampNoWrap + * @return {?google.maps.LatLng} + */ +google.maps.MapCanvasProjection.prototype.fromDivPixelToLatLng = function( + pixel, noClampNoWrap) {}; + +/** + * Computes the pixel coordinates of the given geographical location in the + * map's container element. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} latLng + * @return {?google.maps.Point} + */ +google.maps.MapCanvasProjection.prototype.fromLatLngToContainerPixel = function( + latLng) {}; + +/** + * Computes the pixel coordinates of the given geographical location in the DOM + * element that holds the draggable map. + * @param {google.maps.LatLng|google.maps.LatLngLiteral|null} latLng + * @return {?google.maps.Point} + */ +google.maps.MapCanvasProjection.prototype.fromLatLngToDivPixel = function( + latLng) {}; + +/** + * The visible region of the map. Returns null if the map has no + * size. Returns null if the OverlayView is on a + * StreetViewPanorama. + * @return {?google.maps.VisibleRegion} + */ +google.maps.MapCanvasProjection.prototype.getVisibleRegion = function() {}; + +/** + * The width of the world in pixels in the current zoom level. For projections + * with a heading angle of either 90 or 270 degrees, this corresponds to the + * pixel span in the Y-axis. + * @return {number} + */ +google.maps.MapCanvasProjection.prototype.getWorldWidth = function() {}; + +/** + * Object containing a snapshot of what capabilities are currently available for + * the Map. Note that this does not necessarily mean that relevant modules are + * loaded or initialized, but rather that the current map has permission to use + * these APIs. See the properties for a list of possible capabilities. + * @record + */ +google.maps.MapCapabilities = function() {}; + +/** + * If true, this map is configured properly to allow for the use of advanced + * markers. Note that you must still import the marker library in + * order to use advanced markers. See https://goo.gle/gmp-isAdvancedMarkersAvailable + * for more information. + * @type {boolean|undefined} + */ +google.maps.MapCapabilities.prototype.isAdvancedMarkersAvailable; + +/** + * If true, this map is configured properly to allow for the use of data-driven + * styling for at least one FeatureLayer. See https://goo.gle/gmp-data-driven-styling + * and https://goo.gle/gmp-FeatureLayerIsAvailable + * for more information. + * @type {boolean|undefined} + */ +google.maps.MapCapabilities.prototype.isDataDrivenStylingAvailable; + +/** + * If true, this map is configured properly to allow for the use of {@link + * google.maps.WebGLOverlayView}. + * @type {boolean|undefined} + */ +google.maps.MapCapabilities.prototype.isWebGLOverlayViewAvailable; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * MapElement is an HTMLElement subclass for rendering maps. After + * loading the maps library, a map can be created in HTML. For + * example:
<gmp-map center="37.4220656,-122.0840897"
+ * zoom="10"
+ * map-id="DEMO_MAP_ID">
  <button + * slot="control-block-start-inline-end">Custom + * Control</button>
</gmp-map>

Internally, it + * uses {@link google.maps.Map}, which can be accessed with the + * innerMap property. + * + * Access by calling `const {MapElement} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.MapElementOptions=} options + * @implements {google.maps.MapElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.MapElement = function(options) {}; + +/** + * The center latitude/longitude of the map. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null} + */ +google.maps.MapElement.prototype.center; + +/** + * Whether the map should allow user control of the camera heading (rotation). + * This option is only in effect when the map is a vector map. If not set in + * code, then the cloud configuration for the map ID will be used (if + * available). + * @default false + * @type {boolean|null} + */ +google.maps.MapElement.prototype.headingInteractionDisabled; + +/** + * A reference to the {@link google.maps.Map} that the MapElement uses + * internally. + * @type {!google.maps.Map} + */ +google.maps.MapElement.prototype.innerMap; + +/** + * The Map + * ID of the map. This parameter cannot be set or changed after a map is + * instantiated. {@link google.maps.Map.DEMO_MAP_ID} can be used to try out + * features that require a map ID but which do not require cloud enablement. + * @type {string|null} + */ +google.maps.MapElement.prototype.mapId; + +/** + * Whether the map should be a raster or vector map. This parameter cannot be + * set or changed after a map is instantiated. If not set, then the cloud + * configuration for the map ID will determine the rendering type (if + * available). Please note that vector maps may not be available for all devices + * and browsers and the map will fall back to a raster map as needed. + * @default {@link google.maps.RenderingType.VECTOR} + * @type {!google.maps.RenderingType|null} + */ +google.maps.MapElement.prototype.renderingType; + +/** + * Whether the map should allow user control of the camera tilt. This option is + * only in effect when the map is a vector map. If not set in code, then the + * cloud configuration for the map ID will be used (if available). + * @default false + * @type {boolean|null} + */ +google.maps.MapElement.prototype.tiltInteractionDisabled; + +/** + * The zoom level of the map. Valid zoom values are numbers from zero up to the + * supported maximum + * zoom level. Larger zoom values correspond to a higher resolution. + * @type {number|null} + */ +google.maps.MapElement.prototype.zoom; + + + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * MapElementOptions object used to define the properties that can be set on a + * MapElement. + * @record + */ +google.maps.MapElementOptions = function() {}; + +/** + * See {@link google.maps.MapElement.center}. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} + */ +google.maps.MapElementOptions.prototype.center; + +/** + * See {@link google.maps.MapElement.headingInteractionDisabled}. + * @type {boolean|null|undefined} + */ +google.maps.MapElementOptions.prototype.headingInteractionDisabled; + +/** + * See {@link google.maps.MapElement.mapId}. + * @type {string|null|undefined} + */ +google.maps.MapElementOptions.prototype.mapId; + +/** + * See {@link google.maps.MapElement.renderingType}. + * @type {!google.maps.RenderingType|null|undefined} + */ +google.maps.MapElementOptions.prototype.renderingType; + +/** + * See {@link google.maps.MapElement.tiltInteractionDisabled}. + * @type {boolean|null|undefined} + */ +google.maps.MapElementOptions.prototype.tiltInteractionDisabled; + +/** + * See {@link google.maps.MapElement.zoom}. + * @type {number|null|undefined} + */ +google.maps.MapElementOptions.prototype.zoom; + +/** + * This object is returned from various mouse events on the map and overlays, + * and contains all the fields shown below. + * @record + */ +google.maps.MapMouseEvent = function() {}; + +/** + * The corresponding native DOM event. Developers should not rely on + * target, currentTarget, relatedTarget + * and path properties being defined and consistent. Developers + * should not also rely on the DOM structure of the internal implementation of + * the Maps API. Due to internal event mapping, the domEvent may + * have different semantics from the {@link google.maps.MapMouseEvent} (e.g. + * a {@link google.maps.MapMouseEvent} "click" may have a + * domEvent of type KeyboardEvent). + * @type {!MouseEvent|!TouchEvent|!PointerEvent|!KeyboardEvent|!Event} + */ +google.maps.MapMouseEvent.prototype.domEvent; + +/** + * The latitude/longitude that was below the cursor when the event occurred. + * @type {!google.maps.LatLng|null} + */ +google.maps.MapMouseEvent.prototype.latLng; + +/** + * Prevents this event from propagating further. + * @return {void} + */ +google.maps.MapMouseEvent.prototype.stop = function() {}; + +/** + * MapOptions object used to define the properties that can be set on a Map. + * @record + */ +google.maps.MapOptions = function() {}; + +/** + * Color used for the background of the Map div. This color will be visible when + * tiles have not yet loaded as the user pans. This option can only be set when + * the map is initialized. + * @type {string|null|undefined} + */ +google.maps.MapOptions.prototype.backgroundColor; + +/** + * The enabled/disabled state of the Camera control. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.cameraControl; + +/** + * The display options for the Camera control. + * @type {!google.maps.CameraControlOptions|null|undefined} + */ +google.maps.MapOptions.prototype.cameraControlOptions; + +/** + * The initial Map center. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} + */ +google.maps.MapOptions.prototype.center; + +/** + * When false, map icons are not clickable. A map icon represents a + * point of interest, also known as a POI. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.clickableIcons; + +/** + * The initial Map color scheme. This option can only be set when the map is + * initialized. + * @default {@link google.maps.ColorScheme.LIGHT} + * @type {!google.maps.ColorScheme|string|null|undefined} + */ +google.maps.MapOptions.prototype.colorScheme; + +/** + * Size in pixels of the controls appearing on the map. This value must be + * supplied directly when creating the Map, updating this value later may bring + * the controls into an undefined state. Only governs the controls + * made by the Maps API itself. Does not scale developer created custom + * controls. + * @type {number|null|undefined} + */ +google.maps.MapOptions.prototype.controlSize; + +/** + * Enables/disables all default UI buttons. May be overridden individually. Does + * not disable the keyboard controls, which are separately controlled by + * the {@link google.maps.MapOptions.keyboardShortcuts} option. Does not disable + * gesture controls, which are separately controlled by the {@link + * google.maps.MapOptions.gestureHandling} option. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.disableDefaultUI; + +/** + * Enables/disables zoom and center on double click. Enabled by default. + *

Note: This property is not recommended. + * To disable zooming on double click, you can use the + * gestureHandling property, and set it to "none". + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.disableDoubleClickZoom; + +/** + * The name or url of the cursor to display when mousing over a draggable map. + * This property uses the css cursor attribute to change the icon. + * As with the css property, you must specify at least one fallback cursor that + * is not a URL. For example: draggableCursor: 'url(http://www.example.com/icon.png), + * auto;'. + * @type {string|null|undefined} + */ +google.maps.MapOptions.prototype.draggableCursor; + +/** + * The name or url of the cursor to display when the map is being dragged. This + * property uses the css cursor attribute to change the icon. As + * with the css property, you must specify at least one fallback cursor that is + * not a URL. For example: draggingCursor: 'url(http://www.example.com/icon.png), + * auto;'. + * @type {string|null|undefined} + */ +google.maps.MapOptions.prototype.draggingCursor; + +/** + * The enabled/disabled state of the Fullscreen control. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.fullscreenControl; + +/** + * The display options for the Fullscreen control. + * @type {!google.maps.FullscreenControlOptions|null|undefined} + */ +google.maps.MapOptions.prototype.fullscreenControlOptions; + +/** + * This setting controls how the API handles gestures on the map. Allowed + * values:

  • "cooperative": Scroll events and one-finger + * touch gestures scroll the page, and do not zoom or pan the map. Two-finger + * touch gestures pan and zoom the map. Scroll events with a ctrl key or ⌘ key + * pressed zoom the map.
    In this mode the map cooperates with the + * page.
  • "greedy": All touch gestures and scroll events pan or + * zoom the map.
  • "none": The map cannot be panned or zoomed by + * user gestures.
  • "auto": (default) Gesture handling is either + * cooperative or greedy, depending on whether the page is scrollable or in an + * iframe.
+ * @type {string|null|undefined} + */ +google.maps.MapOptions.prototype.gestureHandling; + +/** + * The heading for aerial imagery in degrees measured clockwise from cardinal + * direction North. Headings are snapped to the nearest available angle for + * which imagery is available. + * @type {number|null|undefined} + */ +google.maps.MapOptions.prototype.heading; + +/** + * Whether the map should allow user control of the camera heading (rotation). + * This option is only in effect when the map is a vector map. If not set in + * code, then the cloud configuration for the map ID will be used (if + * available). + * @default false + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.headingInteractionEnabled; + +/** + * Whether the map should allow fractional zoom levels. Listen to + * isfractionalzoomenabled_changed to know when the default has + * been set. + * @default true for vector maps and false for raster + * maps + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.isFractionalZoomEnabled; + +/** + * If false, prevents the map from being controlled by the + * keyboard. Keyboard shortcuts are enabled by default. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.keyboardShortcuts; + +/** + * The Map + * ID of the map. This parameter cannot be set or changed after a map is + * instantiated. {@link google.maps.Map.DEMO_MAP_ID} can be used to try out + * features that require a map ID but which do not require cloud enablement. + * @type {string|null|undefined} + */ +google.maps.MapOptions.prototype.mapId; + +/** + * The initial enabled/disabled state of the Map type control. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.mapTypeControl; + +/** + * The initial display options for the Map type control. + * @type {!google.maps.MapTypeControlOptions|null|undefined} + */ +google.maps.MapOptions.prototype.mapTypeControlOptions; + +/** + * The initial Map mapTypeId. Defaults to ROADMAP. + * @type {!google.maps.MapTypeId|string|null|undefined} + */ +google.maps.MapOptions.prototype.mapTypeId; + +/** + * The maximum zoom level which will be displayed on the map. If omitted, or set + * to null, the maximum zoom from the current map type is used + * instead. Valid zoom values are numbers from zero up to the supported maximum + * zoom level. + * @type {number|null|undefined} + */ +google.maps.MapOptions.prototype.maxZoom; + +/** + * The minimum zoom level which will be displayed on the map. If omitted, or set + * to null, the minimum zoom from the current map type is used + * instead. Valid zoom values are numbers from zero up to the supported maximum + * zoom level. + * @type {number|null|undefined} + */ +google.maps.MapOptions.prototype.minZoom; + +/** + * If true, do not clear the contents of the Map div. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.noClear; + +/** + * Whether the map should be a raster or vector map. This parameter cannot be + * set or changed after a map is instantiated. If not set, then the cloud + * configuration for the map ID will determine the rendering type (if + * available). Please note that vector maps may not be available for all devices + * and browsers and the map will fall back to a raster map as needed. + * @default {@link google.maps.RenderingType.RASTER} + * @type {!google.maps.RenderingType|null|undefined} + */ +google.maps.MapOptions.prototype.renderingType; + +/** + * Defines a boundary that restricts the area of the map accessible to users. + * When set, a user can only pan and zoom while the camera view stays inside the + * limits of the boundary. + * @type {!google.maps.MapRestriction|null|undefined} + */ +google.maps.MapOptions.prototype.restriction; + +/** + * The enabled/disabled state of the Rotate control. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.rotateControl; + +/** + * The display options for the Rotate control. + * @type {!google.maps.RotateControlOptions|null|undefined} + */ +google.maps.MapOptions.prototype.rotateControlOptions; + +/** + * The initial enabled/disabled state of the Scale control. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.scaleControl; + +/** + * The initial display options for the Scale control. + * @type {!google.maps.ScaleControlOptions|null|undefined} + */ +google.maps.MapOptions.prototype.scaleControlOptions; + +/** + * If false, disables zooming on the map using a mouse scroll + * wheel. The scrollwheel is enabled by default.

Note: This + * property is not recommended. To disable zooming using + * scrollwheel, you can use the gestureHandling property, and set + * it to either "cooperative" or "none". + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.scrollwheel; + +/** + * A StreetViewPanorama to display when the Street View pegman is + * dropped on the map. If no panorama is specified, a default + * StreetViewPanorama will be displayed in the map's + * div when the pegman is dropped. + * @type {!google.maps.StreetViewPanorama|null|undefined} + */ +google.maps.MapOptions.prototype.streetView; + +/** + * The initial enabled/disabled state of the Street View Pegman control. This + * control is part of the default UI, and should be set to false + * when displaying a map type on which the Street View road overlay should not + * appear (e.g. a non-Earth map type). + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.streetViewControl; + +/** + * The initial display options for the Street View Pegman control. + * @type {!google.maps.StreetViewControlOptions|null|undefined} + */ +google.maps.MapOptions.prototype.streetViewControlOptions; + +/** + * Styles to apply to each of the default map types. Note that for + * satellite/hybrid and terrain modes, + * these styles will only apply to labels and geometry. This feature is not + * available when using a map ID, or when using vector maps (use cloud-based + * maps styling instead). + * @type {!Array|null|undefined} + */ +google.maps.MapOptions.prototype.styles; + +/** + * For vector maps, sets the angle of incidence of the map. The allowed values + * are restricted depending on the zoom level of the map. For raster maps, + * controls the automatic switching behavior for the angle of incidence of the + * map. The only allowed values are 0 and 45. The + * value 0 causes the map to always use a 0° overhead view + * regardless of the zoom level and viewport. The value 45 causes + * the tilt angle to automatically switch to 45 whenever 45° imagery is + * available for the current zoom level and viewport, and switch back to 0 + * whenever 45° imagery is not available (this is the default behavior). + * 45° imagery is only available for satellite and + * hybrid map types, within some locations, and at some zoom + * levels. Note: getTilt returns the current tilt angle, not + * the value specified by this option. Because getTilt and this + * option refer to different things, do not bind() the + * tilt property; doing so may yield unpredictable effects. + * @type {number|null|undefined} + */ +google.maps.MapOptions.prototype.tilt; + +/** + * Whether the map should allow user control of the camera tilt. This option is + * only in effect when the map is a vector map. If not set in code, then the + * cloud configuration for the map ID will be used (if available). + * @default false + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.tiltInteractionEnabled; + +/** + * The initial Map zoom level. Valid zoom values are numbers from zero up to the + * supported maximum + * zoom level. Larger zoom values correspond to a higher resolution. + * @type {number|null|undefined} + */ +google.maps.MapOptions.prototype.zoom; + +/** + * The enabled/disabled state of the Zoom control. + * @type {boolean|null|undefined} + */ +google.maps.MapOptions.prototype.zoomControl; + +/** + * The display options for the Zoom control. + * @type {!google.maps.ZoomControlOptions|null|undefined} + */ +google.maps.MapOptions.prototype.zoomControlOptions; + +/** + * If false, prevents the map from being dragged. Dragging is + * enabled by default. + * @type {boolean|null|undefined} + * @deprecated Deprecated in 2017. To disable dragging on the map, you can use + * the gestureHandling property, and set it to + * "none". + */ +google.maps.MapOptions.prototype.draggable; + +/** + * The enabled/disabled state of the Pan control.

+ * @type {boolean|null|undefined} + * @deprecated The Pan control is deprecated as of September 2015. + */ +google.maps.MapOptions.prototype.panControl; + +/** + * The display options for the Pan control.

+ * @type {!google.maps.PanControlOptions|null|undefined} + * @deprecated The Pan control is deprecated as of September 2015. + */ +google.maps.MapOptions.prototype.panControlOptions; + +/** + * @record + */ +google.maps.MapPanes = function() {}; + +/** + * This pane contains the info window. It is above all map overlays. (Pane 4). + * @type {!Element} + */ +google.maps.MapPanes.prototype.floatPane; + +/** + * This pane is the lowest pane and is above the tiles. It does not receive DOM + * events. (Pane 0). + * @type {!Element} + */ +google.maps.MapPanes.prototype.mapPane; + +/** + * This pane contains markers. It does not receive DOM events. (Pane 2). + * @type {!Element} + */ +google.maps.MapPanes.prototype.markerLayer; + +/** + * This pane contains polylines, polygons, ground overlays and tile layer + * overlays. It does not receive DOM events. (Pane 1). + * @type {!Element} + */ +google.maps.MapPanes.prototype.overlayLayer; + +/** + * This pane contains elements that receive DOM events. (Pane 3). + * @type {!Element} + */ +google.maps.MapPanes.prototype.overlayMouseTarget; + +/** + * A restriction that can be applied to the Map. The map's viewport will not + * exceed these restrictions. + * @record + */ +google.maps.MapRestriction = function() {}; + +/** + * When set, a user can only pan and zoom inside the given bounds. Bounds can + * restrict both longitude and latitude, or can restrict latitude only. For + * latitude-only bounds use west and east longitudes of -180 and 180, + * respectively, for example, latLngBounds: {north: northLat, south: + * southLat, west: -180, east: 180}. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral} + */ +google.maps.MapRestriction.prototype.latLngBounds; + +/** + * Bounds can be made more restrictive by setting the strictBounds + * flag to true. This reduces how far a user can zoom out, ensuring + * that everything outside of the restricted bounds stays hidden. The default is + * false, meaning that a user can zoom out until the entire bounded + * area is in view, possibly including areas outside the bounded area. + * @type {boolean|undefined} + */ +google.maps.MapRestriction.prototype.strictBounds; + +/** + * This interface defines the map type, and is typically used for custom map + * types. Immutable. + * @record + */ +google.maps.MapType = function() {}; + +/** + * Alt text to display when this MapType's button is hovered over in the + * MapTypeControl. Optional. + * @type {?string} + */ +google.maps.MapType.prototype.alt; + +/** + * The maximum zoom level for the map when displaying this MapType. Required for + * base MapTypes, ignored for overlay MapTypes. + * @type {number} + */ +google.maps.MapType.prototype.maxZoom; + +/** + * The minimum zoom level for the map when displaying this MapType. Optional; + * defaults to 0. + * @type {number} + */ +google.maps.MapType.prototype.minZoom; + +/** + * Name to display in the MapTypeControl. Optional. + * @type {?string} + */ +google.maps.MapType.prototype.name; + +/** + * The Projection used to render this MapType. Optional; defaults to Mercator. + * @type {?google.maps.Projection} + */ +google.maps.MapType.prototype.projection; + +/** + * Radius of the planet for the map, in meters. Optional; defaults to + * Earth's equatorial radius of 6378137 meters. + * @type {number} + */ +google.maps.MapType.prototype.radius; + +/** + * The dimensions of each tile. Required. + * @type {google.maps.Size} + */ +google.maps.MapType.prototype.tileSize; + +/** + * Returns a tile for the given tile coordinate (x, y) and zoom level. This tile + * will be appended to the given ownerDocument. Not available for base map + * types. + * @param {google.maps.Point} tileCoord Tile coordinates. + * @param {number} zoom Tile zoom. + * @param {Document} ownerDocument The document which owns this tile. + * @return {?Element} Resulting tile. + */ +google.maps.MapType.prototype.getTile = function( + tileCoord, zoom, ownerDocument) {}; + +/** + * Releases the given tile, performing any necessary cleanup. The provided tile + * will have already been removed from the document. Optional. + * @param {?Element} tile Tile to release. + * @return {undefined} + */ +google.maps.MapType.prototype.releaseTile = function(tile) {}; + +/** + * Options for the rendering of the map type control. + * @record + */ +google.maps.MapTypeControlOptions = function() {}; + +/** + * IDs of map types to show in the control. + * @type {Array|null|undefined} + */ +google.maps.MapTypeControlOptions.prototype.mapTypeIds; + +/** + * Position id. Used to specify the position of the control on the map. + * @default {@link google.maps.ControlPosition.BLOCK_START_INLINE_START} + * @type {google.maps.ControlPosition|null|undefined} + */ +google.maps.MapTypeControlOptions.prototype.position; + +/** + * Style id. Used to select what style of map type control to display. + * @type {google.maps.MapTypeControlStyle|null|undefined} + */ +google.maps.MapTypeControlOptions.prototype.style; + +/** + * Identifiers for common MapTypesControls. + * + * Access by calling `const {MapTypeControlStyle} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {number} + */ +google.maps.MapTypeControlStyle = { + /** + * Uses the default map type control. When the DEFAULT control is + * shown, it will vary according to window size and other factors. The + * DEFAULT control may change in future versions of the API. + */ + DEFAULT: 0, + /** + * A dropdown menu for the screen realestate conscious. + */ + DROPDOWN_MENU: 1, + /** + * The standard horizontal radio buttons bar. + */ + HORIZONTAL_BAR: 2, +}; + +/** + * Identifiers for common MapTypes. Specify these by value, or by using the + * constant's name. For example, 'satellite' or + * google.maps.MapTypeId.SATELLITE. + * + * Access by calling `const {MapTypeId} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.MapTypeId = { + /** + * This map type displays a transparent layer of major streets on satellite + * images. + */ + HYBRID: 'hybrid', + /** + * This map type displays a normal street map. + */ + ROADMAP: 'roadmap', + /** + * This map type displays satellite images. + */ + SATELLITE: 'satellite', + /** + * This map type displays maps with physical features such as terrain and + * vegetation. + */ + TERRAIN: 'terrain', +}; + +/** + * A registry for MapType instances, keyed by MapType id. + * + * Access by calling `const {MapTypeRegistry} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.MapTypeRegistry = function() {}; + +/** + * Sets the registry to associate the passed string identifier with the passed + * MapType. + * @param {string} id Identifier of the MapType to add to the registry. + * @param {!google.maps.MapType|?} mapType MapType object to add to the + * registry. + * @return {undefined} + */ +google.maps.MapTypeRegistry.prototype.set = function(id, mapType) {}; + +/** + * The MapTypeStyle is a collection of selectors and stylers that + * define how the map should be styled. Selectors specify the map features + * and/or elements that should be affected, and stylers specify how those + * features and elements should be modified. For details, see the style + * reference. + * @record + */ +google.maps.MapTypeStyle = function() {}; + +/** + * The element to which a styler should be applied. An element is a visual + * aspect of a feature on the map. Example: a label, an icon, the stroke or fill + * applied to the geometry, and more. Optional. If elementType is + * not specified, the value is assumed to be 'all'. For details of + * usage and allowed values, see the style + * reference. + * @type {string|null|undefined} + */ +google.maps.MapTypeStyle.prototype.elementType; + +/** + * The feature, or group of features, to which a styler should be applied. + * Optional. If featureType is not specified, the value is assumed + * to be 'all'. For details of usage and allowed values, see the style + * reference. + * @type {string|null|undefined} + */ +google.maps.MapTypeStyle.prototype.featureType; + +/** + * The style rules to apply to the selected map features and elements. The rules + * are applied in the order that you specify in this array. For guidelines on + * usage and allowed values, see the style + * reference. + * @type {!Array} + */ +google.maps.MapTypeStyle.prototype.stylers; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * @record + */ +google.maps.Maps3DLibrary = function() {}; + +/** + * @type {typeof google.maps.maps3d.AltitudeMode} + */ +google.maps.Maps3DLibrary.prototype.AltitudeMode; + +/** + * @type {typeof google.maps.maps3d.LocationClickEvent} + */ +google.maps.Maps3DLibrary.prototype.LocationClickEvent; + +/** + * @type {typeof google.maps.maps3d.Map3DElement} + */ +google.maps.Maps3DLibrary.prototype.Map3DElement; + +/** + * @type {typeof google.maps.maps3d.Marker3DElement} + */ +google.maps.Maps3DLibrary.prototype.Marker3DElement; + +/** + * @type {typeof google.maps.maps3d.Marker3DInteractiveElement} + */ +google.maps.Maps3DLibrary.prototype.Marker3DInteractiveElement; + +/** + * @type {typeof google.maps.maps3d.Model3DElement} + */ +google.maps.Maps3DLibrary.prototype.Model3DElement; + +/** + * @type {typeof google.maps.maps3d.PlaceClickEvent} + */ +google.maps.Maps3DLibrary.prototype.PlaceClickEvent; + +/** + * @type {typeof google.maps.maps3d.Polygon3DElement} + */ +google.maps.Maps3DLibrary.prototype.Polygon3DElement; + +/** + * @type {typeof google.maps.maps3d.Polyline3DElement} + */ +google.maps.Maps3DLibrary.prototype.Polyline3DElement; + +/** + * @type {typeof google.maps.maps3d.SteadyChangeEvent} + */ +google.maps.Maps3DLibrary.prototype.SteadyChangeEvent; + +/** + * An event listener, created by google.maps.event.addListener() and friends. + * @record + */ +google.maps.MapsEventListener = function() {}; + +/** + * Removes the listener.

Calling listener.remove() is equivalent + * to google.maps.event.removeListener(listener). + * @return {void} + */ +google.maps.MapsEventListener.prototype.remove = function() {}; + +/** + * @record + */ +google.maps.MapsLibrary = function() {}; + +/** + * @type {typeof google.maps.BicyclingLayer} + */ +google.maps.MapsLibrary.prototype.BicyclingLayer; + +/** + * @type {typeof google.maps.Circle} + */ +google.maps.MapsLibrary.prototype.Circle; + +/** + * @type {typeof google.maps.Data} + */ +google.maps.MapsLibrary.prototype.Data; + +/** + * @type {typeof google.maps.FeatureType} + */ +google.maps.MapsLibrary.prototype.FeatureType; + +/** + * @type {typeof google.maps.GroundOverlay} + */ +google.maps.MapsLibrary.prototype.GroundOverlay; + +/** + * @type {typeof google.maps.ImageMapType} + */ +google.maps.MapsLibrary.prototype.ImageMapType; + +/** + * @type {typeof google.maps.InfoWindow} + */ +google.maps.MapsLibrary.prototype.InfoWindow; + +/** + * @type {typeof google.maps.KmlLayer} + */ +google.maps.MapsLibrary.prototype.KmlLayer; + +/** + * @type {typeof google.maps.KmlLayerStatus} + */ +google.maps.MapsLibrary.prototype.KmlLayerStatus; + +/** + * @type {typeof google.maps.Map} + */ +google.maps.MapsLibrary.prototype.Map; + +/** + * @type {typeof google.maps.MapTypeControlStyle} + */ +google.maps.MapsLibrary.prototype.MapTypeControlStyle; + +/** + * @type {typeof google.maps.MapTypeId} + */ +google.maps.MapsLibrary.prototype.MapTypeId; + +/** + * @type {typeof google.maps.MapTypeRegistry} + */ +google.maps.MapsLibrary.prototype.MapTypeRegistry; + +/** + * @type {typeof google.maps.MaxZoomService} + */ +google.maps.MapsLibrary.prototype.MaxZoomService; + +/** + * @type {typeof google.maps.MaxZoomStatus} + */ +google.maps.MapsLibrary.prototype.MaxZoomStatus; + +/** + * @type {typeof google.maps.OverlayView} + */ +google.maps.MapsLibrary.prototype.OverlayView; + +/** + * @type {typeof google.maps.Polygon} + */ +google.maps.MapsLibrary.prototype.Polygon; + +/** + * @type {typeof google.maps.Polyline} + */ +google.maps.MapsLibrary.prototype.Polyline; + +/** + * @type {typeof google.maps.Rectangle} + */ +google.maps.MapsLibrary.prototype.Rectangle; + +/** + * @type {typeof google.maps.RenderingType} + */ +google.maps.MapsLibrary.prototype.RenderingType; + +/** + * @type {typeof google.maps.StrokePosition} + */ +google.maps.MapsLibrary.prototype.StrokePosition; + +/** + * @type {typeof google.maps.StyledMapType} + */ +google.maps.MapsLibrary.prototype.StyledMapType; + +/** + * @type {typeof google.maps.TrafficLayer} + */ +google.maps.MapsLibrary.prototype.TrafficLayer; + +/** + * @type {typeof google.maps.TransitLayer} + */ +google.maps.MapsLibrary.prototype.TransitLayer; + +/** + * @type {typeof google.maps.WebGLOverlayView} + */ +google.maps.MapsLibrary.prototype.WebGLOverlayView; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * @type {typeof google.maps.ZoomChangeEvent} + */ +google.maps.MapsLibrary.prototype.ZoomChangeEvent; + +/** + * Base class for managing network errors in Maps. + * + * Access by calling `const {MapsNetworkError} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {Error} + * @constructor + */ +google.maps.MapsNetworkError = function() {}; + +/** + * Identifies the type of error produced by the API. + * @type {!google.maps.DirectionsStatus|!google.maps.DistanceMatrixStatus|!google.maps.ElevationStatus|!google.maps.GeocoderStatus|!google.maps.MaxZoomStatus|!google.maps.places.PlacesServiceStatus|!google.maps.StreetViewStatus} + */ +google.maps.MapsNetworkError.prototype.code; + +/** + * Represents the network service that responded with the error. + * @type {!google.maps.MapsNetworkErrorEndpoint} + */ +google.maps.MapsNetworkError.prototype.endpoint; + +/** + * Identifiers for API endpoints used by {@link google.maps.MapsNetworkError} + * instances. + * + * Access by calling `const {MapsNetworkErrorEndpoint} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.MapsNetworkErrorEndpoint = { + /** + * Identifies the Routes API within the Directions API. + */ + DIRECTIONS_ROUTE: 'DIRECTIONS_ROUTE', + /** + * Identifies the DistanceMatrix API. + */ + DISTANCE_MATRIX: 'DISTANCE_MATRIX', + /** + * Identifies the getElevationsAlongPath API within the Elevation API. + */ + ELEVATION_ALONG_PATH: 'ELEVATION_ALONG_PATH', + /** + * Identifies the getElevationForLocations API within the Elevation API. + */ + ELEVATION_LOCATIONS: 'ELEVATION_LOCATIONS', + /** + * Identifies the Get DeliveryVehicle API within Fleet Engine. + */ + FLEET_ENGINE_GET_DELIVERY_VEHICLE: 'FLEET_ENGINE_GET_DELIVERY_VEHICLE', + /** + * Identifies the Get Trip API within Fleet Engine. + */ + FLEET_ENGINE_GET_TRIP: 'FLEET_ENGINE_GET_TRIP', + /** + * Identifies the Get Vehicle API within Fleet Engine. + */ + FLEET_ENGINE_GET_VEHICLE: 'FLEET_ENGINE_GET_VEHICLE', + /** + * Identifies the List DeliveryVehicles API within Fleet Engine. + */ + FLEET_ENGINE_LIST_DELIVERY_VEHICLES: 'FLEET_ENGINE_LIST_DELIVERY_VEHICLES', + /** + * Identifies the List Tasks API within Fleet Engine. + */ + FLEET_ENGINE_LIST_TASKS: 'FLEET_ENGINE_LIST_TASKS', + /** + * Identifies the List Vehicles API within Fleet Engine. + */ + FLEET_ENGINE_LIST_VEHICLES: 'FLEET_ENGINE_LIST_VEHICLES', + /** + * Identifies the Search Tasks API within Fleet Engine. + */ + FLEET_ENGINE_SEARCH_TASKS: 'FLEET_ENGINE_SEARCH_TASKS', + /** + * Identifies the geocode API within the Geocoder. + */ + GEOCODER_GEOCODE: 'GEOCODER_GEOCODE', + /** + * Identifies the MaximumZoomImageryService API within the Maps API. + */ + MAPS_MAX_ZOOM: 'MAPS_MAX_ZOOM', + /** + * Identifies the Autocomplete API within the Places API. + */ + PLACES_AUTOCOMPLETE: 'PLACES_AUTOCOMPLETE', + /** + * Identifies the Details API within the Places API. + */ + PLACES_DETAILS: 'PLACES_DETAILS', + /** + * Identifies the findPlaceFromPhoneNumber API within the Places API. + */ + PLACES_FIND_PLACE_FROM_PHONE_NUMBER: 'PLACES_FIND_PLACE_FROM_PHONE_NUMBER', + /** + * Identifies the findPlaceFromQuery API within the Places API. + */ + PLACES_FIND_PLACE_FROM_QUERY: 'PLACES_FIND_PLACE_FROM_QUERY', + /** + * Identifies the Gateway API within the Places API. + */ + PLACES_GATEWAY: 'PLACES_GATEWAY', + /** + * Identifies the Get Place API within the Places API. + */ + PLACES_GET_PLACE: 'PLACES_GET_PLACE', + /** + * Identifies the LocalContextSearch API within the Places API. + */ + PLACES_LOCAL_CONTEXT_SEARCH: 'PLACES_LOCAL_CONTEXT_SEARCH', + /** + * Identifies the NearbySearch API within the Places API. + */ + PLACES_NEARBY_SEARCH: 'PLACES_NEARBY_SEARCH', + /** + * Identifies the Search Text API within the Places API. + */ + PLACES_SEARCH_TEXT: 'PLACES_SEARCH_TEXT', + /** + * Identifies the getPanorama method within the Streetview service. + */ + STREETVIEW_GET_PANORAMA: 'STREETVIEW_GET_PANORAMA', +}; + +/** + * Represents a request error from a web service (i.e. the equivalent of a 4xx + * code in HTTP). + * + * Access by calling `const {MapsRequestError} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.MapsNetworkError} + * @constructor + */ +google.maps.MapsRequestError = function() {}; + +/** + * Represents a server-side error from a web service (i.e. the equivalent of a + * 5xx code in HTTP). + * + * Access by calling `const {MapsServerError} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.MapsNetworkError} + * @constructor + */ +google.maps.MapsServerError = function() {}; + +/** + * + * Access by calling `const {Marker} = await + * google.maps.importLibrary("marker")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {google.maps.MarkerOptions=} opts Named optional arguments + * @extends {google.maps.MVCObject} + * @constructor + * @deprecated As of February 21st, 2024, google.maps.Marker is deprecated. + * Please use {@link google.maps.marker.AdvancedMarkerElement} instead. At + * this time, google.maps.Marker is not scheduled to be discontinued, + * but {@link google.maps.marker.AdvancedMarkerElement} is recommended over + * google.maps.Marker. While google.maps.Marker will continue to receive bug + * fixes for any major regressions, existing bugs in google.maps.Marker will + * not be addressed. At least 12 months notice will be given before support + * is discontinued. Please see https://developers.google.com/maps/deprecations + * for additional details and https://developers.google.com/maps/documentation/javascript/advanced-markers/migration + * for the migration guide. + */ +google.maps.Marker = function(opts) {}; + +/** + * Get the currently running animation. + * @return {google.maps.Animation|null|undefined} + */ +google.maps.Marker.prototype.getAnimation = function() {}; + +/** + * Get the clickable status of the {@link google.maps.Marker}. + * @return {boolean} True if the Marker is clickable. + */ +google.maps.Marker.prototype.getClickable = function() {}; + +/** + * Get the mouse cursor type shown on hover. + * @return {string|null|undefined} + */ +google.maps.Marker.prototype.getCursor = function() {}; + +/** + * Get the draggable status of the {@link google.maps.Marker}. + * @return {boolean} True if the Marker is draggable. + */ +google.maps.Marker.prototype.getDraggable = function() {}; + +/** + * Get the icon of the {@link google.maps.Marker}. See {@link + * google.maps.MarkerOptions.icon}. + * @return {string|google.maps.Icon|google.maps.Symbol|null|undefined} + */ +google.maps.Marker.prototype.getIcon = function() {}; + +/** + * Get the label of the {@link google.maps.Marker}. See {@link + * google.maps.MarkerOptions.label}. + * @return {google.maps.MarkerLabel|string|null|undefined} + */ +google.maps.Marker.prototype.getLabel = function() {}; + +/** + * Get the map or panaroama the {@link google.maps.Marker} is rendered on. + * @return {google.maps.Map|google.maps.StreetViewPanorama} + */ +google.maps.Marker.prototype.getMap = function() {}; + +/** + * Get the opacity of the {@link google.maps.Marker}. + * @return {number|null|undefined} A number between 0.0 and 1.0. + */ +google.maps.Marker.prototype.getOpacity = function() {}; + +/** + * Get the position of the {@link google.maps.Marker}. + * @return {google.maps.LatLng|null|undefined} + */ +google.maps.Marker.prototype.getPosition = function() {}; + +/** + * Get the shape of the {@link google.maps.Marker} used for interaction. + * See {@link google.maps.MarkerOptions.shape} and {@link + * google.maps.MarkerShape}. + * @return {google.maps.MarkerShape|null|undefined} + */ +google.maps.Marker.prototype.getShape = function() {}; + +/** + * Get the title of the {@link google.maps.Marker} tooltip. See {@link + * google.maps.MarkerOptions.title}. + * @return {string|null|undefined} + */ +google.maps.Marker.prototype.getTitle = function() {}; + +/** + * Get the visibility of the {@link google.maps.Marker}. + * @return {boolean} True if the Marker is visible. + */ +google.maps.Marker.prototype.getVisible = function() {}; + +/** + * Get the zIndex of the {@link google.maps.Marker}. See {@link + * google.maps.MarkerOptions.zIndex}. + * @return {number|null|undefined} zIndex of the Marker. + */ +google.maps.Marker.prototype.getZIndex = function() {}; + +/** + * Start an animation. Any ongoing animation will be cancelled. Currently + * supported animations are: {@link google.maps.Animation.BOUNCE}, {@link + * google.maps.Animation.DROP}. Passing in null will cause any + * animation to stop. + * @param {?google.maps.Animation=} animation The animation to play. + * @return {undefined} + */ +google.maps.Marker.prototype.setAnimation = function(animation) {}; + +/** + * Set if the {@link google.maps.Marker} is clickable. + * @param {boolean} flag If true, the Marker can be clicked. + * @return {undefined} + */ +google.maps.Marker.prototype.setClickable = function(flag) {}; + +/** + * Set the mouse cursor type shown on hover. + * @param {?string=} cursor Mouse cursor type. + * @return {undefined} + */ +google.maps.Marker.prototype.setCursor = function(cursor) {}; + +/** + * Set if the {@link google.maps.Marker} is draggable. + * @param {?boolean} flag If true, the Marker can be dragged. + * @return {undefined} + */ +google.maps.Marker.prototype.setDraggable = function(flag) {}; + +/** + * Set the icon for the {@link google.maps.Marker}. See {@link + * google.maps.MarkerOptions.icon}. + * @param {(string|google.maps.Icon|google.maps.Symbol|null)=} icon + * @return {undefined} + */ +google.maps.Marker.prototype.setIcon = function(icon) {}; + +/** + * Set the label for the {@link google.maps.Marker}. See {@link + * google.maps.MarkerOptions.label}. + * @param {(string|google.maps.MarkerLabel|null)=} label The label can either be + * a character string or a {@link google.maps.MarkerLabel} object. + * @return {undefined} + */ +google.maps.Marker.prototype.setLabel = function(label) {}; + +/** + * Renders the {@link google.maps.Marker} on the specified map or panorama. If + * map is set to null, the marker will be removed. + * @param {google.maps.Map|google.maps.StreetViewPanorama} map + * @return {undefined} + */ +google.maps.Marker.prototype.setMap = function(map) {}; + +/** + * Set the opacity of the {@link google.maps.Marker}. + * @param {?number=} opacity A number between 0.0, transparent, and 1.0, opaque. + * @return {undefined} + */ +google.maps.Marker.prototype.setOpacity = function(opacity) {}; + +/** + * Set the options for the {@link google.maps.Marker}. + * @param {google.maps.MarkerOptions} options + * @return {undefined} + */ +google.maps.Marker.prototype.setOptions = function(options) {}; + +/** + * Set the postition for the {@link google.maps.Marker}. + * @param {(google.maps.LatLng|google.maps.LatLngLiteral|null)=} latlng The new + * position. + * @return {undefined} + */ +google.maps.Marker.prototype.setPosition = function(latlng) {}; + +/** + * Set the shape of the {@link google.maps.Marker} used for interaction. + * See {@link google.maps.MarkerOptions.shape} and {@link + * google.maps.MarkerShape}. + * @param {?google.maps.MarkerShape=} shape + * @return {undefined} + */ +google.maps.Marker.prototype.setShape = function(shape) {}; + +/** + * Set the title of the {@link google.maps.Marker} tooltip. See {@link + * google.maps.MarkerOptions.title}. + * @param {?string=} title + * @return {undefined} + */ +google.maps.Marker.prototype.setTitle = function(title) {}; + +/** + * Set if the {@link google.maps.Marker} is visible. + * @param {boolean} visible If true, the Marker is visible + * @return {undefined} + */ +google.maps.Marker.prototype.setVisible = function(visible) {}; + +/** + * Set the zIndex of the {@link google.maps.Marker}. See {@link + * google.maps.MarkerOptions.zIndex}. + * @param {?number=} zIndex + * @return {undefined} + */ +google.maps.Marker.prototype.setZIndex = function(zIndex) {}; + +/** + * The maximum default z-index that the API will assign to a marker. You may set + * a higher z-index to bring a marker to the front. + * @const + * @type {number} + */ +google.maps.Marker.MAX_ZINDEX; + +/** + * These options specify the appearance of a marker label. A marker label is a + * string (often a single character) which will appear inside the marker. If you + * are using it with a custom marker, you can reposition it with the + * labelOrigin property in the Icon class. + * @record + */ +google.maps.MarkerLabel = function() {}; + +/** + * The className property of the label's element (equivalent to the + * element's class attribute). Multiple space-separated CSS classes can be + * added. The font color, size, weight, and family can only be set via the other + * properties of MarkerLabel. CSS classes should not be used to + * change the position nor orientation of the label (e.g. using translations and + * rotations) if also using marker + * collision management. + * @default '' (empty string) + * @type {string|undefined} + */ +google.maps.MarkerLabel.prototype.className; + +/** + * The color of the label text. + * @default 'black' + * @type {string|undefined} + */ +google.maps.MarkerLabel.prototype.color; + +/** + * The font family of the label text (equivalent to the CSS font-family + * property). + * @type {string|undefined} + */ +google.maps.MarkerLabel.prototype.fontFamily; + +/** + * The font size of the label text (equivalent to the CSS font-size property). + * @default '14px' + * @type {string|undefined} + */ +google.maps.MarkerLabel.prototype.fontSize; + +/** + * The font weight of the label text (equivalent to the CSS font-weight + * property). + * @type {string|undefined} + */ +google.maps.MarkerLabel.prototype.fontWeight; + +/** + * The text to be displayed in the label. + * @type {string} + */ +google.maps.MarkerLabel.prototype.text; + +/** + * @record + */ +google.maps.MarkerLibrary = function() {}; + +/** + * @type {typeof google.maps.marker.AdvancedMarkerClickEvent} + */ +google.maps.MarkerLibrary.prototype.AdvancedMarkerClickEvent; + +/** + * @type {typeof google.maps.marker.AdvancedMarkerElement} + */ +google.maps.MarkerLibrary.prototype.AdvancedMarkerElement; + +/** + * @type {typeof google.maps.Animation} + */ +google.maps.MarkerLibrary.prototype.Animation; + +/** + * @type {typeof google.maps.CollisionBehavior} + */ +google.maps.MarkerLibrary.prototype.CollisionBehavior; + +/** + * @type {typeof google.maps.Marker} + */ +google.maps.MarkerLibrary.prototype.Marker; + +/** + * @type {typeof google.maps.marker.PinElement} + */ +google.maps.MarkerLibrary.prototype.PinElement; + +/** + * MarkerOptions object used to define the properties that can be set on a + * Marker. + * @record + * @deprecated As of February 21st, 2024, google.maps.Marker is deprecated. + * Please use google.maps.marker.AdvancedMarkerElement instead. Please see + * https://developers.google.com/maps/deprecations + * for deprecation details and https://developers.google.com/maps/documentation/javascript/advanced-markers/migration + * for the migration guide. + */ +google.maps.MarkerOptions = function() {}; + +/** + * The offset from the marker's position to the tip of an InfoWindow that + * has been opened with the marker as anchor. + * @type {!google.maps.Point|null|undefined} + */ +google.maps.MarkerOptions.prototype.anchorPoint; + +/** + * Which animation to play when marker is added to a map. + * @default null + * @type {!google.maps.Animation|null|undefined} + */ +google.maps.MarkerOptions.prototype.animation; + +/** + * If true, the marker receives mouse and touch events. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.MarkerOptions.prototype.clickable; + +/** + * If false, disables cross that appears beneath the marker when + * dragging. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.MarkerOptions.prototype.crossOnDrag; + +/** + * Mouse cursor type to show on hover. + * @default pointer + * @type {string|null|undefined} + */ +google.maps.MarkerOptions.prototype.cursor; + +/** + * If true, the marker can be dragged. Note: Setting this to + * true will make the marker clickable even if + * clickable is set to false. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.MarkerOptions.prototype.draggable; + +/** + * Icon for the foreground. If a string is provided, it is treated as though it + * were an Icon with the string as url. + * @type {string|!google.maps.Icon|!google.maps.Symbol|null|undefined} + */ +google.maps.MarkerOptions.prototype.icon; + +/** + * Adds a label to the marker. A marker label is a letter or number that appears + * inside a marker. The label can either be a string, or a + * MarkerLabel object. If provided and {@link + * google.maps.MarkerOptions.title} is not provided, an accessibility text (e.g. + * for use with screen readers) will be added to the marker with the provided + * label's text. Please note that the label is currently only + * used for accessibility text for non-optimized markers. + * @default null + * @type {string|!google.maps.MarkerLabel|null|undefined} + */ +google.maps.MarkerOptions.prototype.label; + +/** + * Map on which to display Marker. The map is required to display the marker and + * can be provided with {@link google.maps.Marker.setMap} if not provided at + * marker construction. + * @type {!google.maps.Map|!google.maps.StreetViewPanorama|null|undefined} + */ +google.maps.MarkerOptions.prototype.map; + +/** + * A number between 0.0, transparent, and 1.0, opaque. + * @default 1.0 + * @type {number|null|undefined} + */ +google.maps.MarkerOptions.prototype.opacity; + +/** + * Optimization enhances performance by rendering many markers as a single + * static element. This is useful in cases where a large number of markers is + * required. Read more about marker + * optimization. Note: This optimization has no effect for markers on + * vector maps. + * @type {boolean|null|undefined} + */ +google.maps.MarkerOptions.prototype.optimized; + +/** + * Sets the marker position. A marker may be constructed but not displayed until + * its position is provided - for example, by a user's actions or choices. A + * marker position can be provided with {@link google.maps.Marker.setPosition} + * if not provided at marker construction. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} + */ +google.maps.MarkerOptions.prototype.position; + +/** + * Image map region definition used for drag/click. + * @type {!google.maps.MarkerShape|null|undefined} + */ +google.maps.MarkerOptions.prototype.shape; + +/** + * Rollover text. If provided, an accessibility text (e.g. for use with screen + * readers) will be added to the marker with the provided value. Please note + * that the title is currently only used for accessibility text for + * non-optimized markers. + * @default undefined + * @type {string|null|undefined} + */ +google.maps.MarkerOptions.prototype.title; + +/** + * If true, the marker is visible. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.MarkerOptions.prototype.visible; + +/** + * All markers are displayed on the map in order of their zIndex, with higher + * values displaying in front of markers with lower values. By default, markers + * are displayed according to their vertical position on screen, with lower + * markers appearing in front of markers further up the screen. + * @type {number|null|undefined} + */ +google.maps.MarkerOptions.prototype.zIndex; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * Set a collision behavior for markers on vector maps. + * @default null + * @type {string|!google.maps.CollisionBehavior|null|undefined} + * @deprecated collisionBehavior is deprecated as of July 2023. + * Use {@link google.maps.marker.AdvancedMarkerElement.collisionBehavior} + * instead. + */ +google.maps.MarkerOptions.prototype.collisionBehavior; + +/** + * This object defines the clickable region of a marker image. The shape + * consists of two properties — type and coord + * — which define the non-transparent region of an image. + * @record + */ +google.maps.MarkerShape = function() {}; + +/** + * The format of this attribute depends on the value of the type + * and follows the w3 AREA coords specification found at + * http://www.w3.org/TR/REC-html40/struct/objects.html#adef-coords.
The + * coords attribute is an array of integers that specify the pixel + * position of the shape relative to the top-left corner of the target image. + * The coordinates depend on the value of type as follows: + *
  - circle: coords is [x1,y1,r] where + * x1,y2 are the coordinates of the center of the circle, and r is the radius of + * the circle.
  - poly: coords is + * [x1,y1,x2,y2...xn,yn] where each x,y pair contains the + * coordinates of one vertex of the polygon.
  - + * rect: coords is [x1,y1,x2,y2] where x1,y1 are the + * coordinates of the upper-left corner of the rectangle and x2,y2 are the + * coordinates of the lower-right coordinates of the rectangle. + * @type {!Array|null} + */ +google.maps.MarkerShape.prototype.coords; + +/** + * Describes the shape's type and can be circle, + * poly or rect. + * @type {string} + */ +google.maps.MarkerShape.prototype.type; + +/** + * A MaxZoom result in JSON format retrieved from the MaxZoomService. + * @record + */ +google.maps.MaxZoomResult = function() {}; + +/** + * Status of the request. This property is only defined when using callbacks + * with {@link google.maps.MaxZoomService.getMaxZoomAtLatLng} (it is not defined + * when using Promises). + * @type {!google.maps.MaxZoomStatus|null} + */ +google.maps.MaxZoomResult.prototype.status; + +/** + * The maximum zoom level found at the given LatLng. + * @type {number} + */ +google.maps.MaxZoomResult.prototype.zoom; + +/** + * A service for obtaining the highest zoom level at which satellite imagery is + * available for a given location. + * + * Access by calling `const {MaxZoomService} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.MaxZoomService = function() {}; + +/** + * Returns the maximum zoom level for which detailed imagery is available at a + * particular LatLng for the satellite map type. As + * this request is asynchronous, you must pass a callback function + * which will be executed upon completion of the request, being passed a + * MaxZoomResult. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} latlng + * @param {(function(!google.maps.MaxZoomResult): void)=} callback + * @return {!Promise} + */ +google.maps.MaxZoomService.prototype.getMaxZoomAtLatLng = function( + latlng, callback) {}; + +/** + * The status returned by the MaxZoomService on the completion of a + * call to getMaxZoomAtLatLng(). Specify these by value, or by + * using the constant's name. For example, 'OK' or + * google.maps.MaxZoomStatus.OK. + * + * Access by calling `const {MaxZoomStatus} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.MaxZoomStatus = { + /** + * An unknown error occurred. + */ + ERROR: 'ERROR', + /** + * The response contains a valid MaxZoomResult. + */ + OK: 'OK', +}; + +/** + * Options for the rendering of the motion tracking control. + * @record + */ +google.maps.MotionTrackingControlOptions = function() {}; + +/** + * Position id. This is used to specify the position of this control on the + * panorama. + * @default {@link google.maps.ControlPosition.INLINE_END_BLOCK_END} + * @type {!google.maps.ControlPosition|null|undefined} + */ +google.maps.MotionTrackingControlOptions.prototype.position; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * A Orientation3D is a three-dimensional vector used for standard + * mathematical rotation transformations along heading, tilt, and roll.

    + *
  • heading is an angle in the range [0, 360) degrees.
  • tilt is an + * angle in the range [0, 360) degrees.
  • roll is an angle in the range + * [0, 360) degrees.
+ * + * Access by calling `const {Orientation3D} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.Orientation3D|!google.maps.Orientation3DLiteral} value + * The initializing value. + * @implements {google.maps.Orientation3DLiteral} + * @constructor + */ +google.maps.Orientation3D = function(value) {}; + +/** + * Rotation about the z-axis (normal to the Earth's surface). A value of 0 + * (the default) equals North. A positive rotation is clockwise around the + * z-axis and specified in degrees from 0 to 360. Values above or below this + * range will be wrapped so that they fall within the range. For example, a + * value of -190 will be converted to 170. A value of 530 will be converted to + * 170 as well. + * @default 0 + * @type {number} + */ +google.maps.Orientation3D.prototype.heading; + +/** + * Rotation about the y-axis. A positive rotation is clockwise around the y-axis + * and specified in degrees from 0 to 360. Values above or below this range will + * be wrapped so that they fall within the range. For example, a value of -190 + * will be converted to 170. A value of 530 will be converted to 170 as well. + * @default 0 + * @type {number} + */ +google.maps.Orientation3D.prototype.roll; + +/** + * Rotation about the x-axis. A positive rotation is clockwise around the x-axis + * and specified in degrees from 0 to 360. Values above or below this range will + * be wrapped so that they fall within the range. For example, a value of -190 + * will be converted to 170. A value of 530 will be converted to 170 as well. + * @default 0 + * @type {number} + */ +google.maps.Orientation3D.prototype.tilt; + +/** + * Comparison function. + * @param {!google.maps.Orientation3D|!google.maps.Orientation3DLiteral|null} + * other Another Orientation3D object. + * @return {boolean} Whether the two objects are equal. + */ +google.maps.Orientation3D.prototype.equals = function(other) {}; + +/** + * Converts to JSON representation. This function is intended to be used via + * JSON.stringify. + * @return {!google.maps.Orientation3DLiteral} + */ +google.maps.Orientation3D.prototype.toJSON = function() {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Object literals are accepted in place of Orientation3D objects, + * as a convenience, in many places. These are converted to + * Orientation3D objects when the Maps API encounters them. + * @record + */ +google.maps.Orientation3DLiteral = function() {}; + +/** + * Rotation about the z-axis (normal to the Earth's surface). A value of 0 + * (the default) equals North. A positive rotation is clockwise around the + * z-axis and specified in degrees from 0 to 360. + * @type {number|null|undefined} + */ +google.maps.Orientation3DLiteral.prototype.heading; + +/** + * Rotation about the y-axis. A positive rotation is clockwise around the y-axis + * and specified in degrees from 0 to 360. + * @type {number|null|undefined} + */ +google.maps.Orientation3DLiteral.prototype.roll; + +/** + * Rotation about the x-axis. A positive rotation is clockwise around the x-axis + * and specified in degrees from 0 to 360. + * @type {number|null|undefined} + */ +google.maps.Orientation3DLiteral.prototype.tilt; + +/** + * You can implement this class if you want to display custom types of overlay + * objects on the map.

Inherit from this class by setting your + * overlay's prototype: MyOverlay.prototype = new + * google.maps.OverlayView();. The OverlayView constructor + * is guaranteed to be an empty function.

You must implement three + * methods: onAdd(), draw(), and + * onRemove().
  • In the onAdd() method, you + * should create DOM objects and append them as children of the panes.
  • + *
  • In the draw() method, you should position these + * elements.
  • In the onRemove() method, you should remove + * the objects from the DOM.
You must call setMap() with + * a valid Map object to trigger the call to the + * onAdd() method and setMap(null) in order to trigger + * the onRemove() method. The setMap() method can be + * called at the time of construction or at any point afterward when the overlay + * should be re-shown after removing. The draw() method will then + * be called whenever a map property changes that could change the position of + * the element, such as zoom, center, or map type. + * + * Access by calling `const {OverlayView} = await + * google.maps.importLibrary("maps")` or `const {OverlayView} = await + * google.maps.importLibrary("streetView")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.OverlayView = function() {}; + +/** + * Stops click, tap, drag, and wheel events on the element from bubbling up to + * the map. Use this to prevent map dragging and zooming, as well as map + * "click" events. + * @param {!Element} element + * @return {undefined} + */ +google.maps.OverlayView.preventMapHitsAndGesturesFrom = function(element) {}; + +/** + * Stops click or tap on the element from bubbling up to the map. Use this to + * prevent the map from triggering "click" events. + * @param {!Element} element + * @return {undefined} + */ +google.maps.OverlayView.preventMapHitsFrom = function(element) {}; + +/** + * Implement this method to draw or update the overlay. Use the position from + * projection.fromLatLngToDivPixel() to correctly position the overlay relative + * to the MapPanes. This method is called after onAdd(), and is called on change + * of zoom or center. It is not recommended to do computationally expensive work + * in this method. + * @return {undefined} + */ +google.maps.OverlayView.prototype.draw = function() {}; + +/** + * @return {google.maps.Map|google.maps.StreetViewPanorama} + */ +google.maps.OverlayView.prototype.getMap = function() {}; + +/** + * Returns the panes in which this OverlayView can be rendered. The panes are + * not initialized until onAdd is called by the API. + * @return {?google.maps.MapPanes} + */ +google.maps.OverlayView.prototype.getPanes = function() {}; + +/** + * Returns the MapCanvasProjection object associated with this + * OverlayView. The projection is not initialized until + * onAdd is called by the API. + * @return {!google.maps.MapCanvasProjection} + */ +google.maps.OverlayView.prototype.getProjection = function() {}; + +/** + * Implement this method to initialize the overlay DOM elements. This method is + * called once after setMap() is called with a valid map. At this point, panes + * and projection will have been initialized. + * @return {undefined} + */ +google.maps.OverlayView.prototype.onAdd = function() {}; + +/** + * Implement this method to remove your elements from the DOM. This method is + * called once following a call to setMap(null). + * @return {undefined} + */ +google.maps.OverlayView.prototype.onRemove = function() {}; + +/** + * Adds the overlay to the map or panorama. + * @param {google.maps.Map|google.maps.StreetViewPanorama|null} map The map or + * panorama. If null, the layer will be removed. + * @return {undefined} + */ +google.maps.OverlayView.prototype.setMap = function(map) {}; + +/** + * @record + */ +google.maps.Padding = function() {}; + +/** + * Padding for the bottom, in pixels. + * @type {number|undefined} + */ +google.maps.Padding.prototype.bottom; + +/** + * Padding for the left, in pixels. + * @type {number|undefined} + */ +google.maps.Padding.prototype.left; + +/** + * Padding for the right, in pixels. + * @type {number|undefined} + */ +google.maps.Padding.prototype.right; + +/** + * Padding for the top, in pixels. + * @type {number|undefined} + */ +google.maps.Padding.prototype.top; + +/** + * Options for the rendering of the pan control. + * @record + */ +google.maps.PanControlOptions = function() {}; + +/** + * Position id. Used to specify the position of the control on the map. + * @default {@link google.maps.ControlPosition.INLINE_END_BLOCK_END} + * @type {!google.maps.ControlPosition|null|undefined} + */ +google.maps.PanControlOptions.prototype.position; + +/** + * Options for the Custom Pano Provider. + * @record + */ +google.maps.PanoProviderOptions = function() {}; + +/** + * If set, the renderer will use technologies (like webgl) that only work when + * cors headers are appropriately set on the provided images. It is the + * developer's task to serve the images correctly in combination with this + * flag, which might otherwise lead to SecurityErrors. + * @type {boolean|undefined} + */ +google.maps.PanoProviderOptions.prototype.cors; + +/** + * An elevation query sent by the ElevationService containing the + * path along which to return sampled data. This request defines a continuous + * path along the earth along which elevation samples should be taken at + * evenly-spaced distances. All paths from vertex to vertex use segments of the + * great circle between those two points. + * @record + */ +google.maps.PathElevationRequest = function() {}; + +/** + * The path along which to collect elevation values. + * @type {!Array|null|undefined} + */ +google.maps.PathElevationRequest.prototype.path; + +/** + * Required. The number of equidistant points along the given path for which to + * retrieve elevation data, including the endpoints. The number of samples must + * be a value between 2 and 512 inclusive. + * @type {number} + */ +google.maps.PathElevationRequest.prototype.samples; + +/** + * An elevation response returned by the {@link google.maps.ElevationService} + * containing the list of {@link google.maps.ElevationResult}s evenly-spaced + * along the path of the {@link google.maps.PathElevationRequest}. + * @record + */ +google.maps.PathElevationResponse = function() {}; + +/** + * The list of {@link google.maps.ElevationResult}s matching the samples of + * the {@link google.maps.PathElevationRequest}. + * @type {!Array} + */ +google.maps.PathElevationResponse.prototype.results; + +/** + * Contains information needed to locate, identify, or describe a place for + * a {@link google.maps.DirectionsRequest} or {@link + * google.maps.DistanceMatrixRequest}. In this context, "place" means + * a business, point of interest, or geographic location. For fetching + * information about a place, see {@link google.maps.places.PlacesService}. + * @record + */ +google.maps.Place = function() {}; + +/** + * The LatLng of the entity described by this place. + * @type {google.maps.LatLng|google.maps.LatLngLiteral|null|undefined} + */ +google.maps.Place.prototype.location; + +/** + * The place ID of the place (such as a business or point of interest). The + * place ID is a unique identifier of a place in the Google Maps database. Note + * that the placeId is the most accurate way of identifying a + * place. If possible, you should specify the placeId rather than a + * query. A place ID can be retrieved from any request to the + * Places API, such as a TextSearch. + * Place IDs can also be retrieved from requests to the Geocoding API. For more + * information, see the overview + * of place IDs. + * @type {string|undefined} + */ +google.maps.Place.prototype.placeId; + +/** + * A search query describing the place (such as a business or point of + * interest). An example query is "Quay, Upper Level, Overseas Passenger + * Terminal 5 Hickson Road, The Rocks NSW". If possible, you should specify + * the placeId rather than a query. The API does not + * guarantee the accuracy of resolving the query string to a place. If both the + * placeId and query are provided, an error occurs. + * @type {string|undefined} + */ +google.maps.Place.prototype.query; + +/** + * An interface representing a feature with a place ID which includes features + * of type {@link google.maps.FeatureType.ADMINISTRATIVE_AREA_LEVEL_1}, {@link + * google.maps.FeatureType.ADMINISTRATIVE_AREA_LEVEL_2}, {@link + * google.maps.FeatureType.COUNTRY}, {@link + * google.maps.FeatureType.LOCALITY}, {@link + * google.maps.FeatureType.POSTAL_CODE}, and {@link + * google.maps.FeatureType.SCHOOL_DISTRICT}. + * @extends {google.maps.Feature} + * @record + */ +google.maps.PlaceFeature = function() {}; + +/** + * The {@link google.maps.places.PlaceResult.place_id}. + * @type {string} + */ +google.maps.PlaceFeature.prototype.placeId; + +/** + * Fetches a Place for this PlaceFeature. In the + * resulting Place object, the id and the + * displayName properties will be populated. The display name will + * be in the language the end user sees on the map. (Additional fields can be + * subsequently requested via Place.fetchFields() subject to normal + * Places API enablement and billing.) Do not call this from a + * FeatureStyleFunction since only synchronous + * FeatureStyleFunctions are supported. The promise is rejected if there was an + * error fetching the Place. + * @return {!Promise} + */ +google.maps.PlaceFeature.prototype.fetchPlace = function() {}; + +/** + * @record + */ +google.maps.PlacesLibrary = function() {}; + +/** + * @type {typeof google.maps.places.AccessibilityOptions} + */ +google.maps.PlacesLibrary.prototype.AccessibilityOptions; + +/** + * @type {typeof google.maps.places.AddressComponent} + */ +google.maps.PlacesLibrary.prototype.AddressComponent; + +/** + * @type {typeof google.maps.places.Attribution} + */ +google.maps.PlacesLibrary.prototype.Attribution; + +/** + * @type {typeof google.maps.places.AuthorAttribution} + */ +google.maps.PlacesLibrary.prototype.AuthorAttribution; + +/** + * @type {typeof google.maps.places.Autocomplete} + */ +google.maps.PlacesLibrary.prototype.Autocomplete; + +/** + * @type {typeof google.maps.places.AutocompleteService} + */ +google.maps.PlacesLibrary.prototype.AutocompleteService; + +/** + * @type {typeof google.maps.places.AutocompleteSessionToken} + */ +google.maps.PlacesLibrary.prototype.AutocompleteSessionToken; + +/** + * @type {typeof google.maps.places.AutocompleteSuggestion} + */ +google.maps.PlacesLibrary.prototype.AutocompleteSuggestion; + +/** + * @type {typeof google.maps.places.BusinessStatus} + */ +google.maps.PlacesLibrary.prototype.BusinessStatus; + +/** + * @type {typeof google.maps.places.ConnectorAggregation} + */ +google.maps.PlacesLibrary.prototype.ConnectorAggregation; + +/** + * @type {typeof google.maps.places.EVChargeOptions} + */ +google.maps.PlacesLibrary.prototype.EVChargeOptions; + +/** + * @type {typeof google.maps.places.EVConnectorType} + */ +google.maps.PlacesLibrary.prototype.EVConnectorType; + +/** + * @type {typeof google.maps.places.FormattableText} + */ +google.maps.PlacesLibrary.prototype.FormattableText; + +/** + * @type {typeof google.maps.places.FuelOptions} + */ +google.maps.PlacesLibrary.prototype.FuelOptions; + +/** + * @type {typeof google.maps.places.FuelPrice} + */ +google.maps.PlacesLibrary.prototype.FuelPrice; + +/** + * @type {typeof google.maps.places.FuelType} + */ +google.maps.PlacesLibrary.prototype.FuelType; + +/** + * @type {typeof google.maps.places.Money} + */ +google.maps.PlacesLibrary.prototype.Money; + +/** + * @type {typeof google.maps.places.OpeningHours} + */ +google.maps.PlacesLibrary.prototype.OpeningHours; + +/** + * @type {typeof google.maps.places.OpeningHoursPeriod} + */ +google.maps.PlacesLibrary.prototype.OpeningHoursPeriod; + +/** + * @type {typeof google.maps.places.OpeningHoursPoint} + */ +google.maps.PlacesLibrary.prototype.OpeningHoursPoint; + +/** + * @type {typeof google.maps.places.ParkingOptions} + */ +google.maps.PlacesLibrary.prototype.ParkingOptions; + +/** + * @type {typeof google.maps.places.PaymentOptions} + */ +google.maps.PlacesLibrary.prototype.PaymentOptions; + +/** + * @type {typeof google.maps.places.Photo} + */ +google.maps.PlacesLibrary.prototype.Photo; + +/** + * @type {typeof google.maps.places.Place} + */ +google.maps.PlacesLibrary.prototype.Place; + +/** + * @type {typeof google.maps.places.PlacePrediction} + */ +google.maps.PlacesLibrary.prototype.PlacePrediction; + +/** + * @type {typeof google.maps.places.PlacesService} + */ +google.maps.PlacesLibrary.prototype.PlacesService; + +/** + * @type {typeof google.maps.places.PlacesServiceStatus} + */ +google.maps.PlacesLibrary.prototype.PlacesServiceStatus; + +/** + * @type {typeof google.maps.places.PlusCode} + */ +google.maps.PlacesLibrary.prototype.PlusCode; + +/** + * @type {typeof google.maps.places.PriceLevel} + */ +google.maps.PlacesLibrary.prototype.PriceLevel; + +/** + * @type {typeof google.maps.places.RankBy} + */ +google.maps.PlacesLibrary.prototype.RankBy; + +/** + * @type {typeof google.maps.places.Review} + */ +google.maps.PlacesLibrary.prototype.Review; + +/** + * @type {typeof google.maps.places.SearchBox} + */ +google.maps.PlacesLibrary.prototype.SearchBox; + +/** + * @type {typeof google.maps.places.SearchByTextRankPreference} + */ +google.maps.PlacesLibrary.prototype.SearchByTextRankPreference; + +/** + * @type {typeof google.maps.places.SearchNearbyRankPreference} + */ +google.maps.PlacesLibrary.prototype.SearchNearbyRankPreference; + +/** + * @type {typeof google.maps.places.StringRange} + */ +google.maps.PlacesLibrary.prototype.StringRange; + +/** + * + * Access by calling `const {Point} = await google.maps.importLibrary("core")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {number} x + * @param {number} y + * @constructor + */ +google.maps.Point = function(x, y) {}; + +/** + * The X coordinate + * @type {number} + */ +google.maps.Point.prototype.x; + +/** + * The Y coordinate + * @type {number} + */ +google.maps.Point.prototype.y; + +/** + * Compares two Points + * @param {!google.maps.Point|null} other + * @return {boolean} + */ +google.maps.Point.prototype.equals = function(other) {}; + +/** + * Returns a string representation of this Point. + * @return {string} + * @override + */ +google.maps.Point.prototype.toString = function() {}; + +/** + * This object is returned from mouse events on polylines and polygons. + * @extends {google.maps.MapMouseEvent} + * @record + */ +google.maps.PolyMouseEvent = function() {}; + +/** + * The index of the edge within the path beneath the cursor when the event + * occurred, if the event occurred on a mid-point on an editable polygon. + * @type {number|undefined} + */ +google.maps.PolyMouseEvent.prototype.edge; + +/** + * The index of the path beneath the cursor when the event occurred, if the + * event occurred on a vertex and the polygon is editable. Otherwise + * undefined. + * @type {number|undefined} + */ +google.maps.PolyMouseEvent.prototype.path; + +/** + * The index of the vertex beneath the cursor when the event occurred, if the + * event occurred on a vertex and the polyline or polygon is editable. If the + * event does not occur on a vertex, the value is undefined. + * @type {number|undefined} + */ +google.maps.PolyMouseEvent.prototype.vertex; + +/** + * A polygon (like a polyline) defines a series of connected coordinates in an + * ordered sequence. Additionally, polygons form a closed loop and define a + * filled region. See the samples in the developer's guide, starting with a + * simple + * polygon, a polygon + * with a hole, and more. Note that you can also use the Data layer to create a polygon. The Data layer + * offers a simpler way of creating holes because it handles the order of the + * inner and outer paths for you. + * + * Access by calling `const {Polygon} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {?google.maps.PolygonOptions=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.Polygon = function(opts) {}; + +/** + * Returns whether this shape can be dragged by the user. + * @return {boolean} + */ +google.maps.Polygon.prototype.getDraggable = function() {}; + +/** + * Returns whether this shape can be edited by the user. + * @return {boolean} + */ +google.maps.Polygon.prototype.getEditable = function() {}; + +/** + * Returns the map on which this shape is attached. + * @return {?google.maps.Map} + */ +google.maps.Polygon.prototype.getMap = function() {}; + +/** + * Retrieves the first path. + * @return {!google.maps.MVCArray} + */ +google.maps.Polygon.prototype.getPath = function() {}; + +/** + * Retrieves the paths for this polygon. + * @return {!google.maps.MVCArray>} + */ +google.maps.Polygon.prototype.getPaths = function() {}; + +/** + * Returns whether this poly is visible on the map. + * @return {boolean} + */ +google.maps.Polygon.prototype.getVisible = function() {}; + +/** + * If set to true, the user can drag this shape over the map. The + * geodesic property defines the mode of dragging. + * @param {boolean} draggable + * @return {undefined} + */ +google.maps.Polygon.prototype.setDraggable = function(draggable) {}; + +/** + * If set to true, the user can edit this shape by dragging the + * control points shown at the vertices and on each segment. + * @param {boolean} editable + * @return {undefined} + */ +google.maps.Polygon.prototype.setEditable = function(editable) {}; + +/** + * Renders this shape on the specified map. If map is set to null, + * the shape will be removed. + * @param {?google.maps.Map} map + * @return {undefined} + */ +google.maps.Polygon.prototype.setMap = function(map) {}; + +/** + * @param {?google.maps.PolygonOptions} options + * @return {undefined} + */ +google.maps.Polygon.prototype.setOptions = function(options) {}; + +/** + * Sets the first path. See PolygonOptions for more details. + * @param {!google.maps.MVCArray|!Array} + * path + * @return {undefined} + */ +google.maps.Polygon.prototype.setPath = function(path) {}; + +/** + * Sets the path for this polygon. + * @param {!google.maps.MVCArray>|!google.maps.MVCArray|!Array>|!Array} + * paths + * @return {undefined} + */ +google.maps.Polygon.prototype.setPaths = function(paths) {}; + +/** + * Hides this poly if set to false. + * @param {boolean} visible + * @return {undefined} + */ +google.maps.Polygon.prototype.setVisible = function(visible) {}; + +/** + * PolygonOptions object used to define the properties that can be set on a + * Polygon. + * @record + */ +google.maps.PolygonOptions = function() {}; + +/** + * Indicates whether this Polygon handles mouse events. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.PolygonOptions.prototype.clickable; + +/** + * If set to true, the user can drag this shape over the map. The + * geodesic property defines the mode of dragging. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.PolygonOptions.prototype.draggable; + +/** + * If set to true, the user can edit this shape by dragging the + * control points shown at the vertices and on each segment. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.PolygonOptions.prototype.editable; + +/** + * The fill color. All CSS3 colors are supported except for extended named + * colors. + * @type {string|null|undefined} + */ +google.maps.PolygonOptions.prototype.fillColor; + +/** + * The fill opacity between 0.0 and 1.0 + * @type {number|null|undefined} + */ +google.maps.PolygonOptions.prototype.fillOpacity; + +/** + * When true, edges of the polygon are interpreted as geodesic and + * will follow the curvature of the Earth. When false, edges of the + * polygon are rendered as straight lines in screen space. Note that the shape + * of a geodesic polygon may appear to change when dragged, as the dimensions + * are maintained relative to the surface of the earth. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.PolygonOptions.prototype.geodesic; + +/** + * Map on which to display Polygon. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.PolygonOptions.prototype.map; + +/** + * The ordered sequence of coordinates that designates a closed loop. Unlike + * polylines, a polygon may consist of one or more paths. As a result, the paths + * property may specify one or more arrays of LatLng coordinates. + * Paths are closed automatically; do not repeat the first vertex of the path as + * the last vertex. Simple polygons may be defined using a single array of + * LatLngs. More complex polygons may specify an array of arrays. + * Any simple arrays are converted into MVCArrays. Inserting or removing + * LatLngs from the MVCArray will automatically update + * the polygon on the map. + * @type {!google.maps.MVCArray>|!google.maps.MVCArray|!Array>|!Array|null|undefined} + */ +google.maps.PolygonOptions.prototype.paths; + +/** + * The stroke color. All CSS3 colors are supported except for extended named + * colors. + * @type {string|null|undefined} + */ +google.maps.PolygonOptions.prototype.strokeColor; + +/** + * The stroke opacity between 0.0 and 1.0 + * @type {number|null|undefined} + */ +google.maps.PolygonOptions.prototype.strokeOpacity; + +/** + * The stroke position. + * @default {@link google.maps.StrokePosition.CENTER} + * @type {!google.maps.StrokePosition|null|undefined} + */ +google.maps.PolygonOptions.prototype.strokePosition; + +/** + * The stroke width in pixels. + * @type {number|null|undefined} + */ +google.maps.PolygonOptions.prototype.strokeWeight; + +/** + * Whether this polygon is visible on the map. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.PolygonOptions.prototype.visible; + +/** + * The zIndex compared to other polys. + * @type {number|null|undefined} + */ +google.maps.PolygonOptions.prototype.zIndex; + +/** + * A polyline is a linear overlay of connected line segments on the map. + * + * Access by calling `const {Polyline} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {(!google.maps.PolylineOptions|null)=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.Polyline = function(opts) {}; + +/** + * Returns whether this shape can be dragged by the user. + * @return {boolean} + */ +google.maps.Polyline.prototype.getDraggable = function() {}; + +/** + * Returns whether this shape can be edited by the user. + * @return {boolean} + */ +google.maps.Polyline.prototype.getEditable = function() {}; + +/** + * Returns the map on which this shape is attached. + * @return {?google.maps.Map} + */ +google.maps.Polyline.prototype.getMap = function() {}; + +/** + * Retrieves the path. + * @return {!google.maps.MVCArray} + */ +google.maps.Polyline.prototype.getPath = function() {}; + +/** + * Returns whether this poly is visible on the map. + * @return {boolean} + */ +google.maps.Polyline.prototype.getVisible = function() {}; + +/** + * If set to true, the user can drag this shape over the map. The + * geodesic property defines the mode of dragging. + * @param {boolean} draggable + * @return {undefined} + */ +google.maps.Polyline.prototype.setDraggable = function(draggable) {}; + +/** + * If set to true, the user can edit this shape by dragging the + * control points shown at the vertices and on each segment. + * @param {boolean} editable + * @return {undefined} + */ +google.maps.Polyline.prototype.setEditable = function(editable) {}; + +/** + * Renders this shape on the specified map. If map is set to null, + * the shape will be removed. + * @param {?google.maps.Map} map + * @return {undefined} + */ +google.maps.Polyline.prototype.setMap = function(map) {}; + +/** + * @param {!google.maps.PolylineOptions|null} options + * @return {undefined} + */ +google.maps.Polyline.prototype.setOptions = function(options) {}; + +/** + * Sets the path. See PolylineOptions for more details. + * @param {!google.maps.MVCArray|!Array} + * path + * @return {undefined} + */ +google.maps.Polyline.prototype.setPath = function(path) {}; + +/** + * Hides this poly if set to false. + * @param {boolean} visible + * @return {undefined} + */ +google.maps.Polyline.prototype.setVisible = function(visible) {}; + +/** + * PolylineOptions object used to define the properties that can be set on a + * Polyline. + * @record + */ +google.maps.PolylineOptions = function() {}; + +/** + * Indicates whether this Polyline handles mouse events. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.PolylineOptions.prototype.clickable; + +/** + * If set to true, the user can drag this shape over the map. The + * geodesic property defines the mode of dragging. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.PolylineOptions.prototype.draggable; + +/** + * If set to true, the user can edit this shape by dragging the + * control points shown at the vertices and on each segment. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.PolylineOptions.prototype.editable; + +/** + * When true, edges of the polygon are interpreted as geodesic and + * will follow the curvature of the Earth. When false, edges of the + * polygon are rendered as straight lines in screen space. Note that the shape + * of a geodesic polygon may appear to change when dragged, as the dimensions + * are maintained relative to the surface of the earth. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.PolylineOptions.prototype.geodesic; + +/** + * The icons to be rendered along the polyline. + * @type {!Array|null|undefined} + */ +google.maps.PolylineOptions.prototype.icons; + +/** + * Map on which to display Polyline. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.PolylineOptions.prototype.map; + +/** + * The ordered sequence of coordinates of the Polyline. This path may be + * specified using either a simple array of LatLngs, or an + * MVCArray of LatLngs. Note that if you pass a simple + * array, it will be converted to an MVCArray Inserting or removing + * LatLngs in the MVCArray will automatically update the polyline + * on the map. + * @type {!google.maps.MVCArray|!Array|null|undefined} + */ +google.maps.PolylineOptions.prototype.path; + +/** + * The stroke color. All CSS3 colors are supported except for extended named + * colors. + * @type {string|null|undefined} + */ +google.maps.PolylineOptions.prototype.strokeColor; + +/** + * The stroke opacity between 0.0 and 1.0. + * @type {number|null|undefined} + */ +google.maps.PolylineOptions.prototype.strokeOpacity; + +/** + * The stroke width in pixels. + * @type {number|null|undefined} + */ +google.maps.PolylineOptions.prototype.strokeWeight; + +/** + * Whether this polyline is visible on the map. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.PolylineOptions.prototype.visible; + +/** + * The zIndex compared to other polys. + * @type {number|null|undefined} + */ +google.maps.PolylineOptions.prototype.zIndex; + +/** + * @record + */ +google.maps.Projection = function() {}; + +/** + * Translates from the LatLng cylinder to the Point plane. This interface + * specifies a function which implements translation from given + * LatLng values to world coordinates on the map projection. The + * Maps API calls this method when it needs to plot locations on screen. + * Projection objects must implement this method, but may return + * null if the projection cannot calculate the Point. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} latLng + * @param {!google.maps.Point=} point + * @return {?google.maps.Point} + */ +google.maps.Projection.prototype.fromLatLngToPoint = function(latLng, point) {}; + +/** + * This interface specifies a function which implements translation from world + * coordinates on a map projection to LatLng values. The Maps API + * calls this method when it needs to translate actions on screen to positions + * on the map. Projection objects must implement this method, but + * may return null if the projection cannot calculate the + * LatLng. + * @param {!google.maps.Point} pixel + * @param {boolean=} noClampNoWrap + * @return {?google.maps.LatLng} + */ +google.maps.Projection.prototype.fromPointToLatLng = function( + pixel, noClampNoWrap) {}; + +/** + * A rectangle overlay. + * + * Access by calling `const {Rectangle} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {(!google.maps.RectangleOptions|null)=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.Rectangle = function(opts) {}; + +/** + * Returns the bounds of this rectangle. + * @return {!google.maps.LatLngBounds|null} + */ +google.maps.Rectangle.prototype.getBounds = function() {}; + +/** + * Returns whether this rectangle can be dragged by the user. + * @return {boolean} + */ +google.maps.Rectangle.prototype.getDraggable = function() {}; + +/** + * Returns whether this rectangle can be edited by the user. + * @return {boolean} + */ +google.maps.Rectangle.prototype.getEditable = function() {}; + +/** + * Returns the map on which this rectangle is displayed. + * @return {!google.maps.Map|null} + */ +google.maps.Rectangle.prototype.getMap = function() {}; + +/** + * Returns whether this rectangle is visible on the map. + * @return {boolean} + */ +google.maps.Rectangle.prototype.getVisible = function() {}; + +/** + * Sets the bounds of this rectangle. + * @param {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|null} + * bounds + * @return {undefined} + */ +google.maps.Rectangle.prototype.setBounds = function(bounds) {}; + +/** + * If set to true, the user can drag this rectangle over the map. + * @param {boolean} draggable + * @return {undefined} + */ +google.maps.Rectangle.prototype.setDraggable = function(draggable) {}; + +/** + * If set to true, the user can edit this rectangle by dragging the + * control points shown at the corners and on each edge. + * @param {boolean} editable + * @return {undefined} + */ +google.maps.Rectangle.prototype.setEditable = function(editable) {}; + +/** + * Renders the rectangle on the specified map. If map is set to + * null, the rectangle will be removed. + * @param {!google.maps.Map|null} map + * @return {undefined} + */ +google.maps.Rectangle.prototype.setMap = function(map) {}; + +/** + * @param {!google.maps.RectangleOptions|null} options + * @return {undefined} + */ +google.maps.Rectangle.prototype.setOptions = function(options) {}; + +/** + * Hides this rectangle if set to false. + * @param {boolean} visible + * @return {undefined} + */ +google.maps.Rectangle.prototype.setVisible = function(visible) {}; + +/** + * RectangleOptions object used to define the properties that can be set on a + * Rectangle. + * @record + */ +google.maps.RectangleOptions = function() {}; + +/** + * The bounds. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|null|undefined} + */ +google.maps.RectangleOptions.prototype.bounds; + +/** + * Indicates whether this Rectangle handles mouse events. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.RectangleOptions.prototype.clickable; + +/** + * If set to true, the user can drag this rectangle over the map. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.RectangleOptions.prototype.draggable; + +/** + * If set to true, the user can edit this rectangle by dragging the + * control points shown at the corners and on each edge. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.RectangleOptions.prototype.editable; + +/** + * The fill color. All CSS3 colors are supported except for extended named + * colors. + * @type {string|null|undefined} + */ +google.maps.RectangleOptions.prototype.fillColor; + +/** + * The fill opacity between 0.0 and 1.0 + * @type {number|null|undefined} + */ +google.maps.RectangleOptions.prototype.fillOpacity; + +/** + * Map on which to display Rectangle. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.RectangleOptions.prototype.map; + +/** + * The stroke color. All CSS3 colors are supported except for extended named + * colors. + * @type {string|null|undefined} + */ +google.maps.RectangleOptions.prototype.strokeColor; + +/** + * The stroke opacity between 0.0 and 1.0 + * @type {number|null|undefined} + */ +google.maps.RectangleOptions.prototype.strokeOpacity; + +/** + * The stroke position. + * @default {@link google.maps.StrokePosition.CENTER} + * @type {!google.maps.StrokePosition|null|undefined} + */ +google.maps.RectangleOptions.prototype.strokePosition; + +/** + * The stroke width in pixels. + * @type {number|null|undefined} + */ +google.maps.RectangleOptions.prototype.strokeWeight; + +/** + * Whether this rectangle is visible on the map. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.RectangleOptions.prototype.visible; + +/** + * The zIndex compared to other polys. + * @type {number|null|undefined} + */ +google.maps.RectangleOptions.prototype.zIndex; + +/** + * + * Access by calling `const {RenderingType} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.RenderingType = { + /** + * Indicates that the map is a raster map. + */ + RASTER: 'RASTER', + /** + * Indicates that it is unknown yet whether the map is vector or raster, + * because the map has not finished initializing yet. + */ + UNINITIALIZED: 'UNINITIALIZED', + /** + * Indicates that the map is a vector map. + */ + VECTOR: 'VECTOR', +}; + +/** + * Options for the rendering of the rotate control. + * @record + */ +google.maps.RotateControlOptions = function() {}; + +/** + * Position id. Used to specify the position of the control on the map. + * @default {@link google.maps.ControlPosition.INLINE_END_BLOCK_END} + * @type {!google.maps.ControlPosition|null|undefined} + */ +google.maps.RotateControlOptions.prototype.position; + +/** + * @record + */ +google.maps.RoutesLibrary = function() {}; + +/** + * @type {typeof google.maps.DirectionsRenderer} + */ +google.maps.RoutesLibrary.prototype.DirectionsRenderer; + +/** + * @type {typeof google.maps.DirectionsService} + */ +google.maps.RoutesLibrary.prototype.DirectionsService; + +/** + * @type {typeof google.maps.DirectionsStatus} + */ +google.maps.RoutesLibrary.prototype.DirectionsStatus; + +/** + * @type {typeof google.maps.DistanceMatrixElementStatus} + */ +google.maps.RoutesLibrary.prototype.DistanceMatrixElementStatus; + +/** + * @type {typeof google.maps.DistanceMatrixService} + */ +google.maps.RoutesLibrary.prototype.DistanceMatrixService; + +/** + * @type {typeof google.maps.DistanceMatrixStatus} + */ +google.maps.RoutesLibrary.prototype.DistanceMatrixStatus; + +/** + * @type {typeof google.maps.TrafficModel} + */ +google.maps.RoutesLibrary.prototype.TrafficModel; + +/** + * @type {typeof google.maps.TransitMode} + */ +google.maps.RoutesLibrary.prototype.TransitMode; + +/** + * @type {typeof google.maps.TransitRoutePreference} + */ +google.maps.RoutesLibrary.prototype.TransitRoutePreference; + +/** + * @type {typeof google.maps.TravelMode} + */ +google.maps.RoutesLibrary.prototype.TravelMode; + +/** + * @type {typeof google.maps.VehicleType} + */ +google.maps.RoutesLibrary.prototype.VehicleType; + +/** + * Options for the rendering of the scale control. + * @record + */ +google.maps.ScaleControlOptions = function() {}; + +/** + * Style id. Used to select what style of scale control to display. + * @type {!google.maps.ScaleControlStyle|null|undefined} + */ +google.maps.ScaleControlOptions.prototype.style; + +/** + * Identifiers for scale control ids. + * @enum {number} + */ +google.maps.ScaleControlStyle = { + /** + * The standard scale control. + */ + DEFAULT: 0, +}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Settings which control the behavior of the Maps JavaScript API as a whole. + * + * Access by calling `const {Settings} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.Settings = function() {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * A collection of unique experience IDs to which to attribute Maps JS API + * calls. The returned value is a copy of the internal value that is stored in + * the Settings class singleton instance. Operations on + * google.maps.Settings.getInstance().experienceIds will therefore + * only modify the copy and not the internal value.

To update the + * internal value, set the property equal to the new value on the singleton + * instance (ex: google.maps.Settings.getInstance().experienceIds = + * [experienceId];). + * @type {!Iterable} + */ +google.maps.Settings.prototype.experienceIds; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * Returns the singleton instance of google.maps.Settings. + * @return {!google.maps.Settings} + */ +google.maps.Settings.getInstance = function() {}; + +/** + * + * Access by calling `const {Size} = await google.maps.importLibrary("core")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @param {number} width + * @param {number} height + * @param {string=} widthUnit + * @param {string=} heightUnit + * @constructor + */ +google.maps.Size = function(width, height, widthUnit, heightUnit) {}; + +/** + * The height along the y-axis, in pixels. + * @type {number} + */ +google.maps.Size.prototype.height; + +/** + * The width along the x-axis, in pixels. + * @type {number} + */ +google.maps.Size.prototype.width; + +/** + * Compares two Sizes. + * @param {google.maps.Size} other + * @return {boolean} + */ +google.maps.Size.prototype.equals = function(other) {}; + +/** + * Returns a string representation of this Size. + * @return {string} + * @override + */ +google.maps.Size.prototype.toString = function() {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * An enum representing the relationship in space between the landmark and the + * target. + * + * Access by calling `const {SpatialRelationship} = await + * google.maps.importLibrary("geocoding")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.SpatialRelationship = { + /** + * The target is directly opposite the landmark on the other side of the road. + */ + ACROSS_THE_ROAD: 'ACROSS_THE_ROAD', + /** + * Not on the same route as the landmark but a single turn away. + */ + AROUND_THE_CORNER: 'AROUND_THE_CORNER', + /** + * Close to the landmark's structure but further away from its access + * point. + */ + BEHIND: 'BEHIND', + /** + * The target is directly adjacent to the landmark. + */ + BESIDE: 'BESIDE', + /** + * On the same route as the landmark but not besides or across. + */ + DOWN_THE_ROAD: 'DOWN_THE_ROAD', + /** + * This is the default relationship when nothing more specific below applies. + */ + NEAR: 'NEAR', + /** + * The landmark has a spatial geometry and the target is within its bounds. + */ + WITHIN: 'WITHIN', +}; + +/** + * Options for the rendering of the Street View address control. + * @record + */ +google.maps.StreetViewAddressControlOptions = function() {}; + +/** + * Position id. This id is used to specify the position of the control on the + * map. The default position is TOP_LEFT. + * @type {!google.maps.ControlPosition|null|undefined} + */ +google.maps.StreetViewAddressControlOptions.prototype.position; + +/** + * Options for the rendering of the Street View pegman control on the map. + * @record + */ +google.maps.StreetViewControlOptions = function() {}; + +/** + * Position id. Used to specify the position of the control on the map. The + * default position is embedded within the navigation (zoom and pan) controls. + * If this position is empty or the same as that specified in the + * zoomControlOptions or panControlOptions, the Street + * View control will be displayed as part of the navigation controls. Otherwise, + * it will be displayed separately. + * @type {!google.maps.ControlPosition|null|undefined} + */ +google.maps.StreetViewControlOptions.prototype.position; + +/** + * Specifies the sources of panoramas to search. This allows a restriction to + * search for just official Google panoramas for example. Setting multiple + * sources will be evaluated as the intersection of those sources. Note: + * the {@link google.maps.StreetViewSource.OUTDOOR} source is not supported at + * this time. + * @default [{@link google.maps.StreetViewSource.DEFAULT}] + * @type {!Iterable|null|undefined} + */ +google.maps.StreetViewControlOptions.prototype.sources; + +/** + * A layer that illustrates the locations where Street View is available. + * + * Access by calling `const {StreetViewCoverageLayer} = await + * google.maps.importLibrary("streetView")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.StreetViewCoverageLayer = function() {}; + +/** + * Returns the map on which this layer is displayed. + * @return {!google.maps.Map|null} + */ +google.maps.StreetViewCoverageLayer.prototype.getMap = function() {}; + +/** + * Renders the layer on the specified map. If the map is set to null, the layer + * will be removed. + * @param {!google.maps.Map|null} map + * @return {undefined} + */ +google.maps.StreetViewCoverageLayer.prototype.setMap = function(map) {}; + +/** + * @record + */ +google.maps.StreetViewLibrary = function() {}; + +/** + * @type {typeof google.maps.InfoWindow} + */ +google.maps.StreetViewLibrary.prototype.InfoWindow; + +/** + * @type {typeof google.maps.OverlayView} + */ +google.maps.StreetViewLibrary.prototype.OverlayView; + +/** + * @type {typeof google.maps.StreetViewCoverageLayer} + */ +google.maps.StreetViewLibrary.prototype.StreetViewCoverageLayer; + +/** + * @type {typeof google.maps.StreetViewPanorama} + */ +google.maps.StreetViewLibrary.prototype.StreetViewPanorama; + +/** + * @type {typeof google.maps.StreetViewPreference} + */ +google.maps.StreetViewLibrary.prototype.StreetViewPreference; + +/** + * @type {typeof google.maps.StreetViewService} + */ +google.maps.StreetViewLibrary.prototype.StreetViewService; + +/** + * @type {typeof google.maps.StreetViewSource} + */ +google.maps.StreetViewLibrary.prototype.StreetViewSource; + +/** + * @type {typeof google.maps.StreetViewStatus} + */ +google.maps.StreetViewLibrary.prototype.StreetViewStatus; + +/** + * A collection of references to adjacent Street View panos. + * @record + */ +google.maps.StreetViewLink = function() {}; + +/** + * A localized string describing the link. + * @type {string|null} + */ +google.maps.StreetViewLink.prototype.description; + +/** + * The heading of the link. + * @type {number|null} + */ +google.maps.StreetViewLink.prototype.heading; + +/** + * A unique identifier for the panorama. This id is stable within a session but + * unstable across sessions. + * @type {string|null} + */ +google.maps.StreetViewLink.prototype.pano; + +/** + * A representation of a location in the Street View panorama. + * @record + */ +google.maps.StreetViewLocation = function() {}; + +/** + * A localized string describing the location. + * @type {string|null|undefined} + */ +google.maps.StreetViewLocation.prototype.description; + +/** + * The latlng of the panorama. + * @type {!google.maps.LatLng|null|undefined} + */ +google.maps.StreetViewLocation.prototype.latLng; + +/** + * A unique identifier for the panorama. This is stable within a session but + * unstable across sessions. + * @type {string} + */ +google.maps.StreetViewLocation.prototype.pano; + +/** + * Short description of the location. + * @type {string|null|undefined} + */ +google.maps.StreetViewLocation.prototype.shortDescription; + +/** + * A Street View request to be sent with getPanorama. + * StreetViewLocationRequest lets you search for a Street View + * panoroma at a specified location. + * @record + */ +google.maps.StreetViewLocationRequest = function() {}; + +/** + * Specifies the location where to search for a Street View panorama. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|null|undefined} + */ +google.maps.StreetViewLocationRequest.prototype.location; + +/** + * Sets a preference for which panorama should be found within the radius: the + * one nearest to the provided location, or the best one within the radius. + * @type {!google.maps.StreetViewPreference|null|undefined} + */ +google.maps.StreetViewLocationRequest.prototype.preference; + +/** + * Sets a radius in meters in which to search for a panorama. + * @default 50 + * @type {number|null|undefined} + */ +google.maps.StreetViewLocationRequest.prototype.radius; + +/** + * Specifies the sources of panoramas to search. This allows a restriction to + * search for just outdoor panoramas for example. Setting multiple sources will + * be evaluated as the intersection of those sources. + * @default [{@link google.maps.StreetViewSource.DEFAULT}] + * @type {!Iterable|null|undefined} + */ +google.maps.StreetViewLocationRequest.prototype.sources; + +/** + * Specifies the source of panoramas to search. This allows a restriction to + * search for just outdoor panoramas for example. + * @default {@link google.maps.StreetViewSource.DEFAULT} + * @type {!google.maps.StreetViewSource|null|undefined} + * @deprecated Use sources instead. + */ +google.maps.StreetViewLocationRequest.prototype.source; + +/** + * A StreetViewPanoRequest is used with the + * getPanorama to find a panorama with a specified ID. + * @record + */ +google.maps.StreetViewPanoRequest = function() {}; + +/** + * Specifies the pano ID to search for. + * @type {string|null|undefined} + */ +google.maps.StreetViewPanoRequest.prototype.pano; + +/** + * Displays the panorama for a given LatLng or panorama ID. A + * StreetViewPanorama object provides a Street View + * "viewer" which can be stand-alone within a separate + * <div> or bound to a Map. + * + * Access by calling `const {StreetViewPanorama} = await + * google.maps.importLibrary("streetView")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!HTMLElement} container + * @param {?google.maps.StreetViewPanoramaOptions=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.StreetViewPanorama = function(container, opts) {}; + +/** + * Additional controls to attach to the panorama. To add a control to the + * panorama, add the control's <div> to the + * MVCArray corresponding to the {@link + * google.maps.ControlPosition} where it should be rendered. + * @type {!Array>} + */ +google.maps.StreetViewPanorama.prototype.controls; + +/** + * Sets focus on this StreetViewPanorama. You may wish to consider + * using this method along with a visible_changed event to make + * sure that StreetViewPanorama is visible before setting focus on + * it. A StreetViewPanorama that is not visible cannot be focused. + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.focus = function() {}; + +/** + * Returns the set of navigation links for the Street View panorama. + * @return {Array} + */ +google.maps.StreetViewPanorama.prototype.getLinks = function() {}; + +/** + * Returns the StreetViewLocation of the current panorama. + * @return {!google.maps.StreetViewLocation} + */ +google.maps.StreetViewPanorama.prototype.getLocation = function() {}; + +/** + * Returns the state of motion tracker. If true when the user + * physically moves the device and the browser supports it, the Street View + * Panorama tracks the physical movements. + * @return {boolean} + */ +google.maps.StreetViewPanorama.prototype.getMotionTracking = function() {}; + +/** + * Returns the current panorama ID for the Street View panorama. This id is + * stable within the browser's current session only. + * @return {string} + */ +google.maps.StreetViewPanorama.prototype.getPano = function() {}; + +/** + * Returns the heading and pitch of the photographer when this panorama was + * taken. For Street View panoramas on the road, this also reveals in which + * direction the car was travelling. This data is available after the + * pano_changed event. + * @return {!google.maps.StreetViewPov} + */ +google.maps.StreetViewPanorama.prototype.getPhotographerPov = function() {}; + +/** + * Returns the current LatLng position for the Street View + * panorama. + * @return {?google.maps.LatLng} + */ +google.maps.StreetViewPanorama.prototype.getPosition = function() {}; + +/** + * Returns the current point of view for the Street View panorama. + * @return {!google.maps.StreetViewPov} + */ +google.maps.StreetViewPanorama.prototype.getPov = function() {}; + +/** + * Returns the status of the panorama on completion of the + * setPosition() or setPano() request. + * @return {!google.maps.StreetViewStatus} + */ +google.maps.StreetViewPanorama.prototype.getStatus = function() {}; + +/** + * Returns true if the panorama is visible. It does not specify + * whether Street View imagery is available at the specified position. + * @return {boolean} + */ +google.maps.StreetViewPanorama.prototype.getVisible = function() {}; + +/** + * Returns the zoom level of the panorama. Fully zoomed-out is level 0, where + * the field of view is 180 degrees. Zooming in increases the zoom level. + * @return {number} + */ +google.maps.StreetViewPanorama.prototype.getZoom = function() {}; + +/** + * Set the custom panorama provider called on pano change to load custom + * panoramas. + * @param {function(string): ?google.maps.StreetViewPanoramaData} provider + * @param {!google.maps.PanoProviderOptions=} opt_options + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.registerPanoProvider = function( + provider, opt_options) {}; + +/** + * Sets the set of navigation links for the Street View panorama. + * @param {Array} links + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.setLinks = function(links) {}; + +/** + * Sets the state of motion tracker. If true when the user + * physically moves the device and the browser supports it, the Street View + * Panorama tracks the physical movements. + * @param {boolean} motionTracking + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.setMotionTracking = function( + motionTracking) {}; + +/** + * Sets a collection of key-value pairs. + * @param {?google.maps.StreetViewPanoramaOptions} options + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.setOptions = function(options) {}; + +/** + * Sets the current panorama ID for the Street View panorama. + * @param {string} pano + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.setPano = function(pano) {}; + +/** + * Sets the current LatLng position for the Street View panorama. + * @param {google.maps.LatLng|google.maps.LatLngLiteral|null} latLng + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.setPosition = function(latLng) {}; + +/** + * Sets the point of view for the Street View panorama. + * @param {!google.maps.StreetViewPov} pov + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.setPov = function(pov) {}; + +/** + * Sets to true to make the panorama visible. If set to + * false, the panorama will be hidden whether it is embedded in the + * map or in its own <div>. + * @param {boolean} flag + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.setVisible = function(flag) {}; + +/** + * Sets the zoom level of the panorama. Fully zoomed-out is level 0, where the + * field of view is 180 degrees. Zooming in increases the zoom level. + * @param {number} zoom + * @return {undefined} + */ +google.maps.StreetViewPanorama.prototype.setZoom = function(zoom) {}; + +/** + * The representation of a panorama returned from the provider defined using + * registerPanoProvider. + * @record + */ +google.maps.StreetViewPanoramaData = function() {}; + +/** + * Specifies the copyright text for this panorama. + * @type {string|undefined} + */ +google.maps.StreetViewPanoramaData.prototype.copyright; + +/** + * Specifies the year and month in which the imagery in this panorama was + * acquired. The date string is in the form YYYY-MM. + * @type {string|undefined} + */ +google.maps.StreetViewPanoramaData.prototype.imageDate; + +/** + * Specifies the navigational links to adjacent panoramas. + * @type {!Array|undefined} + */ +google.maps.StreetViewPanoramaData.prototype.links; + +/** + * Specifies the location meta-data for this panorama. + * @type {!google.maps.StreetViewLocation|undefined} + */ +google.maps.StreetViewPanoramaData.prototype.location; + +/** + * Specifies the custom tiles for this panorama. + * @type {!google.maps.StreetViewTileData} + */ +google.maps.StreetViewPanoramaData.prototype.tiles; + +/** + * Options defining the properties of a StreetViewPanorama object. + * @record + */ +google.maps.StreetViewPanoramaOptions = function() {}; + +/** + * The enabled/disabled state of the address control. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.addressControl; + +/** + * The display options for the address control. + * @type {google.maps.StreetViewAddressControlOptions|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.addressControlOptions; + +/** + * The enabled/disabled state of click-to-go. Not applicable to custom + * panoramas. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.clickToGo; + +/** + * Size in pixels of the controls appearing on the panorama. This value must be + * supplied directly when creating the Panorama, updating this value later may + * bring the controls into an undefined state. Only governs the controls made by + * the Maps API itself. Does not scale developer created custom controls. + * @type {number|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.controlSize; + +/** + * Enables/disables all default UI. May be overridden individually. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.disableDefaultUI; + +/** + * Enables/disables zoom on double click. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.disableDoubleClickZoom; + +/** + * If true, the close button is displayed. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.enableCloseButton; + +/** + * The enabled/disabled state of the fullscreen control. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.fullscreenControl; + +/** + * The display options for the fullscreen control. + * @type {google.maps.FullscreenControlOptions|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.fullscreenControlOptions; + +/** + * The enabled/disabled state of the imagery acquisition date control. Disabled + * by default. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.imageDateControl; + +/** + * The enabled/disabled state of the links control. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.linksControl; + +/** + * Whether motion tracking is on or off. Enabled by default when the motion + * tracking control is present and permission is granted by a user or not + * required, so that the POV (point of view) follows the orientation of the + * device. This is primarily applicable to mobile devices. If + * motionTracking is set to false while + * motionTrackingControl is enabled, the motion tracking control + * appears but tracking is off. The user can tap the motion tracking control to + * toggle this option. If motionTracking is set to + * true while permission is required but not yet requested, the + * motion tracking control appears but tracking is off. The user can tap the + * motion tracking control to request permission. If motionTracking + * is set to true while permission is denied by a user, the motion + * tracking control appears disabled with tracking turned off. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.motionTracking; + +/** + * The enabled/disabled state of the motion tracking control. Enabled by default + * when the device has motion data, so that the control appears on the map. This + * is primarily applicable to mobile devices. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.motionTrackingControl; + +/** + * The display options for the motion tracking control. + * @type {google.maps.MotionTrackingControlOptions|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.motionTrackingControlOptions; + +/** + * The enabled/disabled state of the pan control. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.panControl; + +/** + * The display options for the pan control. + * @type {google.maps.PanControlOptions|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.panControlOptions; + +/** + * The panorama ID, which should be set when specifying a custom panorama. + * @type {string|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.pano; + +/** + * The LatLng position of the Street View panorama. + * @type {google.maps.LatLng|google.maps.LatLngLiteral|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.position; + +/** + * The camera orientation, specified as heading and pitch, for the panorama. + * @type {google.maps.StreetViewPov|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.pov; + +/** + * If false, disables scrollwheel zooming in Street View. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.scrollwheel; + +/** + * The display of street names on the panorama. If this value is not specified, + * or is set to true, street names are displayed on the panorama. + * If set to false, street names are not displayed. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.showRoadLabels; + +/** + * If true, the Street View panorama is visible on load. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.visible; + +/** + * The zoom of the panorama, specified as a number. A zoom of 0 gives a 180 + * degrees Field of View. + * @type {number|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.zoom; + +/** + * The enabled/disabled state of the zoom control. + * @type {boolean|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.zoomControl; + +/** + * The display options for the zoom control. + * @type {google.maps.ZoomControlOptions|null|undefined} + */ +google.maps.StreetViewPanoramaOptions.prototype.zoomControlOptions; + +/** + * A point of view object which specifies the camera's orientation at the + * Street View panorama's position. The point of view is defined as heading + * and pitch. + * @record + */ +google.maps.StreetViewPov = function() {}; + +/** + * The camera heading in degrees relative to true north. True north + * is 0°, east is 90°, south is 180°, west is 270°. + * @type {number} + */ +google.maps.StreetViewPov.prototype.heading; + +/** + * The camera pitch in degrees, relative to the street view vehicle. Ranges from + * 90° (directly upwards) to -90° (directly downwards). + * @type {number} + */ +google.maps.StreetViewPov.prototype.pitch; + +/** + * Options that bias a search result towards returning a Street View panorama + * that is nearest to the request location, or a panorama that is considered + * most likely to be what the user wants to see. Specify these by value, or by + * using the constant's name. For example, 'best' or + * google.maps.StreetViewPreference.BEST. + * + * Access by calling `const {StreetViewPreference} = await + * google.maps.importLibrary("streetView")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.StreetViewPreference = { + /** + * Return the Street View panorama that is considered most likely to be what + * the user wants to see. The best result is determined by algorithms based on + * user research and parameters such as recognised points of interest, image + * quality, and distance from the given location. + */ + BEST: 'best', + /** + * Return the Street View panorama that is the shortest distance from the + * provided location. This works well only within a limited radius. The + * recommended radius is 1km or less. + */ + NEAREST: 'nearest', +}; + +/** + * The response resolved for a Promise from {@link + * google.maps.StreetViewService.getPanorama}. + * @record + */ +google.maps.StreetViewResponse = function() {}; + +/** + * The representation of a panorama. + * @type {!google.maps.StreetViewPanoramaData} + */ +google.maps.StreetViewResponse.prototype.data; + +/** + * A StreetViewService object performs searches for Street View + * data. + * + * Access by calling `const {StreetViewService} = await + * google.maps.importLibrary("streetView")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.StreetViewService = function() {}; + +/** + * Retrieves the StreetViewPanoramaData for a panorama that matches + * the supplied Street View query request. The + * StreetViewPanoramaData is passed to the provided callback. + * @param {!google.maps.StreetViewLocationRequest|!google.maps.StreetViewPanoRequest} + * request + * @param {(function((!google.maps.StreetViewPanoramaData|null), + * !google.maps.StreetViewStatus): void)=} callback + * @return {!Promise} + */ +google.maps.StreetViewService.prototype.getPanorama = function( + request, callback) {}; + +/** + * Identifiers to limit Street View searches to selected sources. These values + * are specified as strings. For example, 'outdoor'. + * + * Access by calling `const {StreetViewSource} = await + * google.maps.importLibrary("streetView")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.StreetViewSource = { + /** + * Uses the default sources of Street View, searches will not be limited to + * specific sources. + */ + DEFAULT: 'default', + /** + * Limits Street View searches to official Google collections. + */ + GOOGLE: 'google', + /** + * Limits Street View searches to outdoor collections. Indoor collections are + * not included in search results. Note also that the search only returns + * panoramas where it's possible to determine whether they're indoors + * or outdoors. For example, PhotoSpheres are not returned because it's + * unknown whether they are indoors or outdoors. + */ + OUTDOOR: 'outdoor', +}; + +/** + * The status returned by the StreetViewService on completion of a + * Street View request. These can be specified by value, or by using the + * constant's name. For example, 'OK' or + * google.maps.StreetViewStatus.OK. + * + * Access by calling `const {StreetViewStatus} = await + * google.maps.importLibrary("streetView")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.StreetViewStatus = { + /** + * The request was successful. + */ + OK: 'OK', + /** + * The request could not be successfully processed, yet the exact reason for + * failure is unknown. + */ + UNKNOWN_ERROR: 'UNKNOWN_ERROR', + /** + * There are no panoramas found that match the search criteria. + */ + ZERO_RESULTS: 'ZERO_RESULTS', +}; + +/** + * The properties of the tile set used in a Street View panorama. + * @record + */ +google.maps.StreetViewTileData = function() {}; + +/** + * The heading (in degrees) at the center of the panoramic tiles. + * @type {number} + */ +google.maps.StreetViewTileData.prototype.centerHeading; + +/** + * The size (in pixels) at which tiles will be rendered. + * @type {!google.maps.Size} + */ +google.maps.StreetViewTileData.prototype.tileSize; + +/** + * The size (in pixels) of the whole panorama's "world". + * @type {!google.maps.Size} + */ +google.maps.StreetViewTileData.prototype.worldSize; + +/** + * Gets the tile image URL for the specified tile.
This is a custom method + * which you must implement, to supply your custom tiles. The API calls this + * method, supplying the following parameters:
pano is the + * panorama ID of the Street View tile.
tileZoom is the zoom + * level of the tile.
tileX is the x-coordinate of the + * tile.
tileY is the y-coordinate of the tile.
Your + * custom method must return the URL for the tile image.
+ * @param {string} pano + * @param {number} tileZoom + * @param {number} tileX + * @param {number} tileY + * @return {string} + */ +google.maps.StreetViewTileData.prototype.getTileUrl = function( + pano, tileZoom, tileX, tileY) {}; + +/** + * The possible positions of the stroke on a polygon. + * + * Access by calling `const {StrokePosition} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {number} + */ +google.maps.StrokePosition = { + /** + * The stroke is centered on the polygon's path, with half the stroke + * inside the polygon and half the stroke outside the polygon. + */ + CENTER: 0, + /** + * The stroke lies inside the polygon. + */ + INSIDE: 1, + /** + * The stroke lies outside the polygon. + */ + OUTSIDE: 2, +}; + +/** + * Creates a MapType with a custom style. + * + * Access by calling `const {StyledMapType} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {Array} styles + * @param {google.maps.StyledMapTypeOptions=} options + * @implements {google.maps.MapType} + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.StyledMapType = function(styles, options) {}; + +/** + * @type {string} + */ +google.maps.StyledMapType.prototype.alt; + +/** + * @type {number} + */ +google.maps.StyledMapType.prototype.maxZoom; + +/** + * @type {number} + */ +google.maps.StyledMapType.prototype.minZoom; + +/** + * @type {string} + */ +google.maps.StyledMapType.prototype.name; + +/** + * @type {google.maps.Projection} + */ +google.maps.StyledMapType.prototype.projection; + +/** + * @type {number} + */ +google.maps.StyledMapType.prototype.radius; + +/** + * @type {google.maps.Size} + */ +google.maps.StyledMapType.prototype.tileSize; + +/** + * @param {google.maps.Point} tileCoord Tile coordinates. + * @param {number} zoom Tile zoom. + * @param {Document} ownerDocument The document which owns this tile. + * @return {?Element} Resulting tile. + * @override + */ +google.maps.StyledMapType.prototype.getTile = function( + tileCoord, zoom, ownerDocument) {}; + +/** + * @param {?Element} tile Tile to release. + * @return {undefined} + * @override + */ +google.maps.StyledMapType.prototype.releaseTile = function(tile) {}; + +/** + * This class is used to specify options when creating a + * StyledMapType. These options cannot be changed after the + * StyledMapType is instantiated. + * @record + */ +google.maps.StyledMapTypeOptions = function() {}; + +/** + * Text to display when this MapType's button is hovered over + * in the map type control. + * @type {string|null|undefined} + */ +google.maps.StyledMapTypeOptions.prototype.alt; + +/** + * The maximum zoom level for the map when displaying this MapType. + * Optional. + * @type {number|null|undefined} + */ +google.maps.StyledMapTypeOptions.prototype.maxZoom; + +/** + * The minimum zoom level for the map when displaying this MapType. + * Optional. + * @type {number|null|undefined} + */ +google.maps.StyledMapTypeOptions.prototype.minZoom; + +/** + * The name to display in the map type control. + * @type {string|null|undefined} + */ +google.maps.StyledMapTypeOptions.prototype.name; + +/** + * Describes a symbol, which consists of a vector path with styling. A symbol + * can be used as the icon of a marker, or placed on a polyline. + * @record + */ +google.maps.Symbol = function() {}; + +/** + * The position of the symbol relative to the marker or polyline. The + * coordinates of the symbol's path are translated left and up by the + * anchor's x and y coordinates respectively. The position is expressed in + * the same coordinate system as the symbol's path. + * @default google.maps.Point(0,0) + * @type {!google.maps.Point|null|undefined} + */ +google.maps.Symbol.prototype.anchor; + +/** + * The symbol's fill color. All CSS3 colors are supported except for + * extended named colors. For symbol markers, this defaults to 'black'. + * For symbols on polylines, this defaults to the stroke color of the + * corresponding polyline. + * @type {string|null|undefined} + */ +google.maps.Symbol.prototype.fillColor; + +/** + * The symbol's fill opacity. + * @default 0 + * @type {number|null|undefined} + */ +google.maps.Symbol.prototype.fillOpacity; + +/** + * The origin of the label relative to the origin of the path, if label is + * supplied by the marker. The origin is expressed in the same coordinate system + * as the symbol's path. This property is unused for symbols on polylines. + * @default google.maps.Point(0,0) + * @type {!google.maps.Point|null|undefined} + */ +google.maps.Symbol.prototype.labelOrigin; + +/** + * The symbol's path, which is a built-in symbol path, or a custom path + * expressed using SVG + * path notation. Required. + * @type {!google.maps.SymbolPath|string} + */ +google.maps.Symbol.prototype.path; + +/** + * The angle by which to rotate the symbol, expressed clockwise in degrees. A + * symbol in an IconSequence where fixedRotation is + * false is rotated relative to the angle of the edge on which it + * lies. + * @default 0 + * @type {number|null|undefined} + */ +google.maps.Symbol.prototype.rotation; + +/** + * The amount by which the symbol is scaled in size. For symbol markers, this + * defaults to 1; after scaling, the symbol may be of any size. For symbols on a + * polyline, this defaults to the stroke weight of the polyline; after scaling, + * the symbol must lie inside a square 22 pixels in size centered at the + * symbol's anchor. + * @type {number|null|undefined} + */ +google.maps.Symbol.prototype.scale; + +/** + * The symbol's stroke color. All CSS3 colors are supported except for + * extended named colors. For symbol markers, this defaults to 'black'. + * For symbols on a polyline, this defaults to the stroke color of the polyline. + * @type {string|null|undefined} + */ +google.maps.Symbol.prototype.strokeColor; + +/** + * The symbol's stroke opacity. For symbol markers, this defaults to 1. For + * symbols on a polyline, this defaults to the stroke opacity of the polyline. + * @type {number|null|undefined} + */ +google.maps.Symbol.prototype.strokeOpacity; + +/** + * The symbol's stroke weight. + * @default The {@link google.maps.Symbol.scale} of the symbol. + * @type {number|null|undefined} + */ +google.maps.Symbol.prototype.strokeWeight; + +/** + * Built-in symbol paths. + * + * Access by calling `const {SymbolPath} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {number} + */ +google.maps.SymbolPath = { + /** + * A backward-pointing closed arrow. + */ + BACKWARD_CLOSED_ARROW: 0, + /** + * A backward-pointing open arrow. + */ + BACKWARD_OPEN_ARROW: 1, + /** + * A circle. + */ + CIRCLE: 2, + /** + * A forward-pointing closed arrow. + */ + FORWARD_CLOSED_ARROW: 3, + /** + * A forward-pointing open arrow. + */ + FORWARD_OPEN_ARROW: 4, +}; + +/** + * A representation of time as a Date object, a localized string, and a time + * zone. + * @record + */ +google.maps.Time = function() {}; + +/** + * A string representing the time's value. The time is displayed in the time + * zone of the transit stop. + * @type {string} + */ +google.maps.Time.prototype.text; + +/** + * The time zone in which this stop lies. The value is the name of the time zone + * as defined in the IANA Time Zone Database, e.g. "America/New_York". + * @type {string} + */ +google.maps.Time.prototype.time_zone; + +/** + * The time of this departure or arrival, specified as a JavaScript Date object. + * @type {!Date} + */ +google.maps.Time.prototype.value; + +/** + * A traffic layer. + * + * Access by calling `const {TrafficLayer} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.TrafficLayerOptions=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.TrafficLayer = function(opts) {}; + +/** + * Returns the map on which this layer is displayed. + * @return {!google.maps.Map|null} + */ +google.maps.TrafficLayer.prototype.getMap = function() {}; + +/** + * Renders the layer on the specified map. If map is set to null, + * the layer will be removed. + * @param {!google.maps.Map|null} map + * @return {undefined} + */ +google.maps.TrafficLayer.prototype.setMap = function(map) {}; + +/** + * @param {!google.maps.TrafficLayerOptions|null} options + * @return {undefined} + */ +google.maps.TrafficLayer.prototype.setOptions = function(options) {}; + +/** + * TrafficLayerOptions object used to define the properties that can be set on a + * TrafficLayer. + * @record + */ +google.maps.TrafficLayerOptions = function() {}; + +/** + * Whether the traffic layer refreshes with updated information automatically. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.TrafficLayerOptions.prototype.autoRefresh; + +/** + * Map on which to display the traffic layer. + * @type {google.maps.Map|null|undefined} + */ +google.maps.TrafficLayerOptions.prototype.map; + +/** + * The assumptions to use when predicting duration in traffic. Specified as part + * of a DirectionsRequest or + * DistanceMatrixRequest. + * Specify these by value, or by using the constant's name. For example, + * 'bestguess' or google.maps.TrafficModel.BEST_GUESS. + * + * Access by calling `const {TrafficModel} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.TrafficModel = { + /** + * Use historical traffic data to best estimate the time spent in traffic. + */ + BEST_GUESS: 'bestguess', + /** + * Use historical traffic data to make an optimistic estimate of what the + * duration in traffic will be. + */ + OPTIMISTIC: 'optimistic', + /** + * Use historical traffic data to make a pessimistic estimate of what the + * duration in traffic will be. + */ + PESSIMISTIC: 'pessimistic', +}; + +/** + * Information about an agency that operates a transit line. + * @record + */ +google.maps.TransitAgency = function() {}; + +/** + * The name of this transit agency. + * @type {string} + */ +google.maps.TransitAgency.prototype.name; + +/** + * The transit agency's phone number. + * @type {string} + */ +google.maps.TransitAgency.prototype.phone; + +/** + * The transit agency's URL. + * @type {string} + */ +google.maps.TransitAgency.prototype.url; + +/** + * Details about the departure, arrival, and mode of transit used in this step. + * @record + */ +google.maps.TransitDetails = function() {}; + +/** + * The arrival stop of this transit step. + * @type {!google.maps.TransitStop} + */ +google.maps.TransitDetails.prototype.arrival_stop; + +/** + * The arrival time of this step, specified as a Time object. + * @type {!google.maps.Time} + */ +google.maps.TransitDetails.prototype.arrival_time; + +/** + * The departure stop of this transit step. + * @type {!google.maps.TransitStop} + */ +google.maps.TransitDetails.prototype.departure_stop; + +/** + * The departure time of this step, specified as a Time object. + * @type {!google.maps.Time} + */ +google.maps.TransitDetails.prototype.departure_time; + +/** + * The direction in which to travel on this line, as it is marked on the vehicle + * or at the departure stop. + * @type {string} + */ +google.maps.TransitDetails.prototype.headsign; + +/** + * The expected number of seconds between equivalent vehicles at this stop. + * @type {number} + */ +google.maps.TransitDetails.prototype.headway; + +/** + * Details about the transit line used in this step. + * @type {!google.maps.TransitLine} + */ +google.maps.TransitDetails.prototype.line; + +/** + * The number of stops on this step. Includes the arrival stop, but not the + * departure stop. + * @type {number} + */ +google.maps.TransitDetails.prototype.num_stops; + +/** + * The text that appears in schedules and sign boards to identify a transit trip + * to passengers, for example, to identify train numbers for commuter rail + * trips. The text uniquely identifies a trip within a service day. + * @type {string} + */ +google.maps.TransitDetails.prototype.trip_short_name; + +/** + * A fare of a DirectionsRoute + * consisting of value and currency. + * @record + */ +google.maps.TransitFare = function() {}; + +/** + * An ISO 4217 currency code + * indicating the currency in which the fare is expressed. + * @type {string} + */ +google.maps.TransitFare.prototype.currency; + +/** + * The numerical value of the fare, expressed in the given + * currency. + * @type {number} + */ +google.maps.TransitFare.prototype.value; + +/** + * A transit layer. + * + * Access by calling `const {TransitLayer} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.TransitLayer = function() {}; + +/** + * Returns the map on which this layer is displayed. + * @return {google.maps.Map} + */ +google.maps.TransitLayer.prototype.getMap = function() {}; + +/** + * Renders the layer on the specified map. If map is set to null, + * the layer will be removed. + * @param {google.maps.Map} map + * @return {undefined} + */ +google.maps.TransitLayer.prototype.setMap = function(map) {}; + +/** + * Information about the transit line that operates this transit step. + * @record + */ +google.maps.TransitLine = function() {}; + +/** + * The transit agency that operates this transit line. + * @type {!Array} + */ +google.maps.TransitLine.prototype.agencies; + +/** + * The color commonly used in signage for this transit line, represented as a + * hex string. + * @type {string} + */ +google.maps.TransitLine.prototype.color; + +/** + * The URL for an icon associated with this line. + * @type {string} + */ +google.maps.TransitLine.prototype.icon; + +/** + * The full name of this transit line, e.g. "8 Avenue Local". + * @type {string} + */ +google.maps.TransitLine.prototype.name; + +/** + * The short name of this transit line, e.g. "E". + * @type {string} + */ +google.maps.TransitLine.prototype.short_name; + +/** + * The text color commonly used in signage for this transit line, represented as + * a hex string. + * @type {string} + */ +google.maps.TransitLine.prototype.text_color; + +/** + * The agency's URL which is specific to this transit line. + * @type {string} + */ +google.maps.TransitLine.prototype.url; + +/** + * The type of vehicle used, e.g. train or bus. + * @type {!google.maps.TransitVehicle} + */ +google.maps.TransitLine.prototype.vehicle; + +/** + * The valid transit mode e.g. bus that can be specified in a TransitOptions. Specify these by value, + * or by using the constant's name. For example, 'BUS' or + * google.maps.TransitMode.BUS. + * + * Access by calling `const {TransitMode} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.TransitMode = { + /** + * Specifies bus as a preferred mode of transit. + */ + BUS: 'BUS', + /** + * Specifies rail as a preferred mode of transit. + */ + RAIL: 'RAIL', + /** + * Specifies subway as a preferred mode of transit. + */ + SUBWAY: 'SUBWAY', + /** + * Specifies train as a preferred mode of transit. + */ + TRAIN: 'TRAIN', + /** + * Specifies tram as a preferred mode of transit. + */ + TRAM: 'TRAM', +}; + +/** + * The TransitOptions object to be included in a DirectionsRequest when the travel mode + * is set to TRANSIT. + * @record + */ +google.maps.TransitOptions = function() {}; + +/** + * The desired arrival time for the route, specified as a Date object. The Date + * object measures time in milliseconds since 1 January 1970. If arrival time is + * specified, departure time is ignored. + * @type {Date|null|undefined} + */ +google.maps.TransitOptions.prototype.arrivalTime; + +/** + * The desired departure time for the route, specified as a Date object. The + * Date object measures time in milliseconds since 1 January 1970. If neither + * departure time nor arrival time is specified, the time is assumed to be + * "now". + * @type {Date|null|undefined} + */ +google.maps.TransitOptions.prototype.departureTime; + +/** + * One or more preferred modes of transit, such as bus or train. If no + * preference is given, the API returns the default best route. + * @type {Array|null|undefined} + */ +google.maps.TransitOptions.prototype.modes; + +/** + * A preference that can bias the choice of transit route, such as less walking. + * If no preference is given, the API returns the default best route. + * @type {google.maps.TransitRoutePreference|null|undefined} + */ +google.maps.TransitOptions.prototype.routingPreference; + +/** + * The valid transit route type that can be specified in a TransitOptions. Specify these by value, + * or by using the constant's name. For example, 'LESS_WALKING' + * or google.maps.TransitRoutePreference.LESS_WALKING. + * + * Access by calling `const {TransitRoutePreference} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.TransitRoutePreference = { + /** + * Specifies that the calculated route should prefer a limited number of + * transfers. + */ + FEWER_TRANSFERS: 'FEWER_TRANSFERS', + /** + * Specifies that the calculated route should prefer limited amounts of + * walking. + */ + LESS_WALKING: 'LESS_WALKING', +}; + +/** + * Details about a transit stop or station. + * @record + */ +google.maps.TransitStop = function() {}; + +/** + * The location of this stop. + * @type {!google.maps.LatLng} + */ +google.maps.TransitStop.prototype.location; + +/** + * The name of this transit stop. + * @type {string} + */ +google.maps.TransitStop.prototype.name; + +/** + * Information about the vehicle that operates on a transit line. + * @record + */ +google.maps.TransitVehicle = function() {}; + +/** + * A URL for an icon that corresponds to the type of vehicle used on this line. + * @type {string} + */ +google.maps.TransitVehicle.prototype.icon; + +/** + * A URL for an icon that corresponds to the type of vehicle used in this region + * instead of the more general icon. + * @type {string} + */ +google.maps.TransitVehicle.prototype.local_icon; + +/** + * A name for this type of TransitVehicle, e.g. "Train" or + * "Bus". + * @type {string} + */ +google.maps.TransitVehicle.prototype.name; + +/** + * The type of vehicle used, e.g. train, bus, or ferry. + * @type {!google.maps.VehicleType} + */ +google.maps.TransitVehicle.prototype.type; + +/** + * The valid travel modes that can be specified in a + * DirectionsRequest as well as the travel modes returned in a + * DirectionsStep. Specify these by value, or by using the + * constant's name. For example, 'BICYCLING' or + * google.maps.TravelMode.BICYCLING. + * + * Access by calling `const {TravelMode} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.TravelMode = { + /** + * Specifies a bicycling directions request. + */ + BICYCLING: 'BICYCLING', + /** + * Specifies a driving directions request. + */ + DRIVING: 'DRIVING', + /** + * Specifies a transit directions request. + */ + TRANSIT: 'TRANSIT', + /** + * Specifies a walking directions request. + */ + WALKING: 'WALKING', +}; + +/** + * The valid unit systems that can be specified in a DirectionsRequest. + * + * Access by calling `const {UnitSystem} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {number} + */ +google.maps.UnitSystem = { + /** + * Specifies that distances in the DirectionsResult should be + * expressed in imperial units. + */ + IMPERIAL: 0, + /** + * Specifies that distances in the DirectionsResult should be + * expressed in metric units. + */ + METRIC: 1, +}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * A Vector3D is a three-dimensional vector used for standard + * mathematical operations such as scaling the bounds of three-dimensional + * object along local x-, y-, and z-axes.
  • x is a real number.
  • + *
  • y is a real number.
  • z is a real number.
+ * + * Access by calling `const {Vector3D} = await + * google.maps.importLibrary("core")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.Vector3D|!google.maps.Vector3DLiteral} value The + * initializing value. + * @implements {google.maps.Vector3DLiteral} + * @constructor + */ +google.maps.Vector3D = function(value) {}; + +/** + * X-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3D.prototype.x; + +/** + * Y-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3D.prototype.y; + +/** + * Z-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3D.prototype.z; + +/** + * Comparison function. + * @param {!google.maps.Vector3D|!google.maps.Vector3DLiteral|null} other + * Another Vector3D or Vector3DLiteral object. + * @return {boolean} + */ +google.maps.Vector3D.prototype.equals = function(other) {}; + +/** + * Converts to JSON representation. This function is intended to be used via + * JSON.stringify. + * @return {!google.maps.Vector3DLiteral} + */ +google.maps.Vector3D.prototype.toJSON = function() {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Object literals are accepted in place of Vector3D objects, as a + * convenience, in many places. These are converted to Vector3D + * objects when the Maps API encounters them. + * @record + */ +google.maps.Vector3DLiteral = function() {}; + +/** + * X-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3DLiteral.prototype.x; + +/** + * Y-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3DLiteral.prototype.y; + +/** + * Z-component of the three-dimensional vector. + * @type {number} + */ +google.maps.Vector3DLiteral.prototype.z; + +/** + * Possible values for vehicle types. + * + * Access by calling `const {VehicleType} = await + * google.maps.importLibrary("routes")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.VehicleType = { + /** + * Bus. + */ + BUS: 'BUS', + /** + * A vehicle that operates on a cable, usually on the ground. Aerial cable + * cars may be of the type GONDOLA_LIFT. + */ + CABLE_CAR: 'CABLE_CAR', + /** + * Commuter rail. + */ + COMMUTER_TRAIN: 'COMMUTER_TRAIN', + /** + * Ferry. + */ + FERRY: 'FERRY', + /** + * A vehicle that is pulled up a steep incline by a cable. + */ + FUNICULAR: 'FUNICULAR', + /** + * An aerial cable car. + */ + GONDOLA_LIFT: 'GONDOLA_LIFT', + /** + * Heavy rail. + */ + HEAVY_RAIL: 'HEAVY_RAIL', + /** + * High speed train. + */ + HIGH_SPEED_TRAIN: 'HIGH_SPEED_TRAIN', + /** + * Intercity bus. + */ + INTERCITY_BUS: 'INTERCITY_BUS', + /** + * Light rail. + */ + METRO_RAIL: 'METRO_RAIL', + /** + * Monorail. + */ + MONORAIL: 'MONORAIL', + /** + * Other vehicles. + */ + OTHER: 'OTHER', + /** + * Rail. + */ + RAIL: 'RAIL', + /** + * Share taxi is a sort of bus transport with ability to drop off and pick up + * passengers anywhere on its route. Generally share taxi uses minibus + * vehicles. + */ + SHARE_TAXI: 'SHARE_TAXI', + /** + * Underground light rail. + */ + SUBWAY: 'SUBWAY', + /** + * Above ground light rail. + */ + TRAM: 'TRAM', + /** + * Trolleybus. + */ + TROLLEYBUS: 'TROLLEYBUS', +}; + +/** + * Contains the four points defining the four-sided polygon that is the visible + * region of the map. On a vector map this polygon can be a trapezoid instead of + * a rectangle, when a vector map has tilt. + * @record + */ +google.maps.VisibleRegion = function() {}; + +/** + * @type {!google.maps.LatLng} + */ +google.maps.VisibleRegion.prototype.farLeft; + +/** + * @type {!google.maps.LatLng} + */ +google.maps.VisibleRegion.prototype.farRight; + +/** + * The smallest bounding box that includes the visible region. + * @type {!google.maps.LatLngBounds} + */ +google.maps.VisibleRegion.prototype.latLngBounds; + +/** + * @type {!google.maps.LatLng} + */ +google.maps.VisibleRegion.prototype.nearLeft; + +/** + * @type {!google.maps.LatLng} + */ +google.maps.VisibleRegion.prototype.nearRight; + +/** + * @record + */ +google.maps.VisualizationLibrary = function() {}; + +/** + * @type {typeof google.maps.visualization.HeatmapLayer} + */ +google.maps.VisualizationLibrary.prototype.HeatmapLayer; + +/** + * Drawing options. + * @record + */ +google.maps.WebGLDrawOptions = function() {}; + +/** + * The WebGLRenderingContext on which to render this WebGLOverlayView. + * @type {!WebGLRenderingContext} + */ +google.maps.WebGLDrawOptions.prototype.gl; + +/** + * The matrix transformation from camera space to latitude/longitude + * coordinates. + * @type {!google.maps.CoordinateTransformer} + */ +google.maps.WebGLDrawOptions.prototype.transformer; + +/** + * The WebGL Overlay View provides direct access to the same WebGL rendering + * context Google Maps Platform uses to render the vector basemap. This use of a + * shared rendering context provides benefits such as depth occlusion with 3D + * building geometry, and the ability to sync 2D/3D content with basemap + * rendering.

With WebGL Overlay View you can add content to your maps + * using WebGL directly, or popular Graphics libraries like Three.js or deck.gl. + * To use the overlay, you can extend google.maps.WebGLOverlayView + * and provide an implementation for each of the following lifecycle + * hooks: {@link google.maps.WebGLOverlayView.onAdd}, {@link + * google.maps.WebGLOverlayView.onContextRestored}, {@link + * google.maps.WebGLOverlayView.onDraw}, {@link + * google.maps.WebGLOverlayView.onContextLost} and {@link + * google.maps.WebGLOverlayView.onRemove}.

You must call {@link + * google.maps.WebGLOverlayView.setMap} with a valid {@link google.maps.Map} + * object to trigger the call to the onAdd() method and + * setMap(null) in order to trigger the onRemove() + * method. The setMap() method can be called at the time of + * construction or at any point afterward when the overlay should be re-shown + * after removing. The onDraw() method will then be called whenever + * a map property changes that could change the position of the element, such as + * zoom, center, or map type. WebGLOverlayView may only be added to a vector map + * having a {@link google.maps.MapOptions.mapId} (including maps set to + * the {@link google.maps.RenderingType.VECTOR} {@link + * google.maps.MapOptions.renderingType} and using {@link + * google.maps.Map.DEMO_MAP_ID} as the {@link google.maps.MapOptions.mapId}). + * + * Access by calling `const {WebGLOverlayView} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.WebGLOverlayView = function() {}; + +/** + * @return {google.maps.Map|null|undefined} + */ +google.maps.WebGLOverlayView.prototype.getMap = function() {}; + +/** + * Implement this method to fetch or create intermediate data structures before + * the overlay is drawn that don’t require immediate access to the WebGL + * rendering context. This method must be implemented to render. + * @return {undefined} + */ +google.maps.WebGLOverlayView.prototype.onAdd = function() {}; + +/** + * This method is called when the rendering context is lost for any reason, and + * is where you should clean up any pre-existing GL state, since it is no longer + * needed. + * @return {undefined} + */ +google.maps.WebGLOverlayView.prototype.onContextLost = function() {}; + +/** + * This method is called once the rendering context is available. Use it to + * initialize or bind any WebGL state such as shaders or buffer objects. + * @param {!google.maps.WebGLStateOptions} options that allow developers to + * restore the GL context. + * @return {undefined} + */ +google.maps.WebGLOverlayView.prototype.onContextRestored = function(options) {}; + +/** + * Implement this method to draw WebGL content directly on the map. Note that if + * the overlay needs a new frame drawn then call {@link + * google.maps.WebGLOverlayView.requestRedraw}. + * @param {!google.maps.WebGLDrawOptions} options that allow developers to + * render content to an associated Google basemap. + * @return {undefined} + */ +google.maps.WebGLOverlayView.prototype.onDraw = function(options) {}; + +/** + * This method is called when the overlay is removed from the map with + * WebGLOverlayView.setMap(null), and is where you should remove + * all intermediate objects. This method must be implemented to render. + * @return {undefined} + */ +google.maps.WebGLOverlayView.prototype.onRemove = function() {}; + +/** + * Implement this method to handle any GL state updates outside of the render + * animation frame. + * @param {!google.maps.WebGLStateOptions} options that allow developerse to + * restore the GL context. + * @return {undefined} + */ +google.maps.WebGLOverlayView.prototype.onStateUpdate = function(options) {}; + +/** + * Triggers the map to redraw a frame. + * @return {undefined} + */ +google.maps.WebGLOverlayView.prototype.requestRedraw = function() {}; + +/** + * Triggers the map to update GL state. + * @return {undefined} + */ +google.maps.WebGLOverlayView.prototype.requestStateUpdate = function() {}; + +/** + * Adds the overlay to the map. + * @param {?google.maps.Map=} map The map to access the div, model and view + * state. + * @return {undefined} + */ +google.maps.WebGLOverlayView.prototype.setMap = function(map) {}; + +/** + * GL state options. + * @record + */ +google.maps.WebGLStateOptions = function() {}; + +/** + * The WebGLRenderingContext on which to render this WebGLOverlayView. + * @type {!WebGLRenderingContext} + */ +google.maps.WebGLStateOptions.prototype.gl; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * This event is created from monitoring zoom change. + * + * Access by calling `const {ZoomChangeEvent} = await + * google.maps.importLibrary("maps")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {Event} + * @constructor + */ +google.maps.ZoomChangeEvent = function() {}; + +/** + * Options for the rendering of the zoom control. + * @record + */ +google.maps.ZoomControlOptions = function() {}; + +/** + * Position id. Used to specify the position of the control on the map. + * @default {@link google.maps.ControlPosition.INLINE_END_BLOCK_END} + * @type {!google.maps.ControlPosition|null|undefined} + */ +google.maps.ZoomControlOptions.prototype.position; + +/** + * Namespace for all public event functions + * + * Access by calling `const {event} = await google.maps.importLibrary("core")`. + * See https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.event = function() {}; + +/** + * Adds the given listener function to the given event name for the given object + * instance. Returns an identifier for this listener that can be used with + * removeListener(). + * @param {!Object} instance + * @param {string} eventName + * @param {!Function} handler + * @return {!google.maps.MapsEventListener} + */ +google.maps.event.addListener = function(instance, eventName, handler) {}; + +/** + * Like addListener, but the handler removes itself after handling the first + * event. + * @param {!Object} instance + * @param {string} eventName + * @param {!Function} handler + * @return {!google.maps.MapsEventListener} + */ +google.maps.event.addListenerOnce = function(instance, eventName, handler) {}; + +/** + * Removes all listeners for all events for the given instance. + * @param {!Object} instance + * @return {void} + */ +google.maps.event.clearInstanceListeners = function(instance) {}; + +/** + * Removes all listeners for the given event for the given instance. + * @param {!Object} instance + * @param {string} eventName + * @return {void} + */ +google.maps.event.clearListeners = function(instance, eventName) {}; + +/** + * Returns if there are listeners for the given event on the given instance. Can + * be used to save the computation of expensive event details. + * @param {!Object} instance + * @param {string} eventName + * @return {boolean} + */ +google.maps.event.hasListeners = function(instance, eventName) {}; + +/** + * Removes the given listener, which should have been returned by addListener + * above. Equivalent to calling listener.remove(). + * @param {!google.maps.MapsEventListener} listener + * @return {void} + */ +google.maps.event.removeListener = function(listener) {}; + +/** + * Triggers the given event. All arguments after eventName are passed as + * arguments to the listeners. + * @param {!Object} instance + * @param {string} eventName + * @param {...?} eventArgs + * @return {void} + */ +google.maps.event.trigger = function(instance, eventName, eventArgs) {}; + +/** + * Cross browser event handler registration. This listener is removed by calling + * removeListener(handle) for the handle that is returned by this function. + * @param {!Object} instance + * @param {string} eventName + * @param {!Function} handler + * @param {(boolean|undefined)=} capture + * @return {!google.maps.MapsEventListener} + * @deprecated google.maps.event.addDomListener() is deprecated, + * use the standard addEventListener() + * method instead. The feature will continue to work and there is no plan to + * decommission it. + */ +google.maps.event.addDomListener = function( + instance, eventName, handler, capture) {}; + +/** + * Wrapper around addDomListener that removes the listener after the first + * event. + * @param {!Object} instance + * @param {string} eventName + * @param {!Function} handler + * @param {(boolean|undefined)=} capture + * @return {!google.maps.MapsEventListener} + * @deprecated google.maps.event.addDomListenerOnce() is + * deprecated, use the standard addEventListener() + * method instead. The feature will continue to work and there is no plan to + * decommission it. + */ +google.maps.event.addDomListenerOnce = function( + instance, eventName, handler, capture) {}; + +/** + * @const + */ +google.maps.drawing = {}; + +/** + * Options for the rendering of the drawing control. + * @record + */ +google.maps.drawing.DrawingControlOptions = function() {}; + +/** + * The drawing modes to display in the drawing control, in the order in which + * they are to be displayed. The hand icon (which corresponds to the + * null drawing mode) is always available and is not to be + * specified in this array. + * @default [{@link google.maps.drawing.OverlayType.MARKER}, {@link + * google.maps.drawing.OverlayType.POLYLINE}, {@link + * google.maps.drawing.OverlayType.RECTANGLE}, {@link + * google.maps.drawing.OverlayType.CIRCLE}, {@link + * google.maps.drawing.OverlayType.POLYGON}] + * @type {!Array|null|undefined} + */ +google.maps.drawing.DrawingControlOptions.prototype.drawingModes; + +/** + * Position id. Used to specify the position of the control on the map. + * @default {@link google.maps.ControlPosition.TOP_LEFT} + * @type {!google.maps.ControlPosition|null|undefined} + */ +google.maps.drawing.DrawingControlOptions.prototype.position; + +/** + * Allows users to draw markers, polygons, polylines, rectangles, and circles on + * the map. The DrawingManager's drawing mode defines the type + * of overlay that will be created by the user. Adds a control to the map, + * allowing the user to switch drawing mode. + * + * Access by calling `const {DrawingManager} = await + * google.maps.importLibrary("drawing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {google.maps.drawing.DrawingManagerOptions=} options + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.drawing.DrawingManager = function(options) {}; + +/** + * Returns the DrawingManager's drawing mode. + * @return {?google.maps.drawing.OverlayType} + */ +google.maps.drawing.DrawingManager.prototype.getDrawingMode = function() {}; + +/** + * Returns the Map to which the DrawingManager is + * attached, which is the Map on which the overlays created will be + * placed. + * @return {google.maps.Map} + */ +google.maps.drawing.DrawingManager.prototype.getMap = function() {}; + +/** + * Changes the DrawingManager's drawing mode, which defines the + * type of overlay to be added on the map. Accepted values are + * 'marker', 'polygon', 'polyline', + * 'rectangle', 'circle', or null. A + * drawing mode of null means that the user can interact with the + * map as normal, and clicks do not draw anything. + * @param {?google.maps.drawing.OverlayType} drawingMode + * @return {undefined} + */ +google.maps.drawing.DrawingManager.prototype.setDrawingMode = function( + drawingMode) {}; + +/** + * Attaches the DrawingManager object to the specified + * Map. + * @param {google.maps.Map} map + * @return {undefined} + */ +google.maps.drawing.DrawingManager.prototype.setMap = function(map) {}; + +/** + * Sets the DrawingManager's options. + * @param {google.maps.drawing.DrawingManagerOptions} options + * @return {undefined} + */ +google.maps.drawing.DrawingManager.prototype.setOptions = function(options) {}; + +/** + * Options for the drawing manager. + * @record + */ +google.maps.drawing.DrawingManagerOptions = function() {}; + +/** + * Options to apply to any new circles created with this + * DrawingManager. The center and radius + * properties are ignored, and the map property of a new circle is + * always set to the DrawingManager's map. + * @type {!google.maps.CircleOptions|null|undefined} + */ +google.maps.drawing.DrawingManagerOptions.prototype.circleOptions; + +/** + * The enabled/disabled state of the drawing control. + * @default true + * @type {boolean|null|undefined} + */ +google.maps.drawing.DrawingManagerOptions.prototype.drawingControl; + +/** + * The display options for the drawing control. + * @type {!google.maps.drawing.DrawingControlOptions|null|undefined} + */ +google.maps.drawing.DrawingManagerOptions.prototype.drawingControlOptions; + +/** + * The DrawingManager's drawing mode, which defines the type of + * overlay to be added on the map. Accepted values are 'marker', + * 'polygon', 'polyline', 'rectangle', + * 'circle', or null. A drawing mode of + * null means that the user can interact with the map as normal, + * and clicks do not draw anything. + * @type {!google.maps.drawing.OverlayType|null|undefined} + */ +google.maps.drawing.DrawingManagerOptions.prototype.drawingMode; + +/** + * The Map to which the DrawingManager is attached, + * which is the Map on which the overlays created will be placed. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.drawing.DrawingManagerOptions.prototype.map; + +/** + * Options to apply to any new markers created with this + * DrawingManager. The position property is ignored, + * and the map property of a new marker is always set to the + * DrawingManager's map. + * @type {!google.maps.MarkerOptions|null|undefined} + */ +google.maps.drawing.DrawingManagerOptions.prototype.markerOptions; + +/** + * Options to apply to any new polygons created with this + * DrawingManager. The paths property is ignored, and + * the map property of a new polygon is always set to the + * DrawingManager's map. + * @type {!google.maps.PolygonOptions|null|undefined} + */ +google.maps.drawing.DrawingManagerOptions.prototype.polygonOptions; + +/** + * Options to apply to any new polylines created with this + * DrawingManager. The path property is ignored, and + * the map property of a new polyline is always set to the + * DrawingManager's map. + * @type {!google.maps.PolylineOptions|null|undefined} + */ +google.maps.drawing.DrawingManagerOptions.prototype.polylineOptions; + +/** + * Options to apply to any new rectangles created with this + * DrawingManager. The bounds property is ignored, and + * the map property of a new rectangle is always set to the + * DrawingManager's map. + * @type {!google.maps.RectangleOptions|null|undefined} + */ +google.maps.drawing.DrawingManagerOptions.prototype.rectangleOptions; + +/** + * The properties of an overlaycomplete event on a DrawingManager. + * @record + */ +google.maps.drawing.OverlayCompleteEvent = function() {}; + +/** + * The completed overlay. + * @type {!google.maps.Marker|!google.maps.Polygon|!google.maps.Polyline|!google.maps.Rectangle|!google.maps.Circle} + */ +google.maps.drawing.OverlayCompleteEvent.prototype.overlay; + +/** + * The completed overlay's type. + * @type {!google.maps.drawing.OverlayType} + */ +google.maps.drawing.OverlayCompleteEvent.prototype.type; + +/** + * The types of overlay that may be created by the DrawingManager. + * Specify these by value, or by using the constant's name. For example, + * 'polygon' or + * google.maps.drawing.OverlayType.POLYGON. + * + * Access by calling `const {OverlayType} = await + * google.maps.importLibrary("drawing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.drawing.OverlayType = { + /** + * Specifies that the DrawingManager creates circles, and that + * the overlay given in the overlaycomplete event is a circle. + */ + CIRCLE: 'circle', + /** + * Specifies that the DrawingManager creates markers, and that + * the overlay given in the overlaycomplete event is a marker. + */ + MARKER: 'marker', + /** + * Specifies that the DrawingManager creates polygons, and that + * the overlay given in the overlaycomplete event is a polygon. + */ + POLYGON: 'polygon', + /** + * Specifies that the DrawingManager creates polylines, and that + * the overlay given in the overlaycomplete event is a polyline. + */ + POLYLINE: 'polyline', + /** + * Specifies that the DrawingManager creates rectangles, and that + * the overlay given in the overlaycomplete event is a rectangle. + */ + RECTANGLE: 'rectangle', +}; + +/** + * @const + */ +google.maps.elevation = {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * An HTML element that visually displays elevation data. Set the element's + * path property to show a graph of elevation along the path. + * + * Access by calling `const {ElevationElement} = await + * google.maps.importLibrary("elevation")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.elevation.ElevationElementOptions=} options + * @implements {google.maps.elevation.ElevationElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.elevation.ElevationElement = function(options) {}; + +/** + * The path along which to show elevation data. Line segments will be + * interpolated in between the points of the array; even a small number of + * points will still produce a detailed elevation graph.
If only one point + * is provided, the widget will show the elevation number for that point. + * @type {!Array|null|undefined} + */ +google.maps.elevation.ElevationElement.prototype.path; + +/** + * Determines if elevation will be shown in feet/miles or meters/km. If + * undefined, the widget will default to the preferred unit system for the + * region specified in the API loader. + * @type {!google.maps.UnitSystem|null|undefined} + */ +google.maps.elevation.ElevationElement.prototype.unitSystem; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Options for ElevationElement. + * @record + */ +google.maps.elevation.ElevationElementOptions = function() {}; + +/** + * See {@link google.maps.elevation.ElevationElement.path} + * @type {!Array|null|undefined} + */ +google.maps.elevation.ElevationElementOptions.prototype.path; + +/** + * See {@link google.maps.elevation.ElevationElement.unitSystem} + * @type {!google.maps.UnitSystem|null|undefined} + */ +google.maps.elevation.ElevationElementOptions.prototype.unitSystem; + +/** + * @const + */ +google.maps.geometry = {}; + +/** + * Utility functions for computations involving polygons and polylines. + * + * Access by calling `const {poly} = await + * google.maps.importLibrary("geometry")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.geometry.poly = function() {}; + +/** + * Computes whether the given point lies inside the specified polygon. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} point + * @param {!google.maps.Polygon} polygon + * @return {boolean} + */ +google.maps.geometry.poly.containsLocation = function(point, polygon) {}; + +/** + * Computes whether the given point lies on or near to a polyline, or the edge + * of a polygon, within a specified tolerance. Returns true when + * the difference between the latitude and longitude of the supplied point, and + * the closest point on the edge, is less than the tolerance. The tolerance + * defaults to 10-9 degrees. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} point + * @param {!google.maps.Polygon|!google.maps.Polyline} poly + * @param {number=} tolerance + * @return {boolean} + */ +google.maps.geometry.poly.isLocationOnEdge = function( + point, poly, tolerance) {}; + +/** + * Utility functions for computing geodesic angles, distances and areas. The + * default radius is Earth's radius of 6378137 meters. + * + * Access by calling `const {spherical} = await + * google.maps.importLibrary("geometry")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.geometry.spherical = function() {}; + +/** + * Returns the unsigned area of a closed path, in the range [0, 2×pi×radius²]. + * The computed area uses the same units as the radius. The + * radiusOfSphere defaults to the Earth's radius in meters, in + * which case the area is in square meters. Passing a Circle + * requires the radius to be set to a non-negative value. + * Additionally, the Circle must not cover more than 100% of the sphere. And + * when passing a LatLngBounds, the southern LatLng cannot be more + * north than the northern LatLng. + * @param {!Array|!google.maps.MVCArray|!google.maps.Circle|!google.maps.CircleLiteral|!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral} + * path + * @param {number=} radiusOfSphere + * @return {number} + */ +google.maps.geometry.spherical.computeArea = function(path, radiusOfSphere) {}; + +/** + * Returns the distance, in meters, between two LatLngs. You can optionally + * specify a custom radius. The radius defaults to the radius of the Earth. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} from + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} to + * @param {number=} radius + * @return {number} + */ +google.maps.geometry.spherical.computeDistanceBetween = function( + from, to, radius) {}; + +/** + * Returns the heading from one LatLng to another LatLng. Headings are expressed + * in degrees clockwise from North within the range [-180,180). + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} from + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} to + * @return {number} + */ +google.maps.geometry.spherical.computeHeading = function(from, to) {}; + +/** + * Returns the length of the given path. + * @param {!Array|!google.maps.MVCArray} + * path + * @param {number=} radius + * @return {number} + */ +google.maps.geometry.spherical.computeLength = function(path, radius) {}; + +/** + * Returns the LatLng resulting from moving a distance from an origin in the + * specified heading (expressed in degrees clockwise from north). + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} from + * @param {number} distance + * @param {number} heading + * @param {number=} radius + * @return {!google.maps.LatLng} + */ +google.maps.geometry.spherical.computeOffset = function( + from, distance, heading, radius) {}; + +/** + * Returns the location of origin when provided with a LatLng destination, + * meters travelled and original heading. Headings are expressed in degrees + * clockwise from North. This function returns null when no + * solution is available. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} to + * @param {number} distance + * @param {number} heading + * @param {number=} radius + * @return {!google.maps.LatLng|null} + */ +google.maps.geometry.spherical.computeOffsetOrigin = function( + to, distance, heading, radius) {}; + +/** + * Returns the signed area of a closed path, where counterclockwise is positive, + * in the range [-2×pi×radius², 2×pi×radius²]. The computed area uses the same + * units as the radius. The radius defaults to the Earth's radius in meters, + * in which case the area is in square meters.

The area is computed + * using the parallel + * transport method; the parallel transport around a closed path on the unit + * sphere twists by an angle that is equal to the area enclosed by the path. + * This is simpler and more accurate and robust than triangulation using Girard, + * l'Huilier, or Eriksson on each triangle. In particular, since it + * doesn't triangulate, it suffers no instability except in the unavoidable + * case when an edge (not a diagonal) of the polygon spans 180 degrees. + * @param {!Array|!google.maps.MVCArray} + * loop + * @param {number=} radius + * @return {number} + */ +google.maps.geometry.spherical.computeSignedArea = function(loop, radius) {}; + +/** + * Returns the LatLng which lies the given fraction of the way between the + * origin LatLng and the destination LatLng. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} from + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} to + * @param {number} fraction + * @return {!google.maps.LatLng} + */ +google.maps.geometry.spherical.interpolate = function(from, to, fraction) {}; + +/** + * Utilities for polyline encoding and decoding. + * + * Access by calling `const {encoding} = await + * google.maps.importLibrary("geometry")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @const + */ +google.maps.geometry.encoding = {}; + +/** + * Decodes an encoded path string into a sequence of LatLngs. + * @param {string} encodedPath + * @return {!Array} + */ +google.maps.geometry.encoding.decodePath = function(encodedPath) {}; + +/** + * Encodes a sequence of LatLngs into an encoded path string. + * @param {!Array|!google.maps.MVCArray} + * path + * @return {string} + */ +google.maps.geometry.encoding.encodePath = function(path) {}; + +/** + * @const + */ +google.maps.journeySharing = {}; + +/** + * The auth token returned by the token fetcher. + * @record + */ +google.maps.journeySharing.AuthToken = function() {}; + +/** + * The expiration time in seconds. A token expires in this amount of time after + * fetching. + * @type {number} + */ +google.maps.journeySharing.AuthToken.prototype.expiresInSeconds; + +/** + * The token. + * @type {string} + */ +google.maps.journeySharing.AuthToken.prototype.token; + +/** + * Contains additional information needed to mint JSON Web Tokens. + * @record + */ +google.maps.journeySharing.AuthTokenContext = function() {}; + +/** + * When provided, the minted token should have a private + * DeliveryVehicleId claim for the provided deliveryVehicleId. + * @type {string|null|undefined} + */ +google.maps.journeySharing.AuthTokenContext.prototype.deliveryVehicleId; + +/** + * When provided, the minted token should have a private TaskId + * claim for the provided taskId. + * @type {string|null|undefined} + */ +google.maps.journeySharing.AuthTokenContext.prototype.taskId; + +/** + * When provided, the minted token should have a private TrackingId + * claim for the provided trackingId. + * @type {string|null|undefined} + */ +google.maps.journeySharing.AuthTokenContext.prototype.trackingId; + +/** + * When provided, the minted token should have a private TripId + * claim for the provided tripId. + * @type {string|null|undefined} + */ +google.maps.journeySharing.AuthTokenContext.prototype.tripId; + +/** + * When provided, the minted token should have a private VehicleId + * claim for the provided vehicleId. + * @type {string|null|undefined} + */ +google.maps.journeySharing.AuthTokenContext.prototype.vehicleId; + +/** + * @typedef {function(!google.maps.journeySharing.AuthTokenFetcherOptions): + * !Promise} + */ +google.maps.journeySharing.AuthTokenFetcher; + +/** + * Options for the auth token fetcher. + * @record + */ +google.maps.journeySharing.AuthTokenFetcherOptions = function() {}; + +/** + * The auth token context. IDs specified in the context should be added to the + * request sent to the JSON Web Token minting endpoint. + * @type {!google.maps.journeySharing.AuthTokenContext} + */ +google.maps.journeySharing.AuthTokenFetcherOptions.prototype.context; + +/** + * The Fleet Engine service type. + * @type {!google.maps.journeySharing.FleetEngineServiceType} + */ +google.maps.journeySharing.AuthTokenFetcherOptions.prototype.serviceType; + +/** + * Automatic viewport mode. + * + * Access by calling `const {AutomaticViewportMode} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.journeySharing.AutomaticViewportMode = { + /** + * Automatically adjust the viewport to fit markers and any visible + * anticipated route polylines. This is the default. + */ + FIT_ANTICIPATED_ROUTE: 'FIT_ANTICIPATED_ROUTE', + /** + * Do not automatically adjust the viewport. + */ + NONE: 'NONE', +}; + +/** + * MarkerSetup default options. + * @record + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. + */ +google.maps.journeySharing.DefaultMarkerSetupOptions = function() {}; + +/** + * Default marker options. + * @type {!google.maps.MarkerOptions} + */ +google.maps.journeySharing.DefaultMarkerSetupOptions.prototype + .defaultMarkerOptions; + +/** + * PolylineSetup default options. + * @record + * @deprecated Polyline setup is deprecated. Use the + * PolylineCustomizationFunction methods for your location + * provider instead. + */ +google.maps.journeySharing.DefaultPolylineSetupOptions = function() {}; + +/** + * Default polyline options. + * @type {!google.maps.PolylineOptions} + */ +google.maps.journeySharing.DefaultPolylineSetupOptions.prototype + .defaultPolylineOptions; + +/** + * Default polyline visibility. + * @type {boolean} + */ +google.maps.journeySharing.DefaultPolylineSetupOptions.prototype.defaultVisible; + +/** + * The details for a delivery vehicle returned by Fleet Engine. + * @record + */ +google.maps.journeySharing.DeliveryVehicle = function() {}; + +/** + * Custom delivery vehicle attributes. + * @type {!Object} + */ +google.maps.journeySharing.DeliveryVehicle.prototype.attributes; + +/** + * The location where the current route segment ends. + * @type {?google.maps.LatLngLiteral} + */ +google.maps.journeySharing.DeliveryVehicle.prototype + .currentRouteSegmentEndPoint; + +/** + * The last reported location of the delivery vehicle. + * @type {?google.maps.journeySharing.VehicleLocationUpdate} + */ +google.maps.journeySharing.DeliveryVehicle.prototype + .latestVehicleLocationUpdate; + +/** + * In the format + * "providers/{provider_id}/deliveryVehicles/{delivery_vehicle_id}". + * The delivery_vehicle_id must be a unique identifier. + * @type {string} + */ +google.maps.journeySharing.DeliveryVehicle.prototype.name; + +/** + * The current navigation status of the vehicle. + * @type {string} + */ +google.maps.journeySharing.DeliveryVehicle.prototype.navigationStatus; + +/** + * The remaining driving distance in the current route segment, in meters. + * @type {number} + */ +google.maps.journeySharing.DeliveryVehicle.prototype.remainingDistanceMeters; + +/** + * The remaining driving duration in the current route segment, in milliseconds. + * @type {?number} + */ +google.maps.journeySharing.DeliveryVehicle.prototype.remainingDurationMillis; + +/** + * The journey segments assigned to this delivery vehicle, starting from the + * vehicle's most recently reported location. This is only populated when + * the {@link google.maps.journeySharing.DeliveryVehicle} data object is + * provided through {@link + * google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider}. + * @type {!Array} + */ +google.maps.journeySharing.DeliveryVehicle.prototype + .remainingVehicleJourneySegments; + +/** + * Parameters specific to marker customization functions that apply options to + * delivery vehicle markers. Used by {@link + * google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions.deliveryVehicleMarkerCustomization} + * and {@link + * google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderOptions.deliveryVehicleMarkerCustomization}. + * @extends {google.maps.journeySharing.MarkerCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.DeliveryVehicleMarkerCustomizationFunctionParams = + function() {}; + +/** + * The delivery vehicle represented by this marker. + * @type {!google.maps.journeySharing.DeliveryVehicle} + */ +google.maps.journeySharing.DeliveryVehicleMarkerCustomizationFunctionParams + .prototype.vehicle; + +/** + * Parameters specific to polyline customization functions for {@link + * google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider}. + * @extends {google.maps.journeySharing.PolylineCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.DeliveryVehiclePolylineCustomizationFunctionParams = + function() {}; + +/** + * The delivery vehicle traversing through this polyline. + * @type {!google.maps.journeySharing.DeliveryVehicle} + */ +google.maps.journeySharing.DeliveryVehiclePolylineCustomizationFunctionParams + .prototype.deliveryVehicle; + +/** + * DeliveryVehicleStop type + * @record + */ +google.maps.journeySharing.DeliveryVehicleStop = function() {}; + +/** + * The location of the stop. + * @type {?google.maps.LatLngLiteral} + */ +google.maps.journeySharing.DeliveryVehicleStop.prototype.plannedLocation; + +/** + * The state of the stop. + * @type {?google.maps.journeySharing.DeliveryVehicleStopState} + */ +google.maps.journeySharing.DeliveryVehicleStop.prototype.state; + +/** + * The list of Tasks to be performed at this stop.
  • id: the + * ID of the task.
  • extraDurationMillis: the extra time it takes + * to perform the task, in milliseconds.
+ * @type {!Array} + */ +google.maps.journeySharing.DeliveryVehicleStop.prototype.tasks; + +/** + * The current state of a {@link + * google.maps.journeySharing.DeliveryVehicleStop}. + * + * Access by calling `const {DeliveryVehicleStopState} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.journeySharing.DeliveryVehicleStopState = { + /** + * Arrived at stop. Assumes that when the vehicle is routing to the next stop, + * that all previous stops have been completed. + */ + ARRIVED: 'ARRIVED', + /** + * Assigned and actively routing. + */ + ENROUTE: 'ENROUTE', + /** + * Created, but not actively routing. + */ + NEW: 'NEW', + /** + * Unknown. + */ + UNSPECIFIED: 'UNSPECIFIED', +}; + +/** + * Delivery Fleet Location Provider. + * + * Access by calling `const {FleetEngineDeliveryFleetLocationProvider} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderOptions} + * options Options to pass to the location provider. + * @extends {google.maps.journeySharing.PollingLocationProvider} + * @constructor + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProvider = function( + options) {}; + +/** + * The filter applied when fetching the delivery vehicles. + * @type {string|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProvider.prototype + .deliveryVehicleFilter; + +/** + * The bounds within which to track delivery vehicles. If no bounds are set, no + * delivery vehicles will be tracked. To track all delivery vehicles regardless + * of location, set bounds equivalent to the entire earth. + * @type {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProvider.prototype + .locationRestriction; + +/** + * This Field is read-only. Threshold for stale vehicle location. If the last + * updated location for the vehicle is older than this threshold, the vehicle + * will not be displayed. + * @type {number} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProvider.prototype + .staleLocationThresholdMillis; + +/** + * Options for delivery fleet location provider. + * @record + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderOptions = + function() {}; + +/** + * Provides JSON Web Tokens for authenticating the client to Fleet Engine. + * @type {!google.maps.journeySharing.AuthTokenFetcher} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderOptions + .prototype.authTokenFetcher; + +/** + * A filter query to apply when fetching delivery vehicles. This filter is + * passed directly to Fleet Engine.

See ListDeliveryVehiclesRequest.filter for + * supported formats.

Note that valid filters for attributes must have + * the "attributes" prefix. For example, attributes.x = + * "y" or attributes."x y" = + * "z". + * @type {?string} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderOptions + .prototype.deliveryVehicleFilter; + +/** + * Customization applied to a delivery vehicle marker.

Use this field to + * specify custom styling (such as marker icon) and interactivity (such as click + * handling).
  • If a {@link google.maps.MarkerOptions} object is specified, + * the changes specified in it are applied to the marker after the marker has + * been created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the marker is created, before + * it is added to the map view. (On this invocation, the isNew + * parameter in the function parameters object is set to true.) + * Additionally, this function is invoked when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * marker have changed.

    See {@link + * google.maps.journeySharing.DeliveryVehicleMarkerCustomizationFunctionParams} + * for a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.DeliveryVehicleMarkerCustomizationFunctionParams): + * void)|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderOptions + .prototype.deliveryVehicleMarkerCustomization; + +/** + * The latitude/longitude bounds within which to track vehicles immediately + * after the location provider is instantiated. If not set, the location + * provider does not start tracking any vehicles; use {@link + * google.maps.journeySharing.FleetEngineDeliveryFleetLocationProvider.locationRestriction} + * to set the bounds and begin tracking. To track all delivery vehicles + * regardless of location, set bounds equivalent to the entire earth. + * @type {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderOptions + .prototype.locationRestriction; + +/** + * The consumer's project ID from Google Cloud Console. + * @type {string} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderOptions + .prototype.projectId; + +/** + * Threshold for stale vehicle location. If the last updated location for the + * vehicle is older this threshold, the vehicle will not be displayed. Defaults + * to 24 hours in milliseconds. If the threshold is less than zero, or + * Infinity, the threshold will be ignored and the vehicle location will + * not be considered stale. + * @type {?number} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderOptions + .prototype.staleLocationThresholdMillis; + +/** + * The event object passed to the event handler when the {@link + * google.maps.journeySharing.FleetEngineDeliveryFleetLocationProvider.update} + * event is triggered. + * @record + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderUpdateEvent = + function() {}; + +/** + * The list of delivery vehicles returned by the query. Unmodifiable. + * @type {?Array} + */ +google.maps.journeySharing.FleetEngineDeliveryFleetLocationProviderUpdateEvent + .prototype.deliveryVehicles; + +/** + * Delivery Vehicle Location Provider. + * + * Access by calling `const {FleetEngineDeliveryVehicleLocationProvider} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions} + * options Options to pass to the location provider. + * @extends {google.maps.journeySharing.PollingLocationProvider} + * @constructor + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider = + function(options) {}; + +/** + * ID for the vehicle that this location provider observes. Set this field to + * track a vehicle. + * @type {string} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider.prototype + .deliveryVehicleId; + +/** + * Optionally allow users to display the task's outcome location. + * @type {?boolean} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider.prototype + .shouldShowOutcomeLocations; + +/** + * Optionally allow users to display fetched tasks. + * @type {?boolean} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider.prototype + .shouldShowTasks; + +/** + * This Field is read-only. Threshold for stale vehicle location. If the last + * updated location for the vehicle is older than this threshold, the vehicle + * will not be displayed. + * @type {number} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider.prototype + .staleLocationThresholdMillis; + +/** + * Returns the filter options to apply when fetching tasks. + * @type {!google.maps.journeySharing.FleetEngineTaskFilterOptions} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider.prototype + .taskFilterOptions; + +/** + * Options for delivery vehicle location provider. + * @record + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions = + function() {}; + +/** + * Customization applied to the active polyline. An active polyline corresponds + * to a portion of the route the vehicle is currently traversing through. + *

Use this field to specify custom styling (such as polyline color) and + * interactivity (such as click handling).
  • If a {@link + * google.maps.PolylineOptions} object is specified, the changes specified in it + * are applied to the polyline after the polyline has been created, overwriting + * its default options if they exist.
  • If a function is specified, it is + * invoked once when the polyline is created. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the + * polyline's coordinates change, or when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * polyline have changed.

    See {@link + * google.maps.journeySharing.DeliveryVehiclePolylineCustomizationFunctionParams} + * for a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.DeliveryVehiclePolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.activePolylineCustomization; + +/** + * Provides JSON Web Tokens for authenticating the client to Fleet Engine. + * @type {!google.maps.journeySharing.AuthTokenFetcher} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.authTokenFetcher; + +/** + * The delivery vehicle ID to track immediately after the location provider is + * instantiated. If not specified, the location provider does not start tracking + * any vehicle; use {@link + * google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider.deliveryVehicleId} + * to set the ID and begin tracking. + * @type {?string} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.deliveryVehicleId; + +/** + * Customization applied to the delivery vehicle marker.

Use this field + * to specify custom styling (such as marker icon) and interactivity (such as + * click handling).
  • If a {@link google.maps.MarkerOptions} object is + * specified, the changes specified in it are applied to the marker after the + * marker has been created, overwriting its default options if they + * exist.
  • If a function is specified, it is invoked once when the marker + * is created, before it is added to the map view. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the location + * provider receives data from Fleet Engine, regardless of whether the data + * corresponding to this marker have changed.

    See {@link + * google.maps.journeySharing.DeliveryVehicleMarkerCustomizationFunctionParams} + * for a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.DeliveryVehicleMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.deliveryVehicleMarkerCustomization; + +/** + * Customization applied to a planned stop marker.

Use this field to + * specify custom styling (such as marker icon) and interactivity (such as click + * handling).
  • If a {@link google.maps.MarkerOptions} object is specified, + * the changes specified in it are applied to the marker after the marker has + * been created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the marker is created, before + * it is added to the map view. (On this invocation, the isNew + * parameter in the function parameters object is set to true.) + * Additionally, this function is invoked when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * marker have changed.

    See {@link + * google.maps.journeySharing.PlannedStopMarkerCustomizationFunctionParams} for + * a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.PlannedStopMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.plannedStopMarkerCustomization; + +/** + * Minimum time between fetching location updates in milliseconds. If it takes + * longer than pollingIntervalMillis to fetch a location update, + * the next location update is not started until the current one finishes. + *

Setting this value to 0 disables recurring location updates. A new + * location update is fetched if any of the parameters observed by the location + * provider changes.

The default polling interval is 5000 milliseconds, + * the minimum interval. If you set the polling interval to a lower non-zero + * value, 5000 is used. + * @type {?number} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.pollingIntervalMillis; + +/** + * The consumer's project ID from Google Cloud Console. + * @type {string} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.projectId; + +/** + * Customization applied to the remaining polyline. A remaining polyline + * corresponds to a portion of the route the vehicle has not yet started + * traversing through.

Use this field to specify custom styling (such as + * polyline color) and interactivity (such as click handling).
  • If + * a {@link google.maps.PolylineOptions} object is specified, the changes + * specified in it are applied to the polyline after the polyline has been + * created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the polyline is created. (On + * this invocation, the isNew parameter in the function parameters + * object is set to true.) Additionally, this function is invoked + * when the polyline's coordinates change, or when the location provider + * receives data from Fleet Engine, regardless of whether the data corresponding + * to this polyline have changed.

    See {@link + * google.maps.journeySharing.DeliveryVehiclePolylineCustomizationFunctionParams} + * for a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.DeliveryVehiclePolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.remainingPolylineCustomization; + +/** + * Boolean to show or hide outcome locations for the fetched tasks. + * @type {?boolean} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.shouldShowOutcomeLocations; + +/** + * Boolean to show or hide tasks. Setting this to false will prevent the + * ListTasks endpoint from being called to fetch the tasks. Only the upcoming + * vehicle stops will be displayed. + * @type {?boolean} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.shouldShowTasks; + +/** + * Threshold for stale vehicle location. If the last updated location for the + * vehicle is older this threshold, the vehicle will not be displayed. Defaults + * to 24 hours in milliseconds. If the threshold is less than 0, or + * Infinity, the threshold will be ignored and the vehicle location will + * not be considered stale. + * @type {?number} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.staleLocationThresholdMillis; + +/** + * Customization applied to the taken polyline. A taken polyline corresponds to + * a portion of the route the vehicle has already traversed through.

Use + * this field to specify custom styling (such as polyline color) and + * interactivity (such as click handling).
  • If a {@link + * google.maps.PolylineOptions} object is specified, the changes specified in it + * are applied to the polyline after the polyline has been created, overwriting + * its default options if they exist.
  • If a function is specified, it is + * invoked once when the polyline is created. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the + * polyline's coordinates change, or when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * polyline have changed.

    See {@link + * google.maps.journeySharing.DeliveryVehiclePolylineCustomizationFunctionParams} + * for a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.DeliveryVehiclePolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.takenPolylineCustomization; + +/** + * Filter options to apply when fetching tasks. The options can include specific + * vehicle, time, and task status. + * @type {?google.maps.journeySharing.FleetEngineTaskFilterOptions} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.taskFilterOptions; + +/** + * Customization applied to a task marker. A task marker is rendered at the + * planned location of each task assigned to the delivery vehicle.

Use + * this field to specify custom styling (such as marker icon) and interactivity + * (such as click handling).
  • If a {@link google.maps.MarkerOptions} + * object is specified, the changes specified in it are applied to the marker + * after the marker has been created, overwriting its default options if they + * exist.
  • If a function is specified, it is invoked once when the marker + * is created, before it is added to the map view. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the location + * provider receives data from Fleet Engine, regardless of whether the data + * corresponding to this marker have changed.

    See {@link + * google.maps.journeySharing.TaskMarkerCustomizationFunctionParams} for a list + * of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.TaskMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.taskMarkerCustomization; + +/** + * Customization applied to a task outcome marker. A task outcome marker is + * rendered at the actual outcome location of each task assigned to the delivery + * vehicle.

Use this field to specify custom styling (such as marker + * icon) and interactivity (such as click handling).
  • If a {@link + * google.maps.MarkerOptions} object is specified, the changes specified in it + * are applied to the marker after the marker has been created, overwriting its + * default options if they exist.
  • If a function is specified, it is + * invoked once when the marker is created, before it is added to the map view. + * (On this invocation, the isNew parameter in the function + * parameters object is set to true.) Additionally, this function + * is invoked when the location provider receives data from Fleet Engine, + * regardless of whether the data corresponding to this marker have + * changed.

    See {@link + * google.maps.journeySharing.TaskMarkerCustomizationFunctionParams} for a list + * of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.TaskMarkerCustomizationFunctionParams): + * void)|null|undefined} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions + .prototype.taskOutcomeMarkerCustomization; + +/** + * The event object passed to the event handler when the {@link + * google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProvider.update} + * event is triggered. + * @record + */ +google.maps.journeySharing + .FleetEngineDeliveryVehicleLocationProviderUpdateEvent = function() {}; + +/** + * The journey segments that have been completed by this vehicle. Unmodifiable. + * @type {?Array} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderUpdateEvent + .prototype.completedVehicleJourneySegments; + +/** + * The delivery vehicle data structure returned by the update. Unmodifiable. + * @type {?google.maps.journeySharing.DeliveryVehicle} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderUpdateEvent + .prototype.deliveryVehicle; + +/** + * The list of tasks served by this delivery vehicle. Unmodifiable. + * @type {?Array} + */ +google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderUpdateEvent + .prototype.tasks; + +/** + * Fleet Location Provider. + * + * Access by calling `const {FleetEngineFleetLocationProvider} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.journeySharing.FleetEngineFleetLocationProviderOptions} + * options Options to pass to the location provider. + * @extends {google.maps.journeySharing.PollingLocationProvider} + * @constructor + */ +google.maps.journeySharing.FleetEngineFleetLocationProvider = function( + options) {}; + +/** + * The bounds within which to track vehicles. If no bounds are set, no vehicles + * will be tracked. To track all vehicles regardless of location, set bounds + * equivalent to the entire earth. + * @type {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null|undefined} + */ +google.maps.journeySharing.FleetEngineFleetLocationProvider.prototype + .locationRestriction; + +/** + * This Field is read-only. Threshold for stale vehicle location. If the last + * updated location for the vehicle is older than this threshold, the vehicle + * will not be displayed. + * @type {number} + */ +google.maps.journeySharing.FleetEngineFleetLocationProvider.prototype + .staleLocationThresholdMillis; + +/** + * The filter applied when fetching the vehicles. + * @type {string|null|undefined} + */ +google.maps.journeySharing.FleetEngineFleetLocationProvider.prototype + .vehicleFilter; + +/** + * Options for fleet location provider. + * @record + */ +google.maps.journeySharing.FleetEngineFleetLocationProviderOptions = + function() {}; + +/** + * Provides JSON Web Tokens for authenticating the client to Fleet Engine. + * @type {!google.maps.journeySharing.AuthTokenFetcher} + */ +google.maps.journeySharing.FleetEngineFleetLocationProviderOptions.prototype + .authTokenFetcher; + +/** + * The latitude/longitude bounds within which to track vehicles immediately + * after the location provider is instantiated. If not set, the location + * provider does not start tracking any vehicles; use {@link + * google.maps.journeySharing.FleetEngineFleetLocationProvider.locationRestriction} + * to set the bounds and begin tracking. To track all vehicles regardless of + * location, set bounds equivalent to the entire earth. + * @type {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null} + */ +google.maps.journeySharing.FleetEngineFleetLocationProviderOptions.prototype + .locationRestriction; + +/** + * The consumer's project ID from Google Cloud Console. + * @type {string} + */ +google.maps.journeySharing.FleetEngineFleetLocationProviderOptions.prototype + .projectId; + +/** + * Threshold for stale vehicle location. If the last updated location for the + * vehicle is older than this threshold, the vehicle will not be displayed. + * Defaults to 24 hours in milliseconds. If the threshold is less than zero, or + * Infinity, the threshold will be ignored and the vehicle location will + * not be considered stale. + * @type {?number} + */ +google.maps.journeySharing.FleetEngineFleetLocationProviderOptions.prototype + .staleLocationThresholdMillis; + +/** + * A filter query to apply when fetching vehicles. This filter is passed + * directly to Fleet Engine.

See ListVehiclesRequest.filter + * for supported formats.

Note that valid filters for attributes must + * have the "attributes" prefix. For example, attributes.x = + * "y" or attributes."x y" = + * "z". + * @type {?string} + */ +google.maps.journeySharing.FleetEngineFleetLocationProviderOptions.prototype + .vehicleFilter; + +/** + * Customization applied to a vehicle marker.

Use this field to specify + * custom styling (such as marker icon) and interactivity (such as click + * handling).
  • If a {@link google.maps.MarkerOptions} object is specified, + * the changes specified in it are applied to the marker after the marker has + * been created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the marker is created, before + * it is added to the map view. (On this invocation, the isNew + * parameter in the function parameters object is set to true.) + * Additionally, this function is invoked when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * marker have changed.

    See {@link + * google.maps.journeySharing.VehicleMarkerCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.VehicleMarkerCustomizationFunctionParams): + * void)|null|undefined} + */ +google.maps.journeySharing.FleetEngineFleetLocationProviderOptions.prototype + .vehicleMarkerCustomization; + +/** + * The event object passed to the event handler when the {@link + * google.maps.journeySharing.FleetEngineFleetLocationProvider.update} event is + * triggered. + * @record + */ +google.maps.journeySharing.FleetEngineFleetLocationProviderUpdateEvent = + function() {}; + +/** + * The list of vehicles returned by the query. Unmodifiable. + * @type {?Array} + */ +google.maps.journeySharing.FleetEngineFleetLocationProviderUpdateEvent.prototype + .vehicles; + +/** + * Types of Fleet Engine services. + * + * Access by calling `const {FleetEngineServiceType} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.journeySharing.FleetEngineServiceType = { + /** + * Fleet Engine service used to access delivery vehicles. + */ + DELIVERY_VEHICLE_SERVICE: 'DELIVERY_VEHICLE_SERVICE', + /** + * Fleet Engine service used to access task information. + */ + TASK_SERVICE: 'TASK_SERVICE', + /** + * Fleet Engine service used to access trip information. + */ + TRIP_SERVICE: 'TRIP_SERVICE', + /** + * Unknown Fleet Engine service. + */ + UNKNOWN_SERVICE: 'UNKNOWN_SERVICE', +}; + +/** + * Shipment location provider. + * + * Access by calling `const {FleetEngineShipmentLocationProvider} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions} + * options Options for the location provider. + * @extends {google.maps.journeySharing.PollingLocationProvider} + * @constructor + */ +google.maps.journeySharing.FleetEngineShipmentLocationProvider = function( + options) {}; + +/** + * The tracking ID for the task that this location provider observes. Set this + * field to begin tracking. + * @type {string} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProvider.prototype + .trackingId; + +/** + * Explicitly refreshes the tracked location. + * @return {void} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProvider.prototype + .refresh = function() {}; + +/** + * Options for shipment location provider. + * @record + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions = + function() {}; + +/** + * Customization applied to the active polyline. An active polyline corresponds + * to a portion of the route the vehicle is currently traversing through. + *

Use this field to specify custom styling (such as polyline color) and + * interactivity (such as click handling).
  • If a {@link + * google.maps.PolylineOptions} object is specified, the changes specified in it + * are applied to the polyline after the polyline has been created, overwriting + * its default options if they exist.
  • If a function is specified, it is + * invoked once when the polyline is created. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the + * polyline's coordinates change, or when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * polyline have changed.

    See {@link + * google.maps.journeySharing.ShipmentPolylineCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.ShipmentPolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.prototype + .activePolylineCustomization; + +/** + * Provides JSON Web Tokens for authenticating the client to Fleet Engine. + * @type {!google.maps.journeySharing.AuthTokenFetcher} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.prototype + .authTokenFetcher; + +/** + * Customization applied to the delivery vehicle marker.

Use this field + * to specify custom styling (such as marker icon) and interactivity (such as + * click handling).
  • If a {@link google.maps.MarkerOptions} object is + * specified, the changes specified in it are applied to the marker after the + * marker has been created, overwriting its default options if they + * exist.
  • If a function is specified, it is invoked once when the marker + * is created, before it is added to the map view. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the location + * provider receives data from Fleet Engine, regardless of whether the data + * corresponding to this marker have changed.

    See {@link + * google.maps.journeySharing.ShipmentMarkerCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.ShipmentMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.prototype + .deliveryVehicleMarkerCustomization; + +/** + * Customization applied to the destination marker.

Use this field to + * specify custom styling (such as marker icon) and interactivity (such as click + * handling).
  • If a {@link google.maps.MarkerOptions} object is + * specified, the changes specified in it are applied to the marker after the + * marker has been created, overwriting its default options if they + * exist.
  • If a function is specified, it is invoked once when the marker + * is created, before it is added to the map view. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the location + * provider receives data from Fleet Engine, regardless of whether the data + * corresponding to this marker have changed.

    See {@link + * google.maps.journeySharing.ShipmentMarkerCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.ShipmentMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.prototype + .destinationMarkerCustomization; + +/** + * Minimum time between fetching location updates in milliseconds. If it takes + * longer than pollingIntervalMillis to fetch a location update, + * the next location update is not started until the current one finishes. + *

Setting this value to 0, Infinity, or a negative value disables + * automatic location updates. A new location update is fetched once if the + * tracking ID parameter (for example, the shipment tracking ID of the shipment + * location provider), or a filtering option (for example, viewport bounds or + * attribute filters for fleet location providers) changes.

The default, + * and minimum, polling interval is 5000 milliseconds. If you set the polling + * interval to a lower positive value, 5000 is stored and used. + * @type {?number} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.prototype + .pollingIntervalMillis; + +/** + * The consumer's project ID from Google Cloud Console. + * @type {string} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.prototype + .projectId; + +/** + * Customization applied to the remaining polyline. A remaining polyline + * corresponds to a portion of the route the vehicle has not yet started + * traversing through.

Use this field to specify custom styling (such as + * polyline color) and interactivity (such as click handling).
  • If + * a {@link google.maps.PolylineOptions} object is specified, the changes + * specified in it are applied to the polyline after the polyline has been + * created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the polyline is created. (On + * this invocation, the isNew parameter in the function parameters + * object is set to true.) Additionally, this function is invoked + * when the polyline's coordinates change, or when the location provider + * receives data from Fleet Engine, regardless of whether the data corresponding + * to this polyline have changed.

    See {@link + * google.maps.journeySharing.ShipmentPolylineCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.ShipmentPolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.prototype + .remainingPolylineCustomization; + +/** + * Customization applied to the taken polyline. A taken polyline corresponds to + * a portion of the route the vehicle has already traversed through.

Use + * this field to specify custom styling (such as polyline color) and + * interactivity (such as click handling).
  • If a {@link + * google.maps.PolylineOptions} object is specified, the changes specified in it + * are applied to the polyline after the polyline has been created, overwriting + * its default options if they exist.
  • If a function is specified, it is + * invoked once when the polyline is created. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the + * polyline's coordinates change, or when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * polyline have changed.

    See {@link + * google.maps.journeySharing.ShipmentPolylineCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.ShipmentPolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.prototype + .takenPolylineCustomization; + +/** + * The tracking ID of the task to track immediately after the location provider + * is instantiated. If not specified, the location provider does not start + * tracking any task; use {@link + * google.maps.journeySharing.FleetEngineShipmentLocationProvider.trackingId} to + * set the tracking ID and begin tracking. + * @type {?string} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.prototype + .trackingId; + +/** + * The event object passed to the event handler when the {@link + * google.maps.journeySharing.FleetEngineShipmentLocationProvider.update} event + * is triggered. + * @record + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderUpdateEvent = + function() {}; + +/** + * The task tracking info structure returned by the update. Unmodifiable. + * @type {?google.maps.journeySharing.TaskTrackingInfo} + */ +google.maps.journeySharing.FleetEngineShipmentLocationProviderUpdateEvent + .prototype.taskTrackingInfo; + +/** + * Filtering options for tasks in the Delivery Vehicle Location Provider. + * @record + */ +google.maps.journeySharing.FleetEngineTaskFilterOptions = function() {}; + +/** + * Exclusive lower bound for the completion time of the task. Used to filter for + * tasks that were completed after the specified time. + * @type {?Date} + */ +google.maps.journeySharing.FleetEngineTaskFilterOptions.prototype + .completionTimeFrom; + +/** + * Exclusive upper bound for the completion time of the task. Used to filter for + * tasks that were completed before the specified time. + * @type {?Date} + */ +google.maps.journeySharing.FleetEngineTaskFilterOptions.prototype + .completionTimeTo; + +/** + * The state of the task. Valid values are OPEN or CLOSED. + * @type {?string} + */ +google.maps.journeySharing.FleetEngineTaskFilterOptions.prototype.state; + +/** + * Trip location provider. + * + * Access by calling `const {FleetEngineTripLocationProvider} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.journeySharing.FleetEngineTripLocationProviderOptions} + * options Options for the location provider. + * @extends {google.maps.journeySharing.PollingLocationProvider} + * @constructor + */ +google.maps.journeySharing.FleetEngineTripLocationProvider = function( + options) {}; + +/** + * The ID for the trip that this location provider observes. Set this field to + * begin tracking. + * @type {string} + */ +google.maps.journeySharing.FleetEngineTripLocationProvider.prototype.tripId; + +/** + * Polyline customization function that colors the active polyline according to + * its speed reading. Specify this function as the {@link + * google.maps.journeySharing.FleetEngineTripLocationProviderOptions.activePolylineCustomization} + * to render a traffic-aware polyline for the active polyline. + * @param {!google.maps.journeySharing.TripPolylineCustomizationFunctionParams} + * params The parameters provided to the polyline customization function. + * @return {undefined} + */ +google.maps.journeySharing.FleetEngineTripLocationProvider + .TRAFFIC_AWARE_ACTIVE_POLYLINE_CUSTOMIZATION_FUNCTION = function(params) {}; + +/** + * Polyline customization function that colors the remaining polyline according + * to its speed reading. Specify this function as the {@link + * google.maps.journeySharing.FleetEngineTripLocationProviderOptions.remainingPolylineCustomization} + * to render a traffic-aware polyline for the remaining polyline. + * @param {!google.maps.journeySharing.TripPolylineCustomizationFunctionParams} + * params The parameters provided to the polyline customization function. + * @return {undefined} + */ +google.maps.journeySharing.FleetEngineTripLocationProvider + .TRAFFIC_AWARE_REMAINING_POLYLINE_CUSTOMIZATION_FUNCTION = function( + params) {}; + +/** + * Explicitly refreshes the tracked location. + * @return {void} + */ +google.maps.journeySharing.FleetEngineTripLocationProvider.prototype.refresh = + function() {}; + +/** + * Options for trip location provider. + * @record + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions = + function() {}; + +/** + * Customization applied to the active polyline. An active polyline corresponds + * to a portion of the route the vehicle is currently traversing through. + *

Use this field to specify custom styling (such as polyline color) and + * interactivity (such as click handling).
  • If a {@link + * google.maps.PolylineOptions} object is specified, the changes specified in it + * are applied to the polyline after the polyline has been created, overwriting + * its default options if they exist.
  • If a function is specified, it is + * invoked once when the polyline is created. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the + * polyline's coordinates change, or when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * polyline have changed.

    See {@link + * google.maps.journeySharing.TripPolylineCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.TripPolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .activePolylineCustomization; + +/** + * Provides JSON Web Tokens for authenticating the client to Fleet Engine. + * @type {!google.maps.journeySharing.AuthTokenFetcher} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .authTokenFetcher; + +/** + * Customization applied to the destination marker.

Use this field to + * specify custom styling (such as marker icon) and interactivity (such as click + * handling).
  • If a {@link google.maps.MarkerOptions} object is specified, + * the changes specified in it are applied to the marker after the marker has + * been created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the marker is created, before + * it is added to the map view. (On this invocation, the isNew + * parameter in the function parameters object is set to true.) + * Additionally, this function is invoked when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * marker have changed.

    See {@link + * google.maps.journeySharing.TripMarkerCustomizationFunctionParams} for a list + * of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.TripMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .destinationMarkerCustomization; + +/** + * Customization applied to the origin marker.

Use this field to specify + * custom styling (such as marker icon) and interactivity (such as click + * handling).
  • If a {@link google.maps.MarkerOptions} object is specified, + * the changes specified in it are applied to the marker after the marker has + * been created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the marker is created, before + * it is added to the map view. (On this invocation, the isNew + * parameter in the function parameters object is set to true.) + * Additionally, this function is invoked when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * marker have changed.

    See {@link + * google.maps.journeySharing.TripMarkerCustomizationFunctionParams} for a list + * of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.TripMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .originMarkerCustomization; + +/** + * Minimum time between fetching location updates in milliseconds. If it takes + * longer than pollingIntervalMillis to fetch a location update, + * the next location update is not started until the current one finishes. + *

Setting this value to 0 disables recurring location updates. A new + * location update is fetched if any of the parameters observed by the location + * provider changes.

The default polling interval is 5000 milliseconds, + * the minimum interval. If you set the polling interval to a lower non-zero + * value, 5000 is used. + * @type {?number} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .pollingIntervalMillis; + +/** + * The consumer's project ID from Google Cloud Console. + * @type {string} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .projectId; + +/** + * Customization applied to the remaining polyline. A remaining polyline + * corresponds to a portion of the route the vehicle has not yet started + * traversing through.

Use this field to specify custom styling (such as + * polyline color) and interactivity (such as click handling).
  • If + * a {@link google.maps.PolylineOptions} object is specified, the changes + * specified in it are applied to the polyline after the polyline has been + * created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the polyline is created. (On + * this invocation, the isNew parameter in the function parameters + * object is set to true.) Additionally, this function is invoked + * when the polyline's coordinates change, or when the location provider + * receives data from Fleet Engine, regardless of whether the data corresponding + * to this polyline have changed.

    See {@link + * google.maps.journeySharing.TripPolylineCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.TripPolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .remainingPolylineCustomization; + +/** + * Customization applied to the taken polyline. A taken polyline corresponds to + * a portion of the route the vehicle has already traversed through.

Use + * this field to specify custom styling (such as polyline color) and + * interactivity (such as click handling).
  • If a {@link + * google.maps.PolylineOptions} object is specified, the changes specified in it + * are applied to the polyline after the polyline has been created, overwriting + * its default options if they exist.
  • If a function is specified, it is + * invoked once when the polyline is created. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the + * polyline's coordinates change, or when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * polyline have changed.

    See {@link + * google.maps.journeySharing.TripPolylineCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.TripPolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .takenPolylineCustomization; + +/** + * The trip ID to track immediately after the location provider is instantiated. + * If not specified, the location provider does not start tracking any trip; + * use {@link google.maps.journeySharing.FleetEngineTripLocationProvider.tripId} + * to set the ID and begin tracking. + * @type {?string} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .tripId; + +/** + * Customization applied to the vehicle marker.

Use this field to + * specify custom styling (such as marker icon) and interactivity (such as click + * handling).
  • If a {@link google.maps.MarkerOptions} object is specified, + * the changes specified in it are applied to the marker after the marker has + * been created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the marker is created, before + * it is added to the map view. (On this invocation, the isNew + * parameter in the function parameters object is set to true.) + * Additionally, this function is invoked when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * marker have changed.

    See {@link + * google.maps.journeySharing.TripMarkerCustomizationFunctionParams} for a list + * of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.TripMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .vehicleMarkerCustomization; + +/** + * Customization applied to a waypoint marker.

Use this field to specify + * custom styling (such as marker icon) and interactivity (such as click + * handling).
  • If a {@link google.maps.MarkerOptions} object is specified, + * the changes specified in it are applied to the marker after the marker has + * been created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the marker is created, before + * it is added to the map view. (On this invocation, the isNew + * parameter in the function parameters object is set to true.) + * Additionally, this function is invoked when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * marker have changed.

    See {@link + * google.maps.journeySharing.TripWaypointMarkerCustomizationFunctionParams} for + * a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.TripWaypointMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderOptions.prototype + .waypointMarkerCustomization; + +/** + * The event object passed to the event handler when the {@link + * google.maps.journeySharing.FleetEngineTripLocationProvider.update} event is + * triggered. + * @record + */ +google.maps.journeySharing.FleetEngineTripLocationProviderUpdateEvent = + function() {}; + +/** + * The trip structure returned by the update. Unmodifiable. + * @type {?google.maps.journeySharing.Trip} + */ +google.maps.journeySharing.FleetEngineTripLocationProviderUpdateEvent.prototype + .trip; + +/** + * Vehicle Location Provider. + * + * Access by calling `const {FleetEngineVehicleLocationProvider} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions} + * options Options to pass to the location provider. + * @extends {google.maps.journeySharing.PollingLocationProvider} + * @constructor + */ +google.maps.journeySharing.FleetEngineVehicleLocationProvider = function( + options) {}; + +/** + * This Field is read-only. Threshold for stale vehicle location. If the last + * updated location for the vehicle is older than this threshold, the vehicle + * will not be displayed. + * @type {number} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProvider.prototype + .staleLocationThresholdMillis; + +/** + * ID for the vehicle that this location provider observes. Set this field to + * track a vehicle. + * @type {string} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProvider.prototype + .vehicleId; + +/** + * Polyline customization function that colors the active polyline according to + * its speed reading. Specify this function as the {@link + * google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.activePolylineCustomization} + * to render a traffic-aware polyline for the active polyline. + * @param {!google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams} + * params The parameters provided to the polyline customization function. + * @return {undefined} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProvider + .TRAFFIC_AWARE_ACTIVE_POLYLINE_CUSTOMIZATION_FUNCTION = function(params) {}; + +/** + * Polyline customization function that colors the remaining polyline according + * to its speed reading. Specify this function as the {@link + * google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.remainingPolylineCustomization} + * to render a traffic-aware polyline for the remaining polyline. + * @param {!google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams} + * params The parameters provided to the polyline customization function. + * @return {undefined} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProvider + .TRAFFIC_AWARE_REMAINING_POLYLINE_CUSTOMIZATION_FUNCTION = function( + params) {}; + +/** + * Options for vehicle location provider. + * @record + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions = + function() {}; + +/** + * Customization applied to the active polyline. An active polyline corresponds + * to a portion of the route the vehicle is currently traversing through. + *

Use this field to specify custom styling (such as polyline color) and + * interactivity (such as click handling).
  • If a {@link + * google.maps.PolylineOptions} object is specified, the changes specified in it + * are applied to the polyline after the polyline has been created, overwriting + * its default options if they exist.
  • If a function is specified, it is + * invoked once when the polyline is created. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the + * polyline's coordinates change, or when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * polyline have changed.

    See {@link + * google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .activePolylineCustomization; + +/** + * Provides JSON Web Tokens for authenticating the client to Fleet Engine. + * @type {!google.maps.journeySharing.AuthTokenFetcher} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .authTokenFetcher; + +/** + * Customization applied to the vehicle trip destination marker.

Use + * this field to specify custom styling (such as marker icon) and interactivity + * (such as click handling).
  • If a {@link google.maps.MarkerOptions} + * object is specified, the changes specified in it are applied to the marker + * after the marker has been created, overwriting its default options if they + * exist.
  • If a function is specified, it is invoked once when the marker + * is created, before it is added to the map view. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the location + * provider receives data from Fleet Engine, regardless of whether the data + * corresponding to this marker have changed.

    See {@link + * google.maps.journeySharing.VehicleWaypointMarkerCustomizationFunctionParams} + * for a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.VehicleWaypointMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .destinationMarkerCustomization; + +/** + * Customization applied to the vehicle trip intermediate destination markers. + *

Use this field to specify custom styling (such as marker icon) and + * interactivity (such as click handling).
  • If a {@link + * google.maps.MarkerOptions} object is specified, the changes specified in it + * are applied to the marker after the marker has been created, overwriting its + * default options if they exist.
  • If a function is specified, it is + * invoked once when the marker is created, before it is added to the map view. + * (On this invocation, the isNew parameter in the function + * parameters object is set to true.) Additionally, this function + * is invoked when the location provider receives data from Fleet Engine, + * regardless of whether the data corresponding to this marker have + * changed.

    See {@link + * google.maps.journeySharing.VehicleWaypointMarkerCustomizationFunctionParams} + * for a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.VehicleWaypointMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .intermediateDestinationMarkerCustomization; + +/** + * Customization applied to the vehicle trip origin marker.

Use this + * field to specify custom styling (such as marker icon) and interactivity (such + * as click handling).
  • If a {@link google.maps.MarkerOptions} object is + * specified, the changes specified in it are applied to the marker after the + * marker has been created, overwriting its default options if they + * exist.
  • If a function is specified, it is invoked once when the marker + * is created, before it is added to the map view. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the location + * provider receives data from Fleet Engine, regardless of whether the data + * corresponding to this marker have changed.

    See {@link + * google.maps.journeySharing.VehicleWaypointMarkerCustomizationFunctionParams} + * for a list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.VehicleWaypointMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .originMarkerCustomization; + +/** + * Minimum time between fetching location updates in milliseconds. If it takes + * longer than pollingIntervalMillis to fetch a location update, + * the next location update is not started until the current one finishes. + *

Setting this value to 0 disables recurring location updates. A new + * location update is fetched if any of the parameters observed by the location + * provider changes.

The default polling interval is 5000 milliseconds, + * the minimum interval. If you set the polling interval to a lower non-zero + * value, 5000 is used. + * @type {?number} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .pollingIntervalMillis; + +/** + * The consumer's project ID from Google Cloud Console. + * @type {string} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .projectId; + +/** + * Customization applied to the remaining polyline. A remaining polyline + * corresponds to a portion of the route the vehicle has not yet started + * traversing through.

Use this field to specify custom styling (such as + * polyline color) and interactivity (such as click handling).
  • If + * a {@link google.maps.PolylineOptions} object is specified, the changes + * specified in it are applied to the polyline after the polyline has been + * created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the polyline is created. (On + * this invocation, the isNew parameter in the function parameters + * object is set to true.) Additionally, this function is invoked + * when the polyline's coordinates change, or when the location provider + * receives data from Fleet Engine, regardless of whether the data corresponding + * to this polyline have changed.

    See {@link + * google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .remainingPolylineCustomization; + +/** + * Threshold for stale vehicle location. If the last updated location for the + * vehicle is older this threshold, the vehicle will not be displayed. Defaults + * to 24 hours in milliseconds. If the threshold is less than 0, or + * Infinity, the threshold will be ignored and the vehicle location will + * not be considered stale. + * @type {?number} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .staleLocationThresholdMillis; + +/** + * Customization applied to the taken polyline. A taken polyline corresponds to + * a portion of the route the vehicle has already traversed through.

Use + * this field to specify custom styling (such as polyline color) and + * interactivity (such as click handling).
  • If a {@link + * google.maps.PolylineOptions} object is specified, the changes specified in it + * are applied to the polyline after the polyline has been created, overwriting + * its default options if they exist.
  • If a function is specified, it is + * invoked once when the polyline is created. (On this invocation, the + * isNew parameter in the function parameters object is set to + * true.) Additionally, this function is invoked when the + * polyline's coordinates change, or when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * polyline have changed.

    See {@link + * google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams): + * void)|google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .takenPolylineCustomization; + +/** + * The vehicle ID to track immediately after the location provider is + * instantiated. If not specified, the location provider does not start tracking + * any vehicle; use {@link + * google.maps.journeySharing.FleetEngineVehicleLocationProvider.vehicleId} to + * set the ID and begin tracking. + * @type {?string} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .vehicleId; + +/** + * Customization applied to the vehicle marker.

Use this field to + * specify custom styling (such as marker icon) and interactivity (such as click + * handling).
  • If a {@link google.maps.MarkerOptions} object is specified, + * the changes specified in it are applied to the marker after the marker has + * been created, overwriting its default options if they exist.
  • If a + * function is specified, it is invoked once when the marker is created, before + * it is added to the map view. (On this invocation, the isNew + * parameter in the function parameters object is set to true.) + * Additionally, this function is invoked when the location provider receives + * data from Fleet Engine, regardless of whether the data corresponding to this + * marker have changed.

    See {@link + * google.maps.journeySharing.VehicleMarkerCustomizationFunctionParams} for a + * list of supplied parameters and their uses.
+ * @type {(function(!google.maps.journeySharing.VehicleMarkerCustomizationFunctionParams): + * void)|google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.prototype + .vehicleMarkerCustomization; + +/** + * The event object passed to the event handler when the {@link + * google.maps.journeySharing.FleetEngineVehicleLocationProvider.update} event + * is triggered. + * @record + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderUpdateEvent = + function() {}; + +/** + * The list of trips completed by this vehicle. Unmodifiable. + * @type {?Array} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderUpdateEvent + .prototype.trips; + +/** + * The vehicle data structure returned by the update. Unmodifiable. + * @type {?google.maps.journeySharing.Vehicle} + */ +google.maps.journeySharing.FleetEngineVehicleLocationProviderUpdateEvent + .prototype.vehicle; + +/** + * The map view. + * + * Access by calling `const {JourneySharingMapView} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.journeySharing.JourneySharingMapViewOptions} options + * Options for the map view. + * @constructor + */ +google.maps.journeySharing.JourneySharingMapView = function(options) {}; + +/** + * This Field is read-only. Automatic viewport mode. + * @type {!google.maps.journeySharing.AutomaticViewportMode} + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .automaticViewportMode; + +/** + * This Field is read-only. The DOM element backing the view. + * @type {!Element} + */ +google.maps.journeySharing.JourneySharingMapView.prototype.element; + +/** + * Enables or disables the traffic layer. + * @type {boolean} + */ +google.maps.journeySharing.JourneySharingMapView.prototype.enableTraffic; + +/** + * This field is read-only. Sources of tracked locations to be shown in the + * tracking map view. To add or remove location providers, use the {@link + * google.maps.journeySharing.JourneySharingMapView.addLocationProvider} + * and {@link + * google.maps.journeySharing.JourneySharingMapView.removeLocationProvider} + * methods. + * @type {?Array} + */ +google.maps.journeySharing.JourneySharingMapView.prototype.locationProviders; + +/** + * This Field is read-only. The map object contained in the map view. + * @type {!google.maps.Map} + */ +google.maps.journeySharing.JourneySharingMapView.prototype.map; + +/** + * This Field is read-only. The map options passed into the map via the map + * view. + * @type {!google.maps.MapOptions} + */ +google.maps.journeySharing.JourneySharingMapView.prototype.mapOptions; + +/** + * This Field is read-only. A source of tracked locations to be shown in the + * tracking map view. + * @type {?google.maps.journeySharing.LocationProvider} + * @deprecated Use {@link + * google.maps.journeySharing.JourneySharingMapView.locationProviders} + * instead. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.locationProvider; + +/** + * Configures options for a destination location marker. Invoked whenever a new + * destination marker is rendered.

If specifying a function, the + * function can and should modify the input's defaultMarkerOptions field + * containing a google.maps.MarkerOptions object, and return it as markerOptions + * in the output MarkerSetupOptions object.

Specifying a + * MarkerSetupOptions object has the same effect as specifying a function that + * returns that static object.

Do not reuse the same MarkerSetupOptions + * object in different MarkerSetup functions or static values, and do not reuse + * the same google.maps.MarkerOptions object for the markerOptions key in + * different MarkerSetupOptions objects. If markerOptions is unset or null, it + * will be overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {!google.maps.journeySharing.MarkerSetup} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .destinationMarkerSetup; + +/** + * Configures options for an origin location marker. Invoked whenever a new + * origin marker is rendered.

If specifying a function, the function can + * and should modify the input's defaultMarkerOptions field containing a + * google.maps.MarkerOptions object, and return it as markerOptions in the + * output MarkerSetupOptions object.

Specifying a MarkerSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same MarkerSetupOptions object in different + * MarkerSetup functions or static values, and do not reuse the same + * google.maps.MarkerOptions object for the markerOptions key in different + * MarkerSetupOptions objects. If markerOptions is unset or null, it will be + * overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {!google.maps.journeySharing.MarkerSetup} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.originMarkerSetup; + +/** + * Configures options for a task outcome location marker. Invoked whenever a new + * task outcome location marker is rendered.

If specifying a function, + * the function can and should modify the input's defaultMarkerOptions field + * containing a google.maps.MarkerOptions object, and return it as markerOptions + * in the output MarkerSetupOptions object.

Specifying a + * MarkerSetupOptions object has the same effect as specifying a function that + * returns that static object.

Do not reuse the same MarkerSetupOptions + * object in different MarkerSetup functions or static values, and do not reuse + * the same google.maps.MarkerOptions object for the markerOptions key in + * different MarkerSetupOptions objects. If markerOptions is unset or null, it + * will be overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {!google.maps.journeySharing.MarkerSetup} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .taskOutcomeMarkerSetup; + +/** + * Configures options for an unsuccessful task location marker. Invoked whenever + * a new unsuccessful task marker is rendered.

If specifying a function, + * the function can and should modify the input's defaultMarkerOptions field + * containing a google.maps.MarkerOptions object, and return it as markerOptions + * in the output MarkerSetupOptions object.

Specifying a + * MarkerSetupOptions object has the same effect as specifying a function that + * returns that static object.

Do not reuse the same MarkerSetupOptions + * object in different MarkerSetup functions or static values, and do not reuse + * the same google.maps.MarkerOptions object for the markerOptions key in + * different MarkerSetupOptions objects. If markerOptions is unset or null, it + * will be overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {!google.maps.journeySharing.MarkerSetup} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .unsuccessfulTaskMarkerSetup; + +/** + * Configures options for a vehicle location marker. Invoked whenever a new + * vehicle marker is rendered.

If specifying a function, the function + * can and should modify the input's defaultMarkerOptions field containing a + * google.maps.MarkerOptions object, and return it as markerOptions in the + * output MarkerSetupOptions object.

Specifying a MarkerSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same MarkerSetupOptions object in different + * MarkerSetup functions or static values, and do not reuse the same + * google.maps.MarkerOptions object for the markerOptions key in different + * MarkerSetupOptions objects. If markerOptions is unset or null, it will be + * overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {!google.maps.journeySharing.MarkerSetup} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.vehicleMarkerSetup; + +/** + * Configures options for a waypoint location marker. Invoked whenever a new + * waypoint marker is rendered.

If specifying a function, the function + * can and should modify the input's defaultMarkerOptions field containing a + * google.maps.MarkerOptions object, and return it as markerOptions in the + * output MarkerSetupOptions object.

Specifying a MarkerSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same MarkerSetupOptions object in different + * MarkerSetup functions or static values, and do not reuse the same + * google.maps.MarkerOptions object for the markerOptions key in different + * MarkerSetupOptions objects. If markerOptions is unset or null, it will be + * overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {!google.maps.journeySharing.MarkerSetup} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.waypointMarkerSetup; + +/** + * Configures options for an anticipated route polyline. Invoked whenever a new + * anticipated route polyline is rendered.

If specifying a function, the + * function can and should modify the input's defaultPolylineOptions field + * containing a google.maps.PolylineOptions object, and return it as + * polylineOptions in the output PolylineSetupOptions object.

Specifying + * a PolylineSetupOptions object has the same effect as specifying a function + * that returns that static object.

Do not reuse the same + * PolylineSetupOptions object in different PolylineSetup functions or static + * values, and do not reuse the same google.maps.PolylineOptions object for the + * polylineOptions key in different PolylineSetupOptions objects. If + * polylineOptions or visible is unset or null, it will be overwritten with the + * default. Any values set for polylineOptions.map or polylineOptions.path will + * be ignored. + * @type {!google.maps.journeySharing.PolylineSetup} + * @deprecated Polyline setup is deprecated. Use the + * PolylineCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .anticipatedRoutePolylineSetup; + +/** + * Configures options for a taken route polyline. Invoked whenever a new taken + * route polyline is rendered.

If specifying a function, the function + * can and should modify the input's defaultPolylineOptions field containing + * a google.maps.PolylineOptions object, and return it as polylineOptions in the + * output PolylineSetupOptions object.

Specifying a PolylineSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same PolylineSetupOptions object in + * different PolylineSetup functions or static values, and do not reuse the same + * google.maps.PolylineOptions object for the polylineOptions key in different + * PolylineSetupOptions objects.

Any values set for polylineOptions.map + * or polylineOptions.path will be ignored. Any unset or null value will be + * overwritten with the default. + * @type {!google.maps.journeySharing.PolylineSetup} + * @deprecated Polyline setup is deprecated. Use the + * PolylineCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .takenRoutePolylineSetup; + +/** + * Configures options for a ping location marker. Invoked whenever a new ping + * marker is rendered.

If specifying a function, the function can and + * should modify the input's defaultMarkerOptions field containing a + * google.maps.MarkerOptions object, and return it as markerOptions in the + * output MarkerSetupOptions object.

Specifying a MarkerSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same MarkerSetupOptions object in different + * MarkerSetup functions or static values, and do not reuse the same + * google.maps.MarkerOptions object for the markerOptions key in different + * MarkerSetupOptions objects. If markerOptions is unset or null, it will be + * overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {!google.maps.journeySharing.MarkerSetup} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.pingMarkerSetup; + +/** + * Configures options for a successful task location marker. Invoked whenever a + * new successful task marker is rendered.

If specifying a function, the + * function can and should modify the input's defaultMarkerOptions field + * containing a google.maps.MarkerOptions object, and return it as markerOptions + * in the output MarkerSetupOptions object.

Specifying a + * MarkerSetupOptions object has the same effect as specifying a function that + * returns that static object.

Do not reuse the same MarkerSetupOptions + * object in different MarkerSetup functions or static values, and do not reuse + * the same google.maps.MarkerOptions object for the markerOptions key in + * different MarkerSetupOptions objects. If markerOptions is unset or null, it + * will be overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {!google.maps.journeySharing.MarkerSetup} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .successfulTaskMarkerSetup; + +/** + * Returns the destination markers, if any. + * @type {!Array} + * @deprecated getting a list of markers via the MapView is + * deprecated. Use the MarkerCustomizationFunctions for your + * location provider to receive callbacks when a marker is added to the map + * or updated. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.destinationMarkers; + +/** + * Returns the origin markers, if any. + * @type {!Array} + * @deprecated getting a list of markers via the MapView is + * deprecated. Use the MarkerCustomizationFunctions for your + * location provider to receive callbacks when a marker is added to the map + * or updated. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.originMarkers; + +/** + * Returns the successful task markers, if any. + * @type {!Array} + * @deprecated getting a list of markers via the MapView is + * deprecated. Use the MarkerCustomizationFunctions for your + * location provider to receive callbacks when a marker is added to the map + * or updated. + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .successfulTaskMarkers; + +/** + * Returns the task outcome markers, if any. + * @type {!Array} + * @deprecated getting a list of markers via the MapView is + * deprecated. Use the MarkerCustomizationFunctions for your + * location provider to receive callbacks when a marker is added to the map + * or updated. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.taskOutcomeMarkers; + +/** + * Returns the unsuccessful task markers, if any. + * @type {!Array} + * @deprecated getting a list of markers via the MapView is + * deprecated. Use the MarkerCustomizationFunctions for your + * location provider to receive callbacks when a marker is added to the map + * or updated. + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .unsuccessfulTaskMarkers; + +/** + * Returns the vehicle markers, if any. + * @type {!Array} + * @deprecated getting a list of markers via the MapView is + * deprecated. Use the MarkerCustomizationFunctions for your + * location provider to receive callbacks when a marker is added to the map + * or updated. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.vehicleMarkers; + +/** + * Returns the waypoint markers, if any. + * @type {!Array} + * @deprecated getting a list of markers via the MapView is + * deprecated. Use the MarkerCustomizationFunctions for your + * location provider to receive callbacks when a marker is added to the map + * or updated. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.waypointMarkers; + +/** + * Returns the anticipated route polylines, if any. + * @type {!Array} + * @deprecated getting a list of polylines via the MapView is + * deprecated. Use the PolylineCustomizationFunctions for your + * location provider to receive callbacks when a polyline is added to the + * map or updated. + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .anticipatedRoutePolylines; + +/** + * Returns the taken route polylines, if any. + * @type {!Array} + * @deprecated getting a list of polylines via the MapView is + * deprecated. Use the PolylineCustomizationFunctions for your + * location provider to receive callbacks when a polyline is added to the + * map or updated. + */ +google.maps.journeySharing.JourneySharingMapView.prototype.takenRoutePolylines; + +/** + * Adds a location provider to the map view. If the location provider is already + * added, no action is performed. + * @param {!google.maps.journeySharing.LocationProvider} locationProvider the + * location provider to add. + * @return {undefined} + */ +google.maps.journeySharing.JourneySharingMapView.prototype.addLocationProvider = + function(locationProvider) {}; + +/** + * Removes a location provider from the map view. If the location provider is + * not already added to the map view, no action is performed. + * @param {!google.maps.journeySharing.LocationProvider} locationProvider the + * location provider to remove. + * @return {undefined} + */ +google.maps.journeySharing.JourneySharingMapView.prototype + .removeLocationProvider = function(locationProvider) {}; + +/** + * Options for the map view. + * @record + */ +google.maps.journeySharing.JourneySharingMapViewOptions = function() {}; + +/** + * Automatic viewport mode. Default value is FIT_ANTICIPATED_ROUTE, which + * enables the map view to automatically adjust the viewport to fit vehicle + * markers, location markers, and any visible anticipated route polylines. Set + * this to NONE to turn off automatic fitting. + * @type {google.maps.journeySharing.AutomaticViewportMode|null|undefined} + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .automaticViewportMode; + +/** + * The DOM element backing the view. Required. + * @type {!Element} + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype.element; + +/** + * Sources of tracked locations to be shown in the tracking map view. Optional. + * @type {?Array} + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .locationProviders; + +/** + * Map options passed into the google.maps.Map constructor. + * @type {google.maps.MapOptions|null|undefined} + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype.mapOptions; + +/** + * A source of tracked locations to be shown in the tracking map view. Optional. + * @type {?google.maps.journeySharing.LocationProvider} + * @deprecated Use {@link + * google.maps.journeySharing.JourneySharingMapViewOptions.locationProviders} + * instead. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .locationProvider; + +/** + * Configures options for a destination location marker. Invoked whenever a new + * destination marker is rendered.

If specifying a function, the + * function can and should modify the input's defaultMarkerOptions field + * containing a google.maps.MarkerOptions object, and return it as markerOptions + * in the output MarkerSetupOptions object.

Specifying a + * MarkerSetupOptions object has the same effect as specifying a function that + * returns that static object.

Do not reuse the same MarkerSetupOptions + * object in different MarkerSetup functions or static values, and do not reuse + * the same google.maps.MarkerOptions object for the markerOptions key in + * different MarkerSetupOptions objects. If markerOptions is unset or null, it + * will be overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {google.maps.journeySharing.MarkerSetup|null|undefined} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .destinationMarkerSetup; + +/** + * Configures options for an origin location marker. Invoked whenever a new + * origin marker is rendered.

If specifying a function, the function can + * and should modify the input's defaultMarkerOptions field containing a + * google.maps.MarkerOptions object, and return it as markerOptions in the + * output MarkerSetupOptions object.

Specifying a MarkerSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same MarkerSetupOptions object in different + * MarkerSetup functions or static values, and do not reuse the same + * google.maps.MarkerOptions object for the markerOptions key in different + * MarkerSetupOptions objects. If markerOptions is unset or null, it will be + * overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {google.maps.journeySharing.MarkerSetup|null|undefined} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .originMarkerSetup; + +/** + * Configures options for a task outcome location marker. Invoked whenever a new + * task outcome location marker is rendered.

If specifying a function, + * the function can and should modify the input's defaultMarkerOptions field + * containing a google.maps.MarkerOptions object, and return it as markerOptions + * in the output MarkerSetupOptions object.

Specifying a + * MarkerSetupOptions object has the same effect as specifying a function that + * returns that static object.

Do not reuse the same MarkerSetupOptions + * object in different MarkerSetup functions or static values, and do not reuse + * the same google.maps.MarkerOptions object for the markerOptions key in + * different MarkerSetupOptions objects. If markerOptions is unset or null, it + * will be overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {google.maps.journeySharing.MarkerSetup|null|undefined} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .taskOutcomeMarkerSetup; + +/** + * Configures options for an unsuccessful task location marker. Invoked whenever + * a new unsuccessful task marker is rendered.

If specifying a function, + * the function can and should modify the input's defaultMarkerOptions field + * containing a google.maps.MarkerOptions object, and return it as markerOptions + * in the output MarkerSetupOptions object.

Specifying a + * MarkerSetupOptions object has the same effect as specifying a function that + * returns that static object.

Do not reuse the same MarkerSetupOptions + * object in different MarkerSetup functions or static values, and do not reuse + * the same google.maps.MarkerOptions object for the markerOptions key in + * different MarkerSetupOptions objects. If markerOptions is unset or null, it + * will be overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {google.maps.journeySharing.MarkerSetup|null|undefined} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .unsuccessfulTaskMarkerSetup; + +/** + * Configures options for a vehicle location marker. Invoked whenever a new + * vehicle marker is rendered.

If specifying a function, the function + * can and should modify the input's defaultMarkerOptions field containing a + * google.maps.MarkerOptions object, and return it as markerOptions in the + * output MarkerSetupOptions object.

Specifying a MarkerSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same MarkerSetupOptions object in different + * MarkerSetup functions or static values, and do not reuse the same + * google.maps.MarkerOptions object for the markerOptions key in different + * MarkerSetupOptions objects. If markerOptions is unset or null, it will be + * overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {google.maps.journeySharing.MarkerSetup|null|undefined} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .vehicleMarkerSetup; + +/** + * Configures options for a waypoint location marker. Invoked whenever a new + * waypoint marker is rendered.

If specifying a function, the function + * can and should modify the input's defaultMarkerOptions field containing a + * google.maps.MarkerOptions object, and return it as markerOptions in the + * output MarkerSetupOptions object.

Specifying a MarkerSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same MarkerSetupOptions object in different + * MarkerSetup functions or static values, and do not reuse the same + * google.maps.MarkerOptions object for the markerOptions key in different + * MarkerSetupOptions objects. If markerOptions is unset or null, it will be + * overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {google.maps.journeySharing.MarkerSetup|null|undefined} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .waypointMarkerSetup; + +/** + * Configures options for an anticipated route polyline. Invoked whenever a new + * anticipated route polyline is rendered.

If specifying a function, the + * function can and should modify the input's defaultPolylineOptions field + * containing a google.maps.PolylineOptions object, and return it as + * polylineOptions in the output PolylineSetupOptions object.

Specifying + * a PolylineSetupOptions object has the same effect as specifying a function + * that returns that static object.

Do not reuse the same + * PolylineSetupOptions object in different PolylineSetup functions or static + * values, and do not reuse the same google.maps.PolylineOptions object for the + * polylineOptions key in different PolylineSetupOptions objects. If + * polylineOptions or visible is unset or null, it will be overwritten with the + * default. Any values set for polylineOptions.map or polylineOptions.path will + * be ignored. + * @type {google.maps.journeySharing.PolylineSetup|null|undefined} + * @deprecated Polyline setup is deprecated. Use the + * PolylineCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .anticipatedRoutePolylineSetup; + +/** + * Configures options for a taken route polyline. Invoked whenever a new taken + * route polyline is rendered.

If specifying a function, the function + * can and should modify the input's defaultPolylineOptions field containing + * a google.maps.PolylineOptions object, and return it as polylineOptions in the + * output PolylineSetupOptions object.

Specifying a PolylineSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same PolylineSetupOptions object in + * different PolylineSetup functions or static values, and do not reuse the same + * google.maps.PolylineOptions object for the polylineOptions key in different + * PolylineSetupOptions objects.

Any values set for polylineOptions.map + * or polylineOptions.path will be ignored. Any unset or null value will be + * overwritten with the default. + * @type {google.maps.journeySharing.PolylineSetup|null|undefined} + * @deprecated Polyline setup is deprecated. Use the + * PolylineCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .takenRoutePolylineSetup; + +/** + * Configures options for a ping location marker. Invoked whenever a new ping + * marker is rendered.

If specifying a function, the function can and + * should modify the input's defaultMarkerOptions field containing a + * google.maps.MarkerOptions object, and return it as markerOptions in the + * output MarkerSetupOptions object.

Specifying a MarkerSetupOptions + * object has the same effect as specifying a function that returns that static + * object.

Do not reuse the same MarkerSetupOptions object in different + * MarkerSetup functions or static values, and do not reuse the same + * google.maps.MarkerOptions object for the markerOptions key in different + * MarkerSetupOptions objects. If markerOptions is unset or null, it will be + * overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {google.maps.journeySharing.MarkerSetup|null|undefined} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .pingMarkerSetup; + +/** + * Configures options for a successful task location marker. Invoked whenever a + * new successful task marker is rendered.

If specifying a function, the + * function can and should modify the input's defaultMarkerOptions field + * containing a google.maps.MarkerOptions object, and return it as markerOptions + * in the output MarkerSetupOptions object.

Specifying a + * MarkerSetupOptions object has the same effect as specifying a function that + * returns that static object.

Do not reuse the same MarkerSetupOptions + * object in different MarkerSetup functions or static values, and do not reuse + * the same google.maps.MarkerOptions object for the markerOptions key in + * different MarkerSetupOptions objects. If markerOptions is unset or null, it + * will be overwritten with the default. Any value set for markerOptions.map or + * markerOptions.position will be ignored. + * @type {google.maps.journeySharing.MarkerSetup|null|undefined} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. This field will be removed in the future. + */ +google.maps.journeySharing.JourneySharingMapViewOptions.prototype + .successfulTaskMarkerSetup; + +/** + * Parent class of all location providers. + * @abstract + * @constructor + */ +google.maps.journeySharing.LocationProvider = function() {}; + +/** + * Adds a {@link google.maps.MapsEventListener} for an event fired by this + * location provider. Returns an identifier for this listener that can be used + * with {@link google.maps.event.removeListener}. + * @param {string} eventName The name of the event to listen for. + * @param {!Function} handler The event handler. + * @return {!google.maps.MapsEventListener} + */ +google.maps.journeySharing.LocationProvider.prototype.addListener = function( + eventName, handler) {}; + +/** + * Parameters that are common to all marker customization functions. No object + * of this class is provided directly to any marker customization function; an + * object of one of its descendent classes is provided instead. + * @record + */ +google.maps.journeySharing.MarkerCustomizationFunctionParams = function() {}; + +/** + * The default options used to create this marker. + * @type {!google.maps.MarkerOptions} + */ +google.maps.journeySharing.MarkerCustomizationFunctionParams.prototype + .defaultOptions; + +/** + * If true, the marker was newly created, and the marker customization function + * is being called for the first time, before the marker has been added to the + * map view. False otherwise. + * @type {boolean} + */ +google.maps.journeySharing.MarkerCustomizationFunctionParams.prototype.isNew; + +/** + * The marker. Any customizations should be made to this object directly. + * @type {!google.maps.Marker} + */ +google.maps.journeySharing.MarkerCustomizationFunctionParams.prototype.marker; + +/** + * @typedef {!google.maps.journeySharing.MarkerSetupOptions|(function(!google.maps.journeySharing.DefaultMarkerSetupOptions): + * !google.maps.journeySharing.MarkerSetupOptions)} + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. + */ +google.maps.journeySharing.MarkerSetup; + +/** + * MarkerSetup options. + * @record + * @deprecated Marker setup is deprecated. Use the + * MarkerCustomizationFunction methods for your location + * provider instead. + */ +google.maps.journeySharing.MarkerSetupOptions = function() {}; + +/** + * Marker options. + * @type {google.maps.MarkerOptions|null|undefined} + */ +google.maps.journeySharing.MarkerSetupOptions.prototype.markerOptions; + +/** + * Parameters specific to marker customization functions that apply options to + * markers representing planned stops. Used by {@link + * google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions.plannedStopMarkerCustomization}. + * @extends {google.maps.journeySharing.DeliveryVehicleMarkerCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.PlannedStopMarkerCustomizationFunctionParams = + function() {}; + +/** + * The 0-based index of this stop in the list of remaining stops. + * @type {number} + */ +google.maps.journeySharing.PlannedStopMarkerCustomizationFunctionParams + .prototype.stopIndex; + +/** + * Parent class of polling location providers. + * @extends {google.maps.journeySharing.LocationProvider} + * @abstract + * @constructor + */ +google.maps.journeySharing.PollingLocationProvider = function() {}; + +/** + * True if this location provider is polling. Read only. + * @type {boolean} + */ +google.maps.journeySharing.PollingLocationProvider.prototype.isPolling; + +/** + * Minimum time between fetching location updates in milliseconds. If it takes + * longer than pollingIntervalMillis to fetch a location update, + * the next location update is not started until the current one finishes. + *

Setting this value to 0, Infinity, or a negative value disables + * automatic location updates. A new location update is fetched once if the + * tracking ID parameter (for example, the shipment tracking ID of the shipment + * location provider), or a filtering option (for example, viewport bounds or + * attribute filters for fleet location providers) changes.

The default, + * and minimum, polling interval is 5000 milliseconds. If you set the polling + * interval to a lower positive value, 5000 is stored and used. + * @type {number} + */ +google.maps.journeySharing.PollingLocationProvider.prototype + .pollingIntervalMillis; + +/** + * The event object passed to the event handler when the {@link + * google.maps.journeySharing.PollingLocationProvider.ispollingchange} event is + * triggered. + * @record + */ +google.maps.journeySharing.PollingLocationProviderIsPollingChangeEvent = + function() {}; + +/** + * The error that caused the polling state to change, if the state change was + * caused by an error. Undefined if the state change was due to normal + * operations. + * @type {?Error} + */ +google.maps.journeySharing.PollingLocationProviderIsPollingChangeEvent.prototype + .error; + +/** + * Parameters that are common to all polyline customization functions. No object + * of this class is provided directly to any polyline customization function; an + * object of one of its descendent classes is provided instead. + * @record + */ +google.maps.journeySharing.PolylineCustomizationFunctionParams = function() {}; + +/** + * The default options used to create this set of polylines. + * @type {!google.maps.PolylineOptions} + */ +google.maps.journeySharing.PolylineCustomizationFunctionParams.prototype + .defaultOptions; + +/** + * If true, the list of polylines was newly created, and the polyline + * customization function is being called for the first time. False otherwise. + * @type {boolean} + */ +google.maps.journeySharing.PolylineCustomizationFunctionParams.prototype.isNew; + +/** + * The list of polylines created. They are arranged sequentially to form the + * rendered route. + * @type {!Array} + */ +google.maps.journeySharing.PolylineCustomizationFunctionParams.prototype + .polylines; + +/** + * @typedef {!google.maps.journeySharing.PolylineSetupOptions|(function(!google.maps.journeySharing.DefaultPolylineSetupOptions): + * !google.maps.journeySharing.PolylineSetupOptions)} + * @deprecated Polyline setup is deprecated. Use the + * PolylineCustomizationFunction methods for your location + * provider instead. + */ +google.maps.journeySharing.PolylineSetup; + +/** + * PolylineSetup options. + * @record + * @deprecated Polyline setup is deprecated. Use the + * PolylineCustomizationFunction methods for your location + * provider instead. + */ +google.maps.journeySharing.PolylineSetupOptions = function() {}; + +/** + * Polyline options. + * @type {google.maps.PolylineOptions|null|undefined} + */ +google.maps.journeySharing.PolylineSetupOptions.prototype.polylineOptions; + +/** + * Polyline visibility. + * @type {boolean|null|undefined} + */ +google.maps.journeySharing.PolylineSetupOptions.prototype.visible; + +/** + * Parameters specific to marker customization functions that apply options to + * markers representing shipment delivery vehicle and destination locations. + * Used by {@link + * google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.deliveryVehicleMarkerCustomization} + * and {@link + * google.maps.journeySharing.FleetEngineShipmentLocationProviderOptions.destinationMarkerCustomization}. + * @extends {google.maps.journeySharing.MarkerCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.ShipmentMarkerCustomizationFunctionParams = + function() {}; + +/** + * Information for the task associated with this marker. + * @type {!google.maps.journeySharing.TaskTrackingInfo} + */ +google.maps.journeySharing.ShipmentMarkerCustomizationFunctionParams.prototype + .taskTrackingInfo; + +/** + * Parameters specific to polyline customization functions for {@link + * google.maps.journeySharing.FleetEngineShipmentLocationProvider}. + * @extends {google.maps.journeySharing.PolylineCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.ShipmentPolylineCustomizationFunctionParams = + function() {}; + +/** + * Information for the task associated with this polyline. + * @type {!google.maps.journeySharing.TaskTrackingInfo} + */ +google.maps.journeySharing.ShipmentPolylineCustomizationFunctionParams.prototype + .taskTrackingInfo; + +/** + * The classification of polyline speed based on traffic data. + * + * Access by calling `const {Speed} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.journeySharing.Speed = { + /** + * Normal speed, no slowdown is detected. + */ + NORMAL: 'NORMAL', + /** + * Slowdown detected, but no traffic jam formed. + */ + SLOW: 'SLOW', + /** + * Traffic jam detected. + */ + TRAFFIC_JAM: 'TRAFFIC_JAM', +}; + +/** + * Traffic density indicator on a contiguous path segment. The interval defines + * the starting and ending points of the segment via their indices. + * @record + */ +google.maps.journeySharing.SpeedReadingInterval = function() {}; + +/** + * The zero-based index of the ending point of the interval in the path. + * @type {number} + */ +google.maps.journeySharing.SpeedReadingInterval.prototype.endPolylinePointIndex; + +/** + * Traffic speed in this interval. + * @type {!google.maps.journeySharing.Speed} + */ +google.maps.journeySharing.SpeedReadingInterval.prototype.speed; + +/** + * The zero-based index of the starting point of the interval in the path. + * @type {number} + */ +google.maps.journeySharing.SpeedReadingInterval.prototype + .startPolylinePointIndex; + +/** + * The details for a task returned by Fleet Engine. + * @record + */ +google.maps.journeySharing.Task = function() {}; + +/** + * Attributes assigned to the task. + * @type {!Object} + */ +google.maps.journeySharing.Task.prototype.attributes; + +/** + * The timestamp of the estimated completion time of the task. + * @type {?Date} + */ +google.maps.journeySharing.Task.prototype.estimatedCompletionTime; + +/** + * Information specific to the last location update. + * @type {?google.maps.journeySharing.VehicleLocationUpdate} + */ +google.maps.journeySharing.Task.prototype.latestVehicleLocationUpdate; + +/** + * The task name in the format + * "providers/{provider_id}/tasks/{task_id}". The task_id must be a + * unique identifier and not a tracking ID. To store a tracking ID of a + * shipment, use the tracking_id field. Multiple tasks can have the same + * tracking_id. + * @type {string} + */ +google.maps.journeySharing.Task.prototype.name; + +/** + * The outcome of the task. + * @type {?string} + */ +google.maps.journeySharing.Task.prototype.outcome; + +/** + * The location where the task was completed (from provider). + * @type {?google.maps.LatLngLiteral} + */ +google.maps.journeySharing.Task.prototype.outcomeLocation; + +/** + * The setter of the task outcome location ('PROVIDER' or + * 'LAST_VEHICLE_LOCATION'). + * @type {?string} + */ +google.maps.journeySharing.Task.prototype.outcomeLocationSource; + +/** + * The timestamp of when the task's outcome was set (from provider). + * @type {?Date} + */ +google.maps.journeySharing.Task.prototype.outcomeTime; + +/** + * The location where the task is to be completed. + * @type {?google.maps.LatLngLiteral} + */ +google.maps.journeySharing.Task.prototype.plannedLocation; + +/** + * Information about the segments left to be completed for this task. + * @type {!Array} + */ +google.maps.journeySharing.Task.prototype.remainingVehicleJourneySegments; + +/** + * The current execution state of the task. + * @type {string} + */ +google.maps.journeySharing.Task.prototype.status; + +/** + * The time window during which the task should be completed. + * @type {?google.maps.journeySharing.TimeWindow} + */ +google.maps.journeySharing.Task.prototype.targetTimeWindow; + +/** + * The tracking ID of the shipment. + * @type {?string} + */ +google.maps.journeySharing.Task.prototype.trackingId; + +/** + * The task type; for example, a break or shipment. + * @type {string} + */ +google.maps.journeySharing.Task.prototype.type; + +/** + * The ID of the vehicle performing this task. + * @type {?string} + */ +google.maps.journeySharing.Task.prototype.vehicleId; + +/** + * TaskInfo type, used by {@link + * google.maps.journeySharing.DeliveryVehicleStop}. + * @record + */ +google.maps.journeySharing.TaskInfo = function() {}; + +/** + * The extra time it takes to perform the task, in milliseconds. + * @type {?number} + */ +google.maps.journeySharing.TaskInfo.prototype.extraDurationMillis; + +/** + * The ID of the task. + * @type {?string} + */ +google.maps.journeySharing.TaskInfo.prototype.id; + +/** + * The time window during which the task should be completed. + * @type {?google.maps.journeySharing.TimeWindow} + */ +google.maps.journeySharing.TaskInfo.prototype.targetTimeWindow; + +/** + * Parameters specific to marker customization functions that apply options to + * markers representing planned or actual task locations. Used by {@link + * google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions.taskMarkerCustomization} + * and {@link + * google.maps.journeySharing.FleetEngineDeliveryVehicleLocationProviderOptions.taskOutcomeMarkerCustomization}. + * @extends {google.maps.journeySharing.DeliveryVehicleMarkerCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.TaskMarkerCustomizationFunctionParams = + function() {}; + +/** + * The task location represented by this marker. + * @type {!google.maps.journeySharing.Task} + */ +google.maps.journeySharing.TaskMarkerCustomizationFunctionParams.prototype.task; + +/** + * The details for a task tracking info object returned by Fleet Engine. + * @record + */ +google.maps.journeySharing.TaskTrackingInfo = function() {}; + +/** + * Attributes assigned to the task. + * @type {!Object} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.attributes; + +/** + * The estimated arrival time to the stop location. + * @type {?Date} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.estimatedArrivalTime; + +/** + * The estimated completion time of a Task. + * @type {?Date} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype + .estimatedTaskCompletionTime; + +/** + * Information specific to the last location update. + * @type {?google.maps.journeySharing.VehicleLocationUpdate} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype + .latestVehicleLocationUpdate; + +/** + * The name in the format + * "providers/{provider_id}/taskTrackingInfo/{tracking_id}", where + * tracking_id represents the tracking ID. + * @type {string} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.name; + +/** + * The location where the Task will be completed. + * @type {?google.maps.LatLng} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.plannedLocation; + +/** + * The total remaining distance in meters to the VehicleStop of + * interest. + * @type {?number} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype + .remainingDrivingDistanceMeters; + +/** + * Indicates the number of stops the vehicle remaining until the task stop is + * reached, including the task stop. For example, if the vehicle's next stop + * is the task stop, the value will be 1. + * @type {?number} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.remainingStopCount; + +/** + * A list of points which when connected forms a polyline of the vehicle's + * expected route to the location of this task. + * @type {?Array} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.routePolylinePoints; + +/** + * The current execution state of the Task. + * @type {?string} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.state; + +/** + * The time window during which the task should be completed. + * @type {?google.maps.journeySharing.TimeWindow} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.targetTimeWindow; + +/** + * The outcome of attempting to execute a Task. + * @type {?string} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.taskOutcome; + +/** + * The time when the Task's outcome was set by the provider. + * @type {?Date} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.taskOutcomeTime; + +/** + * The tracking ID of a Task.
  • Must be a valid Unicode string.
  • + *
  • Limited to a maximum length of 64 characters.
  • Normalized + * according to Unicode + * Normalization Form C.
  • May not contain any of the following ASCII + * characters: '/', ':', '?', ',', or + * '#'.
+ * @type {string} + */ +google.maps.journeySharing.TaskTrackingInfo.prototype.trackingId; + +/** + * A time range. + * @record + */ +google.maps.journeySharing.TimeWindow = function() {}; + +/** + * The end time of the time window (inclusive). + * @type {!Date} + */ +google.maps.journeySharing.TimeWindow.prototype.endTime; + +/** + * The start time of the time window (inclusive). + * @type {!Date} + */ +google.maps.journeySharing.TimeWindow.prototype.startTime; + +/** + * The details for a trip returned by Fleet Engine. + * @record + */ +google.maps.journeySharing.Trip = function() {}; + +/** + * Location where the customer was dropped off. + * @type {?google.maps.LatLngLiteral} + */ +google.maps.journeySharing.Trip.prototype.actualDropOffLocation; + +/** + * Location where the customer was picked up. + * @type {?google.maps.LatLngLiteral} + */ +google.maps.journeySharing.Trip.prototype.actualPickupLocation; + +/** + * The estimated future time when the passengers will be dropped off, or the + * actual time when they were dropped off. + * @type {?Date} + */ +google.maps.journeySharing.Trip.prototype.dropOffTime; + +/** + * Information specific to the last location update. + * @type {?google.maps.journeySharing.VehicleLocationUpdate} + */ +google.maps.journeySharing.Trip.prototype.latestVehicleLocationUpdate; + +/** + * In the format "providers/{provider_id}/trips/{trip_id}". The + * trip_id must be a unique identifier. + * @type {string} + */ +google.maps.journeySharing.Trip.prototype.name; + +/** + * Number of passengers on this trip; does not include the driver. + * @type {number} + */ +google.maps.journeySharing.Trip.prototype.passengerCount; + +/** + * The estimated future time when the passengers will be picked up, or the + * actual time when they were picked up. + * @type {?Date} + */ +google.maps.journeySharing.Trip.prototype.pickupTime; + +/** + * Location where the customer indicates they will be dropped off. + * @type {?google.maps.LatLngLiteral} + */ +google.maps.journeySharing.Trip.prototype.plannedDropOffLocation; + +/** + * Location where customer indicates they will be picked up. + * @type {?google.maps.LatLngLiteral} + */ +google.maps.journeySharing.Trip.prototype.plannedPickupLocation; + +/** + * An array of waypoints indicating the path from the current location to the + * drop-off point. + * @type {!Array} + */ +google.maps.journeySharing.Trip.prototype.remainingWaypoints; + +/** + * Current status of the trip. Possible values are UNKNOWN_TRIP_STATUS, NEW, + * ENROUTE_TO_PICKUP, ARRIVED_AT_PICKUP, ARRIVED_AT_INTERMEDIATE_DESTINATION, + * ENROUTE_TO_INTERMEDIATE_DESTINATION, ENROUTE_TO_DROPOFF, COMPLETE, or + * CANCELED. + * @type {string} + */ +google.maps.journeySharing.Trip.prototype.status; + +/** + * The type of the trip. Possible values are UNKNOWN_TRIP_TYPE, SHARED or + * EXCLUSIVE. + * @type {string} + */ +google.maps.journeySharing.Trip.prototype.type; + +/** + * ID of the vehicle making this trip. + * @type {string} + */ +google.maps.journeySharing.Trip.prototype.vehicleId; + +/** + * Parameters specific to marker customization functions that apply options to + * markers representing trip vehicle, origin and destination locations. Used + * by {@link + * google.maps.journeySharing.FleetEngineTripLocationProviderOptions.vehicleMarkerCustomization}, {@link + * google.maps.journeySharing.FleetEngineTripLocationProviderOptions.originMarkerCustomization}, + * and {@link + * google.maps.journeySharing.FleetEngineTripLocationProviderOptions.destinationMarkerCustomization}. + * @extends {google.maps.journeySharing.MarkerCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.TripMarkerCustomizationFunctionParams = + function() {}; + +/** + * The trip associated with this marker.

For information about the + * vehicle servicing this trip, use {@link + * google.maps.journeySharing.Trip.latestVehicleLocationUpdate} and {@link + * google.maps.journeySharing.Trip.remainingWaypoints}. + * @type {!google.maps.journeySharing.Trip} + */ +google.maps.journeySharing.TripMarkerCustomizationFunctionParams.prototype.trip; + +/** + * Parameters specific to polyline customization functions for {@link + * google.maps.journeySharing.FleetEngineTripLocationProvider}. + * @extends {google.maps.journeySharing.PolylineCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.TripPolylineCustomizationFunctionParams = + function() {}; + +/** + * The trip associated with this polyline. + * @type {!google.maps.journeySharing.Trip} + */ +google.maps.journeySharing.TripPolylineCustomizationFunctionParams.prototype + .trip; + +/** + * Trip types supported by a {@link google.maps.journeySharing.Vehicle}. + * + * Access by calling `const {TripType} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.journeySharing.TripType = { + /** + * The trip is exclusive to a vehicle. + */ + EXCLUSIVE: 'EXCLUSIVE', + /** + * The trip may share a vehicle with other trips. + */ + SHARED: 'SHARED', + /** + * Unknown trip type. + */ + UNKNOWN_TRIP_TYPE: 'UNKNOWN_TRIP_TYPE', +}; + +/** + * TripWaypoint type. + * @record + */ +google.maps.journeySharing.TripWaypoint = function() {}; + +/** + * The path distance between the previous waypoint (or the vehicle's current + * location, if this waypoint is the first in the list of waypoints) to this + * waypoint in meters. + * @type {?number} + */ +google.maps.journeySharing.TripWaypoint.prototype.distanceMeters; + +/** + * Travel time between the previous waypoint (or the vehicle's current + * location, if this waypoint is the first in the list of waypoints) to this + * waypoint in milliseconds. + * @type {?number} + */ +google.maps.journeySharing.TripWaypoint.prototype.durationMillis; + +/** + * The location of the waypoint. + * @type {?google.maps.LatLng} + */ +google.maps.journeySharing.TripWaypoint.prototype.location; + +/** + * The path from the previous stop (or the vehicle's current location, if + * this stop is the first in the list of stops) to this stop. + * @type {?Array} + */ +google.maps.journeySharing.TripWaypoint.prototype.path; + +/** + * The list of traffic speeds along the path from the previous waypoint (or + * vehicle location) to the current waypoint. Each interval in the list + * describes the traffic on a contiguous segment on the path; the interval + * defines the starting and ending points of the segment via their indices. See + * the definition of {@link google.maps.journeySharing.SpeedReadingInterval} for + * more details. + * @type {?Array} + */ +google.maps.journeySharing.TripWaypoint.prototype.speedReadingIntervals; + +/** + * The trip associated with this waypoint. + * @type {?string} + */ +google.maps.journeySharing.TripWaypoint.prototype.tripId; + +/** + * The role this waypoint plays in this trip, such as pickup or dropoff. + * @type {?google.maps.journeySharing.WaypointType} + */ +google.maps.journeySharing.TripWaypoint.prototype.waypointType; + +/** + * Parameters specific to marker customization functions that apply options to + * markers representing trip waypoint locations. Used by {@link + * google.maps.journeySharing.FleetEngineTripLocationProviderOptions.waypointMarkerCustomization}. + * @extends {google.maps.journeySharing.TripMarkerCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.TripWaypointMarkerCustomizationFunctionParams = + function() {}; + +/** + * The 0-based waypoint index associated with this marker. Use this index + * on {@link google.maps.journeySharing.Trip.remainingWaypoints} to retrieve + * information about the waypoint. + * @type {number} + */ +google.maps.journeySharing.TripWaypointMarkerCustomizationFunctionParams + .prototype.waypointIndex; + +/** + * The details for a vehicle returned by Fleet Engine. + * @record + */ +google.maps.journeySharing.Vehicle = function() {}; + +/** + * Custom vehicle attributes. + * @type {!Object} + */ +google.maps.journeySharing.Vehicle.prototype.attributes; + +/** + * The waypoint where current route segment ends. + * @type {?google.maps.journeySharing.TripWaypoint} + */ +google.maps.journeySharing.Vehicle.prototype.currentRouteSegmentEndPoint; + +/** + * Time when the current route segment was set. + * @type {?Date} + */ +google.maps.journeySharing.Vehicle.prototype.currentRouteSegmentVersion; + +/** + * List of trip IDs for trips currently assigned to this vehicle. + * @type {?Array} + */ +google.maps.journeySharing.Vehicle.prototype.currentTrips; + +/** + * The ETA to the first entry in the waypoints field. + * @type {?Date} + */ +google.maps.journeySharing.Vehicle.prototype.etaToFirstWaypoint; + +/** + * The last reported location of the vehicle. + * @type {?google.maps.journeySharing.VehicleLocationUpdate} + */ +google.maps.journeySharing.Vehicle.prototype.latestLocation; + +/** + * The total numbers of riders this vehicle can carry. The driver is not + * considered in this value. + * @type {?number} + */ +google.maps.journeySharing.Vehicle.prototype.maximumCapacity; + +/** + * In the format "providers/{provider_id}/vehicles/{vehicle_id}". The + * vehicle_id must be a unique identifier. + * @type {string} + */ +google.maps.journeySharing.Vehicle.prototype.name; + +/** + * The current navigation status of the vehicle. + * @type {!google.maps.journeySharing.VehicleNavigationStatus} + */ +google.maps.journeySharing.Vehicle.prototype.navigationStatus; + +/** + * The remaining driving distance in the current route segment, in meters. + * @type {number} + */ +google.maps.journeySharing.Vehicle.prototype.remainingDistanceMeters; + +/** + * Trip types supported by this vehicle. + * @type {?Array} + */ +google.maps.journeySharing.Vehicle.prototype.supportedTripTypes; + +/** + * The vehicle state. + * @type {!google.maps.journeySharing.VehicleState} + */ +google.maps.journeySharing.Vehicle.prototype.vehicleState; + +/** + * The type of this vehicle. + * @type {!google.maps.journeySharing.VehicleType} + */ +google.maps.journeySharing.Vehicle.prototype.vehicleType; + +/** + * The remaining waypoints assigned to this Vehicle. + * @type {?Array} + */ +google.maps.journeySharing.Vehicle.prototype.waypoints; + +/** + * Last time the waypoints field was updated. + * @type {?Date} + */ +google.maps.journeySharing.Vehicle.prototype.waypointsVersion; + +/** + * VehicleJourneySegment type + * @record + */ +google.maps.journeySharing.VehicleJourneySegment = function() {}; + +/** + * The travel distance from the previous stop to this stop, in meters. + * @type {?number} + */ +google.maps.journeySharing.VehicleJourneySegment.prototype + .drivingDistanceMeters; + +/** + * The travel time from the previous stop this stop, in milliseconds. + * @type {?number} + */ +google.maps.journeySharing.VehicleJourneySegment.prototype + .drivingDurationMillis; + +/** + * The path from the previous stop (or the vehicle's current location, if + * this stop is the first in the list of stops) to this stop. + * @type {?Array} + */ +google.maps.journeySharing.VehicleJourneySegment.prototype.path; + +/** + * Information about the stop. + * @type {?google.maps.journeySharing.DeliveryVehicleStop} + */ +google.maps.journeySharing.VehicleJourneySegment.prototype.stop; + +/** + * VehicleLocationUpdate type + * @record + */ +google.maps.journeySharing.VehicleLocationUpdate = function() {}; + +/** + * The heading of the update. 0 corresponds to north, 180 to south. + * @type {?number} + */ +google.maps.journeySharing.VehicleLocationUpdate.prototype.heading; + +/** + * The location of the update. + * @type {google.maps.LatLngLiteral|google.maps.LatLng|null} + */ +google.maps.journeySharing.VehicleLocationUpdate.prototype.location; + +/** + * The speed in kilometers per hour. + * @type {?number} + */ +google.maps.journeySharing.VehicleLocationUpdate.prototype + .speedKilometersPerHour; + +/** + * The time this update was received from the vehicle. + * @type {?Date} + */ +google.maps.journeySharing.VehicleLocationUpdate.prototype.time; + +/** + * Parameters specific to marker customization functions that apply options to + * vehicle markers. Used by {@link + * google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.vehicleMarkerCustomization} + * and {@link + * google.maps.journeySharing.FleetEngineFleetLocationProviderOptions.vehicleMarkerCustomization}. + * @extends {google.maps.journeySharing.MarkerCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.VehicleMarkerCustomizationFunctionParams = + function() {}; + +/** + * The vehicle represented by this marker. + * @type {!google.maps.journeySharing.Vehicle} + */ +google.maps.journeySharing.VehicleMarkerCustomizationFunctionParams.prototype + .vehicle; + +/** + * The current navigation status of a {@link + * google.maps.journeySharing.Vehicle}. + * + * Access by calling `const {VehicleNavigationStatus} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.journeySharing.VehicleNavigationStatus = { + /** + * The vehicle is within approximately 50m of the destination. + */ + ARRIVED_AT_DESTINATION: 'ARRIVED_AT_DESTINATION', + /** + * Turn-by-turn navigation is available and the Driver app navigation has + * entered GUIDED_NAV mode. + */ + ENROUTE_TO_DESTINATION: 'ENROUTE_TO_DESTINATION', + /** + * The Driver app's navigation is in FREE_NAV mode. + */ + NO_GUIDANCE: 'NO_GUIDANCE', + /** + * The vehicle has gone off the suggested route. + */ + OFF_ROUTE: 'OFF_ROUTE', + /** + * Unspecified navigation status. + */ + UNKNOWN_NAVIGATION_STATUS: 'UNKNOWN_NAVIGATION_STATUS', +}; + +/** + * Parameters specific to polyline customization functions for {@link + * google.maps.journeySharing.FleetEngineVehicleLocationProvider}. + * @extends {google.maps.journeySharing.PolylineCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams = + function() {}; + +/** + * The vehicle traversing through this polyline. + * @type {!google.maps.journeySharing.Vehicle} + */ +google.maps.journeySharing.VehiclePolylineCustomizationFunctionParams.prototype + .vehicle; + +/** + * The current state of a {@link google.maps.journeySharing.Vehicle}. + * + * Access by calling `const {VehicleState} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.journeySharing.VehicleState = { + /** + * The vehicle is not accepting new trips. + */ + OFFLINE: 'OFFLINE', + /** + * The vehicle is accepting new trips. + */ + ONLINE: 'ONLINE', + /** + * Unknown vehicle state. + */ + UNKNOWN_VEHICLE_STATE: 'UNKNOWN_VEHICLE_STATE', +}; + +/** + * The type of {@link google.maps.journeySharing.Vehicle}. + * + * Access by calling `const {VehicleType} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.journeySharing.VehicleType = { + /** + * An automobile. + */ + AUTO: 'AUTO', + /** + * Any vehicle that acts as a taxi (typically licensed or regulated). + */ + TAXI: 'TAXI', + /** + * A vehicle with a large storage capacity. + */ + TRUCK: 'TRUCK', + /** + * A motorcycle, moped, or other two-wheeled vehicle. + */ + TWO_WHEELER: 'TWO_WHEELER', + /** + * Unknown vehicle type. + */ + UNKNOWN: 'UNKNOWN', +}; + +/** + * VehicleWaypoint type. + * @record + */ +google.maps.journeySharing.VehicleWaypoint = function() {}; + +/** + * The path distance between the previous waypoint (or the vehicle's current + * location, if this waypoint is the first in the list of waypoints) to this + * waypoint in meters. + * @type {?number} + */ +google.maps.journeySharing.VehicleWaypoint.prototype.distanceMeters; + +/** + * Travel time between the previous waypoint (or the vehicle's current + * location, if this waypoint is the first in the list of waypoints) to this + * waypoint in milliseconds. + * @type {?number} + */ +google.maps.journeySharing.VehicleWaypoint.prototype.durationMillis; + +/** + * The location of the waypoint. + * @type {?google.maps.LatLngLiteral} + */ +google.maps.journeySharing.VehicleWaypoint.prototype.location; + +/** + * The path from the previous waypoint (or the vehicle's current location, + * if this waypoint is the first in the list of waypoints) to this waypoint. + * @type {?Array} + */ +google.maps.journeySharing.VehicleWaypoint.prototype.path; + +/** + * The list of traffic speeds along the path from the previous waypoint (or + * vehicle location) to the current waypoint. Each interval in the list + * describes the traffic on a contiguous segment on the path; the interval + * defines the starting and ending points of the segment via their indices. See + * the definition of {@link google.maps.journeySharing.SpeedReadingInterval} for + * more details. + * @type {?Array} + */ +google.maps.journeySharing.VehicleWaypoint.prototype.speedReadingIntervals; + +/** + * Parameters specific to marker customization functions that apply options to + * vehicle waypoint markers. Used by {@link + * google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.originMarkerCustomization}, {@link + * google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.destinationMarkerCustomization} + * and {@link + * google.maps.journeySharing.FleetEngineVehicleLocationProviderOptions.intermediateDestinationMarkerCustomization} + * @extends {google.maps.journeySharing.VehicleMarkerCustomizationFunctionParams} + * @record + */ +google.maps.journeySharing.VehicleWaypointMarkerCustomizationFunctionParams = + function() {}; + +/** + * The 0-based waypoint index associated with this marker. Use this index + * on {@link google.maps.journeySharing.Vehicle.waypoints} to retrieve + * information about the waypoint. + * @type {number} + */ +google.maps.journeySharing.VehicleWaypointMarkerCustomizationFunctionParams + .prototype.waypointIndex; + +/** + * Waypoint types supported by {@link google.maps.journeySharing.Vehicle}. + * + * Access by calling `const {WaypointType} = await + * google.maps.importLibrary("journeySharing")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.journeySharing.WaypointType = { + /** + * Waypoints for dropping off riders. + */ + DROP_OFF_WAYPOINT_TYPE: 'DROP_OFF_WAYPOINT_TYPE', + /** + * Waypoints for intermediate destinations in a multi-destination trip. + */ + INTERMEDIATE_DESTINATION_WAYPOINT_TYPE: + 'INTERMEDIATE_DESTINATION_WAYPOINT_TYPE', + /** + * Waypoints for picking up riders. + */ + PICKUP_WAYPOINT_TYPE: 'PICKUP_WAYPOINT_TYPE', + /** + * Unknown waypoint type. + */ + UNKNOWN_WAYPOINT_TYPE: 'UNKNOWN_WAYPOINT_TYPE', +}; + +/** + * @const + */ +google.maps.localContext = {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Shows a Local Context experience with a {@link google.maps.Map}. + * + * Access by calling `const {LocalContextMapView} = await + * google.maps.importLibrary("localContext")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.localContext.LocalContextMapViewOptions} options + * @implements {google.maps.localContext.LocalContextMapViewOptions} + * @constructor + * @deprecated Local Context is deprecated, and no longer recommended for new + * websites. The feature will continue to work, and 12 months notice will be + * given before support is discontinued. If you are interested in building a + * Local Context-like experience yourself, we suggest that you check out the + * "Neighborhood Discovery" solution in Quick + * Builder or use the Places + * Library, Maps JavaScript API. Code + * samples and codelabs + * for the Places Library can help you. + */ +google.maps.localContext.LocalContextMapView = function(options) {}; + +/** + * See {@link + * google.maps.localContext.LocalContextMapViewOptions.directionsOptions}. + * @type {google.maps.localContext.MapDirectionsOptions|!google.maps.localContext.MapDirectionsOptionsLiteral|null|undefined} + */ +google.maps.localContext.LocalContextMapView.prototype.directionsOptions; + +/** + * This Field is read-only. The DOM Element backing the view. + * @type {!HTMLElement|!SVGElement|null|undefined} + */ +google.maps.localContext.LocalContextMapView.prototype.element; + +/** + * Is set to true before {@link + * google.maps.localContext.LocalContextMapView} begins changing the bounds of + * the inner {@link google.maps.Map}, and set to false after {@link + * google.maps.localContext.LocalContextMapView} finishes changing the bounds of + * the inner {@link google.maps.Map}. (Not set when layout mode changes happen + * due to responsive resizing.) + * @type {boolean} + */ +google.maps.localContext.LocalContextMapView.prototype.isTransitioningMapBounds; + +/** + * See {@link google.maps.localContext.LocalContextMapViewOptions.locationBias}. + * Changing this property on the LocalContextMapView may trigger a + * new search. + * @type {google.maps.places.LocationBias|null|undefined} + */ +google.maps.localContext.LocalContextMapView.prototype.locationBias; + +/** + * See {@link + * google.maps.localContext.LocalContextMapViewOptions.locationRestriction}. + * Changing this property on the LocalContextMapView may trigger a + * new search. + * @type {google.maps.places.LocationRestriction|null|undefined} + */ +google.maps.localContext.LocalContextMapView.prototype.locationRestriction; + +/** + * See {@link + * google.maps.localContext.LocalContextMapViewOptions.maxPlaceCount}. Changing + * this property on the LocalContextMapView may trigger a new + * search. + * @type {number} + */ +google.maps.localContext.LocalContextMapView.prototype.maxPlaceCount; + +/** + * See {@link + * google.maps.localContext.LocalContextMapViewOptions.placeTypePreferences}. + * Changing this property on the LocalContextMapView may trigger a + * new search. Iterable<string|PlaceTypePreference> is also + * accepted. + * @type {!Array} + */ +google.maps.localContext.LocalContextMapView.prototype.placeTypePreferences; + +/** + * Adds the given listener function to the given event name. + * @param {string} eventName + * @param {!Function} handler + * @return {!google.maps.MapsEventListener} + */ +google.maps.localContext.LocalContextMapView.prototype.addListener = function( + eventName, handler) {}; + +/** + * Hides the place details. + * @return {undefined} + */ +google.maps.localContext.LocalContextMapView.prototype.hidePlaceDetailsView = + function() {}; + +/** + * Searches for places to show the user based on the current + * maxPlaceCount, placeTypePreferences, + * locationRestriction, and locationBias. + * @return {undefined} + */ +google.maps.localContext.LocalContextMapView.prototype.search = function() {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Options for constructing a {@link + * google.maps.localContext.LocalContextMapView}, or accessing an + * existing {@link google.maps.localContext.LocalContextMapView}. + * @record + */ +google.maps.localContext.LocalContextMapViewOptions = function() {}; + +/** + * Options for customizing directions. If not set, directions and distance will + * be disabled. + * @type {google.maps.localContext.MapDirectionsOptions|!google.maps.localContext.MapDirectionsOptionsLiteral|null|undefined} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype.directionsOptions; + +/** + * This Field is read-only. The DOM Element backing the view. + * @type {!HTMLElement|!SVGElement|null|undefined} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype.element; + +/** + * A soft boundary or hint to use when searching for places. + * @default null + * @type {google.maps.places.LocationBias|null|undefined} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype.locationBias; + +/** + * Bounds to constrain search results. If not specified, results will be + * constrained to the map viewport. + * @type {google.maps.places.LocationRestriction|null|undefined} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype + .locationRestriction; + +/** + * An already instantiated {@link google.maps.Map} instance. If passed in, the + * map will be moved into the LocalContextMapView's DOM, and will + * not be re-styled. The element associated with the Map may + * also have styles and classes applied to it by the + * LocalContextMapView. + * @type {google.maps.Map|null|undefined} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype.map; + +/** + * The maximum number of places to show. When this parameter is 0, the Local + * Context Library does not load places. [0,24] + * @type {number} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype.maxPlaceCount; + +/** + * Configure the place marker icon based on the icon state. Invoked whenever the + * input to the callback changes. Pass a function to dynamically override the + * default setup when the LocalContextMapView draws the place marker. Errors and + * invalid configurations may be determined asynchronously, and will be ignored + * (defaults will be used, and errors will be logged to the console). + * @type {(function({isSelected:boolean, isHighlighted:boolean}): + * (google.maps.localContext.PinOptions|null|undefined))|google.maps.localContext.PinOptions|null|undefined} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype.pinOptionsSetup; + +/** + * Overrides the setup of the place chooser view. Pass a function to dynamically + * override the default setup when the LocalContextMapView might change its + * layout due to resizing. Errors and invalid configurations may be determined + * asynchronously, and will be ignored (defaults will be used instead, and + * errors will be logged to the console). Errors detected at construction will + * cause errors to be thrown synchronously. + * @type {(function({defaultLayoutMode:!google.maps.localContext.PlaceChooserLayoutMode, + * defaultPosition:?google.maps.localContext.PlaceChooserPosition}): + * (google.maps.localContext.PlaceChooserViewSetupOptions|null|undefined))|google.maps.localContext.PlaceChooserViewSetupOptions|null|undefined} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype + .placeChooserViewSetup; + +/** + * Overrides the setup of the place details view. Pass a function to dynamically + * override the default setup when the LocalContextMapView might change its + * layout due to resizing. Errors and invalid configurations may be determined + * asynchronously, and will be ignored (defaults will be used, and errors will + * be logged to the console). Errors detected at construction will cause errors + * to be thrown synchronously. + * @type {(function({defaultLayoutMode:!google.maps.localContext.PlaceDetailsLayoutMode, + * defaultPosition:?google.maps.localContext.PlaceDetailsPosition}): + * (google.maps.localContext.PlaceDetailsViewSetupOptions|null|undefined))|google.maps.localContext.PlaceDetailsViewSetupOptions|null|undefined} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype + .placeDetailsViewSetup; + +/** + * The types of places to search for (up to 10). The type + * Iterable<string|PlaceTypePreference> is also accepted, but + * is only supported in browsers which natively support JavaScript Symbols. + * @type {!Array} + */ +google.maps.localContext.LocalContextMapViewOptions.prototype + .placeTypePreferences; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Provides settings for directions with a {@link + * google.maps.localContext.LocalContextMapView}. + * + * Access by calling `const {MapDirectionsOptions} = await + * google.maps.importLibrary("localContext")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @implements {google.maps.localContext.MapDirectionsOptionsLiteral} + * @constructor + */ +google.maps.localContext.MapDirectionsOptions = function() {}; + +/** + * Adds the given listener function to the given event name. + * @param {string} eventName + * @param {!Function} handler + * @return {!google.maps.MapsEventListener} + */ +google.maps.localContext.MapDirectionsOptions.prototype.addListener = function( + eventName, handler) {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Object literals are accepted in place of {@link + * google.maps.localContext.MapDirectionsOptions} objects, as a convenience, in + * many places. These are converted to {@link + * google.maps.localContext.MapDirectionsOptions} objects when the Maps API + * encounters them. + * @record + */ +google.maps.localContext.MapDirectionsOptionsLiteral = function() {}; + +/** + * Origin for directions and distance. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral} + */ +google.maps.localContext.MapDirectionsOptionsLiteral.prototype.origin; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Options for customizing a pin marker. + * @record + */ +google.maps.localContext.PinOptions = function() {}; + +/** + * The color of the icon's shape, can be any valid CSS color. + * @type {string|null|undefined} + */ +google.maps.localContext.PinOptions.prototype.background; + +/** + * The color of the icon's glyph, can be any valid CSS color. + * @type {string|null|undefined} + */ +google.maps.localContext.PinOptions.prototype.glyphColor; + +/** + * The scale of the icon. The value is absolute, not relative to the default + * sizes in each state. + * @type {number|null|undefined} + */ +google.maps.localContext.PinOptions.prototype.scale; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Layout modes for the place chooser. + * + * Access by calling `const {PlaceChooserLayoutMode} = await + * google.maps.importLibrary("localContext")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.localContext.PlaceChooserLayoutMode = { + /** + * Place chooser is hidden. + */ + HIDDEN: 'HIDDEN', + /** + * Place chooser is shown as a sheet. + */ + SHEET: 'SHEET', +}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Display positions for the place chooser. + * + * Access by calling `const {PlaceChooserPosition} = await + * google.maps.importLibrary("localContext")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.localContext.PlaceChooserPosition = { + /** + * Place chooser is displayed on a line below the map extending to the end of + * the container. + */ + BLOCK_END: 'BLOCK_END', + /** + * Place chooser is displayed inline with the map at the end of the line. (In + * a left-to-right language this means that the place chooser is to the right + * of the map.) + */ + INLINE_END: 'INLINE_END', + /** + * Place chooser is displayed inline with the map at the start of the line. + * (In a left-to-right language this means that the place chooser is to the + * left of the map.) + */ + INLINE_START: 'INLINE_START', +}; + +/** + * Setup options for the place chooser. Read more about setting + * layout and visibility. + * @record + */ +google.maps.localContext.PlaceChooserViewSetupOptions = function() {}; + +/** + * @type {google.maps.localContext.PlaceChooserLayoutMode|null|undefined} + */ +google.maps.localContext.PlaceChooserViewSetupOptions.prototype.layoutMode; + +/** + * Ignored when layoutMode:HIDDEN. If not passed, a position will + * be determined automatically based on the layoutMode. + * @type {google.maps.localContext.PlaceChooserPosition|null|undefined} + */ +google.maps.localContext.PlaceChooserViewSetupOptions.prototype.position; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Layout modes for the place details. + * + * Access by calling `const {PlaceDetailsLayoutMode} = await + * google.maps.importLibrary("localContext")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.localContext.PlaceDetailsLayoutMode = { + /** + * Place details is displayed in an {@link google.maps.InfoWindow}. + */ + INFO_WINDOW: 'INFO_WINDOW', + /** + * Place details is displayed in a sheet. + */ + SHEET: 'SHEET', +}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Display positions for the place details. + * + * Access by calling `const {PlaceDetailsPosition} = await + * google.maps.importLibrary("localContext")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.localContext.PlaceDetailsPosition = { + /** + * Place details is displayed inline with the map at the end of the line. (In + * a left-to-right language this means that the place details is to the right + * of the map.) + */ + INLINE_END: 'INLINE_END', + /** + * Place details is displayed inline with the map at the start of the line. + * (In a left-to-right language this means that the place details is to the + * left of the map.) + */ + INLINE_START: 'INLINE_START', +}; + +/** + * Setup options for the place details. Read more about setting + * layout and visibility. + * @record + */ +google.maps.localContext.PlaceDetailsViewSetupOptions = function() {}; + +/** + * @type {boolean|undefined} + */ +google.maps.localContext.PlaceDetailsViewSetupOptions.prototype.hidesOnMapClick; + +/** + * @type {google.maps.localContext.PlaceDetailsLayoutMode|null|undefined} + */ +google.maps.localContext.PlaceDetailsViewSetupOptions.prototype.layoutMode; + +/** + * Ignored when layoutMode:INFO_WINDOW. If not passed, a position + * will be determined automatically based on the layoutMode. + * @type {google.maps.localContext.PlaceDetailsPosition|null|undefined} + */ +google.maps.localContext.PlaceDetailsViewSetupOptions.prototype.position; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * @typedef {{type:string, weight:(number|undefined)}} + */ +google.maps.localContext.PlaceTypePreference; + +/** + * @const + */ +google.maps.maps3d = {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Specifies how altitude components in the coordinates are interpreted. + * + * Access by calling `const {AltitudeMode} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.maps3d.AltitudeMode = { + /** + * Allows to express objects relative to the average mean sea level. That also + * means that if the terrain level of detail changes underneath the object, + * its absolute position will remain the same. + */ + ABSOLUTE: 'ABSOLUTE', + /** + * Allows to express objects placed on the ground. They will remain at ground + * level following the terrain regardless of what altitude is provided. If the + * object is positioned over a major body of water, it will be placed at sea + * level. + */ + CLAMP_TO_GROUND: 'CLAMP_TO_GROUND', + /** + * Allows to express objects relative to the ground surface. If the terrain + * level of detail changes, the position of the object will remain constant + * relative to the ground. When over water, the altitude will be interpreted + * as a value in meters above sea level. + */ + RELATIVE_TO_GROUND: 'RELATIVE_TO_GROUND', + /** + * Allows to express objects relative to the highest of ground+building+water + * surface. When over water, this will be water surface; when over terrain, + * this will be the building surface (if present) or ground surface (if no + * buildings). + */ + RELATIVE_TO_MESH: 'RELATIVE_TO_MESH', +}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * CameraOptions object used to define the properties that can be set on a + * camera object. The camera object can be anything that has a camera position, + * e.g. a current map state, or a future requested animation state. + * @record + */ +google.maps.maps3d.CameraOptions = function() {}; + +/** + * See {@link google.maps.maps3d.Map3DElement.center}. + * @type {!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.center; + +/** + * See {@link google.maps.maps3d.Map3DElement.heading}. + * @type {number|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.heading; + +/** + * See {@link google.maps.maps3d.Map3DElement.range}. + * @type {number|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.range; + +/** + * See {@link google.maps.maps3d.Map3DElement.roll}. + * @type {number|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.roll; + +/** + * See {@link google.maps.maps3d.Map3DElement.tilt}. + * @type {number|null|undefined} + */ +google.maps.maps3d.CameraOptions.prototype.tilt; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Customization options for the FlyCameraAround Animation. + * @record + */ +google.maps.maps3d.FlyAroundAnimationOptions = function() {}; + +/** + * The central point at which the camera should look at during the orbit + * animation. Note that the map heading will change as the camera orbits around + * this center point. + * @type {!google.maps.maps3d.CameraOptions} + */ +google.maps.maps3d.FlyAroundAnimationOptions.prototype.camera; + +/** + * The duration of the animation in milliseconds. This is the total duration of + * the animation, not the duration of a single rotation. + * @type {number|undefined} + */ +google.maps.maps3d.FlyAroundAnimationOptions.prototype.durationMillis; + +/** + * The number of rounds to rotate around the center in the given duration. This + * controls the overall speed of rotation. Passing a negative number to rounds + * will cause the camera to rotate in a counter-clockwise direction instead of + * the default clockwise direction. + * @type {number|undefined} + */ +google.maps.maps3d.FlyAroundAnimationOptions.prototype.rounds; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Customization options for the FlyCameraTo Animation. + * @record + */ +google.maps.maps3d.FlyToAnimationOptions = function() {}; + +/** + * The duration of the animation in milliseconds. A duration of 0 will teleport + * the camera straight to the end position. + * @type {number|undefined} + */ +google.maps.maps3d.FlyToAnimationOptions.prototype.durationMillis; + +/** + * The location at which the camera should point at the end of the animation. + * @type {!google.maps.maps3d.CameraOptions} + */ +google.maps.maps3d.FlyToAnimationOptions.prototype.endCamera; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * This event is created from clicking a Map3DElement. + * + * Access by calling `const {LocationClickEvent} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {Event} + * @constructor + */ +google.maps.maps3d.LocationClickEvent = function() {}; + +/** + * The latitude/longitude/altitude that was below the cursor when the event + * occurred. Please note, that at coarser levels, less accurate data will be + * returned. Also, sea floor elevation may be returned for the altitude value + * when clicking at the water surface from higher camera positions. This event + * bubbles up through the DOM tree. + * @type {!google.maps.LatLngAltitude|null} + */ +google.maps.maps3d.LocationClickEvent.prototype.position; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Map3DElement is an HTML interface for the 3D Map view. + * + * Access by calling `const {Map3DElement} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.maps3d.Map3DElementOptions=} options + * @implements {google.maps.maps3d.Map3DElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.maps3d.Map3DElement = function(options) {}; + +/** + * When set, restricts the position of the camera within the specified lat/lng + * bounds. Note that objects outside the bounds are still rendered. Bounds can + * restrict both longitude and latitude, or can restrict either latitude or + * longitude only. For latitude-only bounds use west and east longitudes of + * -180 and 180, respectively. For longitude-only + * bounds use north and south latitudes of 90 and -90, + * respectively. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.bounds; + +/** + * The center of the map given as a LatLngAltitude, where altitude is in meters + * above ground level. Note that this is not necessarily where the camera is + * located, as the range field affects the camera's distance + * from the map center. If not set, defaults to {lat: 0, lng: 0, altitude: + * 63170000}. 63170000 meters is a maximum allowed altitude (Earth radius + * multiplied by 10). + * @type {!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.center; + +/** + * When true, default map labels aren't rendered. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.defaultLabelsDisabled; + +/** + * When true, all default UI buttons are disabled. Does not disable + * the keyboard and gesture controls. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.defaultUIDisabled; + +/** + * The compass heading of the map, in degrees, where due north is zero. When + * there is no tilt, any roll will be interpreted as heading. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.heading; + +/** + * The maximum altitude above the ground which will be displayed on the map. A + * valid value is between 0 and 63170000 meters (Earth + * radius multiplied by 10). + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.maxAltitude; + +/** + * The maximum angle of heading (rotation) of the map. A valid value is between + * 0 and 360 degrees. minHeading and + * maxHeading represent an interval of <= 360 + * degrees in which heading gestures will be allowed. minHeading = + * 180 and maxHeading = 90 will allow heading in [0, + * 90] and heading in [180, 360]. minHeading = + * 90 and maxHeading = 180 will allow heading in [90, + * 180]. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.maxHeading; + +/** + * The maximum angle of incidence of the map. A valid value is between + * 0 and 90 degrees. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.maxTilt; + +/** + * The minimum altitude above the ground which will be displayed on the map. A + * valid value is between 0 and 63170000 meters (Earth + * radius multiplied by 10). + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.minAltitude; + +/** + * The minimum angle of heading (rotation) of the map. A valid value is between + * 0 and 360 degrees. minHeading and + * maxHeading represent an interval of <= 360 + * degrees in which heading gestures will be allowed. minHeading = + * 180 and maxHeading = 90 will allow heading in [0, + * 90] and heading in [180, 360]. minHeading = + * 90 and maxHeading = 180 will allow heading in [90, + * 180]. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.minHeading; + +/** + * The minimum angle of incidence of the map. A valid value is between + * 0 and 90 degrees. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.minTilt; + +/** + * The distance from camera to the center of the map, in meters. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.range; + +/** + * The roll of the camera around the view vector in degrees. To resolve + * ambiguities, when there is no tilt, any roll will be interpreted as heading. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.roll; + +/** + * The tilt of the camera's view vector in degrees. A view vector looking + * directly down at the earth would have a tilt of zero degrees. A view vector + * pointing away from the earth would have a tilt of 180 degrees. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElement.prototype.tilt; + + + +/** + * This method orbits the camera around a given location for a given duration, + * making the given number of rounds in that time.

By default, the + * camera orbits clockwise. If given a negative number for rounds, the camera + * will orbit in a counter-clockwise direction instead.

The method + * is asynchronous because animations can only start after the map has loaded a + * minimum amount. The method returns once the animation has been started.

If the number of rounds is zero, no spin will occur, and the + * animation will complete immediately after it starts. + * @param {!google.maps.maps3d.FlyAroundAnimationOptions} options + * @return {undefined} + */ +google.maps.maps3d.Map3DElement.prototype.flyCameraAround = function( + options) {}; + +/** + * This method moves the camera parabolically from the current location to a + * given end location over a given duration.

The method is + * asynchronous because animations can only start after the map has loaded a + * minimum amount. The method returns once the animation has been started. + * @param {!google.maps.maps3d.FlyToAnimationOptions} options + * @return {undefined} + */ +google.maps.maps3d.Map3DElement.prototype.flyCameraTo = function(options) {}; + + + +/** + * This method stops any fly animation that might happen to be running. The + * camera stays wherever it is mid-animation; it does not teleport to the end + * point.

The method is asynchronous because animations can only + * start or stop after the map has loaded a minimum amount. The method returns + * once the animation has stopped. + * @return {undefined} + */ +google.maps.maps3d.Map3DElement.prototype.stopCameraAnimation = function() {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Map3DElementOptions object used to define the properties that can be set on a + * Map3DElement. + * @record + */ +google.maps.maps3d.Map3DElementOptions = function() {}; + +/** + * See {@link google.maps.maps3d.Map3DElement.bounds}. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.bounds; + +/** + * See {@link google.maps.maps3d.Map3DElement.center}. + * @type {!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.center; + +/** + * See {@link google.maps.maps3d.Map3DElement.defaultLabelsDisabled}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.defaultLabelsDisabled; + +/** + * See {@link google.maps.maps3d.Map3DElement.defaultUIDisabled}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.defaultUIDisabled; + +/** + * See {@link google.maps.maps3d.Map3DElement.heading}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.heading; + +/** + * See {@link google.maps.maps3d.Map3DElement.maxAltitude}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.maxAltitude; + +/** + * See {@link google.maps.maps3d.Map3DElement.maxHeading}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.maxHeading; + +/** + * See {@link google.maps.maps3d.Map3DElement.maxTilt}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.maxTilt; + +/** + * See {@link google.maps.maps3d.Map3DElement.minAltitude}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.minAltitude; + +/** + * See {@link google.maps.maps3d.Map3DElement.minHeading}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.minHeading; + +/** + * See {@link google.maps.maps3d.Map3DElement.minTilt}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.minTilt; + +/** + * See {@link google.maps.maps3d.Map3DElement.range}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.range; + +/** + * See {@link google.maps.maps3d.Map3DElement.roll}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.roll; + +/** + * See {@link google.maps.maps3d.Map3DElement.tilt}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Map3DElementOptions.prototype.tilt; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Shows a position on a 3D map. Note that the position must be set + * for the Marker3DElement to display. + * + * Access by calling `const {Marker3DElement} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.maps3d.Marker3DElementOptions=} options + * @implements {google.maps.maps3d.Marker3DElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.maps3d.Marker3DElement = function(options) {}; + +/** + * Specifies how the altitude component of the position is interpreted. + * @default {@link google.maps.maps3d.AltitudeMode.CLAMP_TO_GROUND} + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.altitudeMode; + +/** + * An enumeration specifying how a Marker3DElement should behave when it + * collides with another Marker3DElement or with the basemap labels. + * @default {@link google.maps.CollisionBehavior.REQUIRED} + * @type {!google.maps.CollisionBehavior|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.collisionBehavior; + +/** + * Specifies whether this marker should be drawn or not when it's occluded. + * The marker can be occluded by map geometry (e.g. buildings). + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.drawsWhenOccluded; + +/** + * Specifies whether to connect the marker to the ground. To extrude a marker, + * the altitudeMode must be either RELATIVE_TO_GROUND + * or ABSOLUTE. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.extruded; + +/** + * Text to be displayed by this marker. + * @type {string|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.label; + +/** + * The location of the tip of the marker. Altitude is ignored in certain modes + * and thus optional. + * @type {!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.position; + +/** + * Specifies whether this marker should preserve its size or not regardless of + * distance from camera. By default, the marker is scaled based on distance from + * camera/tilt. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.sizePreserved; + +/** + * The zIndex compared to other markers. + * @type {number|null|undefined} + */ +google.maps.maps3d.Marker3DElement.prototype.zIndex; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Marker3DElementOptions object used to define the properties that can be set + * on a Marker3DElement. + * @record + */ +google.maps.maps3d.Marker3DElementOptions = function() {}; + +/** + * See {@link google.maps.maps3d.Marker3DElement.altitudeMode}. + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.altitudeMode; + +/** + * See {@link google.maps.maps3d.Marker3DElement.collisionBehavior}. + * @type {!google.maps.CollisionBehavior|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.collisionBehavior; + +/** + * See {@link google.maps.maps3d.Marker3DElement.drawsWhenOccluded}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.drawsWhenOccluded; + +/** + * See {@link google.maps.maps3d.Marker3DElement.extruded}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.extruded; + +/** + * See {@link google.maps.maps3d.Marker3DElement.label}. + * @type {string|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.label; + +/** + * See {@link google.maps.maps3d.Marker3DElement.position}. + * @type {!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.position; + +/** + * See {@link google.maps.maps3d.Marker3DElement.sizePreserved}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.sizePreserved; + +/** + * See {@link google.maps.maps3d.Marker3DElement.zIndex}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Marker3DElementOptions.prototype.zIndex; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Shows a position on a 3D map. Note that the position must be set + * for the Marker3DInteractiveElement to display. Unlike + * Marker3DElement, Marker3DInteractiveElement + * receives a gmp-click event. + * + * Access by calling `const {Marker3DInteractiveElement} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.maps3d.Marker3DInteractiveElementOptions=} options + * @implements {google.maps.maps3d.Marker3DInteractiveElementOptions} + * @extends {google.maps.maps3d.Marker3DElement} + * @constructor + */ +google.maps.maps3d.Marker3DInteractiveElement = function(options) {}; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Marker3DInteractiveElementOptions object used to define the properties that + * can be set on a Marker3DInteractiveElement. + * @extends {google.maps.maps3d.Marker3DElementOptions} + * @record + */ +google.maps.maps3d.Marker3DInteractiveElementOptions = function() {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * A 3D model which allows the rendering of gLTF models. Note that the + * position and the src must be set for the + * Model3DElement to display.

Core properties of the + * gLTF PBR should be supported. + * No extensions or extension properties are currently supported. + * + * Access by calling `const {Model3DElement} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.maps3d.Model3DElementOptions=} options + * @implements {google.maps.maps3d.Model3DElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.maps3d.Model3DElement = function(options) {}; + +/** + * Specifies how altitude in the position is interpreted. + * @default {@link google.maps.maps3d.AltitudeMode.CLAMP_TO_GROUND} + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.altitudeMode; + +/** + * Describes rotation of a 3D model's coordinate system to position the + * model on the 3D Map.

Rotations are applied to the model in the + * following order: roll, tilt and then heading. + * @type {!google.maps.Orientation3D|!google.maps.Orientation3DLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.orientation; + +/** + * Sets the Model3DElement's position. Altitude is ignored in + * certain modes and thus optional. + * @type {!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.position; + +/** + * Scales the model along the x, y, and z axes in the model's coordinate + * space. + * @default 1 + * @type {number|!google.maps.Vector3D|!google.maps.Vector3DLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.scale; + +/** + * Specifies the url of the 3D model. At this time, only models in the + * .glb format are supported.

Any relative HTTP urls + * will be resolved to their corresponding absolute ones.

Please + * note that If you're hosting your .glb model files on a + * different website or server than your main application, make sure to set up + * the correct CORS HTTP headers. This allows your application to securely + * access the model files from the other domain. + * @type {string|!URL|null|undefined} + */ +google.maps.maps3d.Model3DElement.prototype.src; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Model3DElementOptions object used to define the properties that can be set on + * a Model3DElement. + * @record + */ +google.maps.maps3d.Model3DElementOptions = function() {}; + +/** + * See {@link google.maps.maps3d.Model3DElement.altitudeMode}. + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.altitudeMode; + +/** + * See {@link google.maps.maps3d.Model3DElement.orientation}. + * @type {!google.maps.Orientation3D|!google.maps.Orientation3DLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.orientation; + +/** + * See {@link google.maps.maps3d.Model3DElement.position}. + * @type {!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.position; + +/** + * See {@link google.maps.maps3d.Model3DElement.scale}. + * @type {number|!google.maps.Vector3D|!google.maps.Vector3DLiteral|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.scale; + +/** + * See {@link google.maps.maps3d.Model3DElement.src}. + * @type {string|!URL|null|undefined} + */ +google.maps.maps3d.Model3DElementOptions.prototype.src; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * This event is created from clicking a Map3DElement. + * + * Access by calling `const {PlaceClickEvent} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {google.maps.maps3d.LocationClickEvent} + * @constructor + */ +google.maps.maps3d.PlaceClickEvent = function() {}; + +/** + * The place id of the map feature. + * @type {string} + */ +google.maps.maps3d.PlaceClickEvent.prototype.placeId; + +/** + * Fetches a Place for this place id. In the resulting + * Place object, the id property will be populated. Additional + * fields can be subsequently requested via Place.fetchFields() + * subject to normal Places API enablement and billing. The promise is rejected + * if there was an error fetching the Place. + * @return {!Promise} + */ +google.maps.maps3d.PlaceClickEvent.prototype.fetchPlace = function() {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * A 3D polygon (like a 3D polyline) defines a series of connected coordinates + * in an ordered sequence. Additionally, polygons form a closed loop and define + * a filled region. + * + * Access by calling `const {Polygon3DElement} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.maps3d.Polygon3DElementOptions=} options + * @implements {google.maps.maps3d.Polygon3DElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.maps3d.Polygon3DElement = function(options) {}; + +/** + * Specifies how altitude components in the coordinates are interpreted. + * @default {@link google.maps.maps3d.AltitudeMode.ABSOLUTE} + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.altitudeMode; + +/** + * Specifies whether parts of the polygon which could be occluded are drawn or + * not. Polygons can be occluded by map geometry (e.g. buildings). + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.drawsOccludedSegments; + +/** + * Specifies whether to connect the polygon to the ground. To extrude a polygon, + * the altitudeMode must be either RELATIVE_TO_GROUND + * or ABSOLUTE. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.extruded; + +/** + * The fill color. All CSS3 colors are supported. + * @type {string|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.fillColor; + +/** + * When true, edges of the polygon are interpreted as geodesic and + * will follow the curvature of the Earth. When false, edges of the + * polygon are rendered as straight lines in screen space. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.geodesic; + +/** + * The ordered sequence of coordinates that designates a closed loop. Unlike + * polylines, a polygon may consist of one or more paths, which create multiple + * cut-outs inside the polygon. + * @type {!Iterable>|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.innerCoordinates; + +/** + * The ordered sequence of coordinates that designates a closed loop. Altitude + * is ignored in certain modes and thus optional. + * @type {!Iterable|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.outerCoordinates; + +/** + * The stroke color. All CSS3 colors are supported. + * @type {string|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.strokeColor; + +/** + * The stroke width in pixels. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.strokeWidth; + +/** + * The zIndex compared to other polys. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polygon3DElement.prototype.zIndex; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Polygon3DElementOptions object used to define the properties that can be set + * on a Polygon3DElement. + * @record + */ +google.maps.maps3d.Polygon3DElementOptions = function() {}; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.altitudeMode}. + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.altitudeMode; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.drawsOccludedSegments}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.drawsOccludedSegments; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.extruded}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.extruded; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.fillColor}. + * @type {string|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.fillColor; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.geodesic}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.geodesic; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.innerCoordinates}. + * @type {!Iterable|!Iterable>|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.innerCoordinates; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.outerCoordinates}. + * @type {!Iterable|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.outerCoordinates; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.strokeColor}. + * @type {string|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.strokeColor; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.strokeWidth}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.strokeWidth; + +/** + * See {@link google.maps.maps3d.Polygon3DElement.zIndex}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polygon3DElementOptions.prototype.zIndex; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * A 3D polyline is a linear overlay of connected line segments on a 3D map. + * + * Access by calling `const {Polyline3DElement} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.maps3d.Polyline3DElementOptions=} options + * @implements {google.maps.maps3d.Polyline3DElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.maps3d.Polyline3DElement = function(options) {}; + +/** + * Specifies how altitude components in the coordinates are interpreted. + * @default {@link google.maps.maps3d.AltitudeMode.ABSOLUTE} + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.altitudeMode; + +/** + * The ordered sequence of coordinates of the Polyline. Altitude is ignored in + * certain modes and thus optional. + * @type {!Iterable|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.coordinates; + +/** + * Specifies whether parts of the polyline which could be occluded are drawn or + * not. Polylines can be occluded by map geometry (e.g. buildings). + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.drawsOccludedSegments; + +/** + * Specifies whether to connect the polyline to the ground. To extrude a + * polyline, the altitudeMode must be either + * RELATIVE_TO_GROUND or ABSOLUTE. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.extruded; + +/** + * When true, edges of the polyline are interpreted as geodesic and + * will follow the curvature of the Earth. When false, edges of the + * polyline are rendered as straight lines in screen space. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.geodesic; + +/** + * The outer color. All CSS3 colors are supported. + * @type {string|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.outerColor; + +/** + * The outer width is between 0.0 and 1.0. This is a + * percentage of the strokeWidth. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.outerWidth; + +/** + * The stroke color. All CSS3 colors are supported. + * @type {string|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.strokeColor; + +/** + * The stroke width in pixels. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.strokeWidth; + +/** + * The zIndex compared to other polys. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polyline3DElement.prototype.zIndex; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Polyline3DElementOptions object used to define the properties that can be set + * on a Polyline3DElement. + * @record + */ +google.maps.maps3d.Polyline3DElementOptions = function() {}; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.altitudeMode}. + * @type {!google.maps.maps3d.AltitudeMode|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.altitudeMode; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.coordinates}. + * @type {!Iterable|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.coordinates; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.drawsOccludedSegments}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.drawsOccludedSegments; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.extruded}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.extruded; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.geodesic}. + * @type {boolean|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.geodesic; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.outerColor}. + * @type {string|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.outerColor; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.outerWidth}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.outerWidth; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.strokeColor}. + * @type {string|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.strokeColor; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.strokeWidth}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.strokeWidth; + +/** + * See {@link google.maps.maps3d.Polyline3DElement.zIndex}. + * @type {number|null|undefined} + */ +google.maps.maps3d.Polyline3DElementOptions.prototype.zIndex; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * This event is created from monitoring a steady state of + * Map3DElement. This event bubbles up through the DOM tree. + * + * Access by calling `const {SteadyChangeEvent} = await + * google.maps.importLibrary("maps3d")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {Event} + * @constructor + */ +google.maps.maps3d.SteadyChangeEvent = function() {}; + +/** + * Indicates whether Map3DElement is steady (i.e. all rendering for the current + * scene has completed) or not. + * @type {boolean} + */ +google.maps.maps3d.SteadyChangeEvent.prototype.isSteady; + +/** + * @const + */ +google.maps.marker = {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * This event is created from clicking an Advanced Marker. Access the + * marker's position with event.target.position. + * + * Access by calling `const {AdvancedMarkerClickEvent} = await + * google.maps.importLibrary("marker")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {Event} + * @constructor + */ +google.maps.marker.AdvancedMarkerClickEvent = function() {}; + +/** + * Shows a position on a map. Note that the position must be set + * for the AdvancedMarkerElement to display.

+ * Note: Usage as a Web Component (e.g. using the custom + * <gmp-advanced-marker> HTML element, is only available in + * the v=beta channel). + * + * Access by calling `const {AdvancedMarkerElement} = await + * google.maps.importLibrary("marker")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.marker.AdvancedMarkerElementOptions=} options + * @implements {google.maps.marker.AdvancedMarkerElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.marker.AdvancedMarkerElement = function(options) {}; + +/** + * See {@link + * google.maps.marker.AdvancedMarkerElementOptions.collisionBehavior}. + * @type {!google.maps.CollisionBehavior|null|undefined} + */ +google.maps.marker.AdvancedMarkerElement.prototype.collisionBehavior; + +/** + * See {@link google.maps.marker.AdvancedMarkerElementOptions.content}. + * @type {!Node|null|undefined} + */ +google.maps.marker.AdvancedMarkerElement.prototype.content; + +/** + * This field is read-only. The DOM Element backing the view. + * @type {!HTMLElement} + */ +google.maps.marker.AdvancedMarkerElement.prototype.element; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * See {@link google.maps.marker.AdvancedMarkerElementOptions.gmpClickable}. + * @type {boolean|null|undefined} + */ +google.maps.marker.AdvancedMarkerElement.prototype.gmpClickable; + +/** + * See {@link google.maps.marker.AdvancedMarkerElementOptions.gmpDraggable}. + * @type {boolean|null|undefined} + */ +google.maps.marker.AdvancedMarkerElement.prototype.gmpDraggable; + +/** + * See {@link google.maps.marker.AdvancedMarkerElementOptions.map}. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.marker.AdvancedMarkerElement.prototype.map; + +/** + * See {@link google.maps.marker.AdvancedMarkerElementOptions.position}. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.marker.AdvancedMarkerElement.prototype.position; + +/** + * See {@link google.maps.marker.AdvancedMarkerElementOptions.title}. + * @type {string} + */ +google.maps.marker.AdvancedMarkerElement.prototype.title; + +/** + * See {@link google.maps.marker.AdvancedMarkerElementOptions.zIndex}. + * @type {number|null|undefined} + */ +google.maps.marker.AdvancedMarkerElement.prototype.zIndex; + + + +/** + * Adds the given listener function to the given event name in the Maps Eventing + * system. + * @param {string} eventName Observed event. + * @param {!Function} handler Function to handle events. + * @return {!google.maps.MapsEventListener} Resulting event listener. + */ +google.maps.marker.AdvancedMarkerElement.prototype.addListener = function( + eventName, handler) {}; + + + +/** + * Options for constructing an {@link google.maps.marker.AdvancedMarkerElement}. + * @record + */ +google.maps.marker.AdvancedMarkerElementOptions = function() {}; + +/** + * An enumeration specifying how an AdvancedMarkerElement should + * behave when it collides with another AdvancedMarkerElement or + * with the basemap labels on a vector map.

Note: + * AdvancedMarkerElement to AdvancedMarkerElement + * collision works on both raster and vector maps, however, + * AdvancedMarkerElement to base map's label collision only + * works on vector maps. + * @type {!google.maps.CollisionBehavior|null|undefined} + */ +google.maps.marker.AdvancedMarkerElementOptions.prototype.collisionBehavior; + +/** + * The DOM Element backing the visual of an AdvancedMarkerElement. + *

Note: AdvancedMarkerElement does not clone + * the passed-in DOM element. Once the DOM element is passed to an + * AdvancedMarkerElement, passing the same DOM element to another + * AdvancedMarkerElement will move the DOM element and cause the + * previous AdvancedMarkerElement to look empty. + * @default {@link google.maps.marker.PinElement.element} + * @type {!Node|null|undefined} + */ +google.maps.marker.AdvancedMarkerElementOptions.prototype.content; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * If true, the AdvancedMarkerElement will be + * clickable and trigger the gmp-click event, and will be + * interactive for accessibility purposes (e.g. allowing keyboard navigation via + * arrow keys). + * @default false + * @type {boolean|null|undefined} + */ +google.maps.marker.AdvancedMarkerElementOptions.prototype.gmpClickable; + +/** + * If true, the AdvancedMarkerElement can be dragged. + *

Note: AdvancedMarkerElement with altitude is + * not draggable. + * @default false + * @type {boolean|null|undefined} + */ +google.maps.marker.AdvancedMarkerElementOptions.prototype.gmpDraggable; + +/** + * Map on which to display the AdvancedMarkerElement. The map is + * required to display the AdvancedMarkerElement and can be + * provided by setting {@link google.maps.marker.AdvancedMarkerElement.map} if + * not provided at the construction. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.marker.AdvancedMarkerElementOptions.prototype.map; + +/** + * Sets the AdvancedMarkerElement's position. An + * AdvancedMarkerElement may be constructed without a position, but + * will not be displayed until its position is provided - for example, by a + * user's actions or choices. An AdvancedMarkerElement's + * position can be provided by setting {@link + * google.maps.marker.AdvancedMarkerElement.position} if not provided at the + * construction.

Note: AdvancedMarkerElement + * with altitude is only supported on vector maps. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|!google.maps.LatLngAltitude|!google.maps.LatLngAltitudeLiteral|null|undefined} + */ +google.maps.marker.AdvancedMarkerElementOptions.prototype.position; + +/** + * Rollover text. If provided, an accessibility text (e.g. for use with screen + * readers) will be added to the AdvancedMarkerElement with the + * provided value. + * @type {string|null|undefined} + */ +google.maps.marker.AdvancedMarkerElementOptions.prototype.title; + +/** + * All AdvancedMarkerElements are displayed on the map in order of + * their zIndex, with higher values displaying in front of + * AdvancedMarkerElements with lower values. By default, + * AdvancedMarkerElements are displayed according to their vertical + * position on screen, with lower AdvancedMarkerElements appearing + * in front of AdvancedMarkerElements farther up the screen. Note + * that zIndex is also used to help determine relative priority + * between {@link + * google.maps.CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY} Advanced + * Markers. A higher zIndex value indicates higher priority. + * @type {number|null|undefined} + */ +google.maps.marker.AdvancedMarkerElementOptions.prototype.zIndex; + +/** + * A PinElement represents a DOM element that consists of a shape + * and a glyph. The shape has the same balloon style as seen in the + * default {@link google.maps.marker.AdvancedMarkerElement}. The glyph is an + * optional DOM element displayed in the balloon shape. A + * PinElement may have a different aspect ratio depending on + * its {@link google.maps.marker.PinElement.scale}.

+ * Note: Usage as a Web Component (e.g. usage as an HTMLElement + * subclass, or via HTML) is not yet supported. + * + * Access by calling `const {PinElement} = await + * google.maps.importLibrary("marker")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.marker.PinElementOptions=} options + * @implements {google.maps.marker.PinElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.marker.PinElement = function(options) {}; + +/** + * See {@link google.maps.marker.PinElementOptions.background}. + * @type {string|null|undefined} + */ +google.maps.marker.PinElement.prototype.background; + +/** + * See {@link google.maps.marker.PinElementOptions.borderColor}. + * @type {string|null|undefined} + */ +google.maps.marker.PinElement.prototype.borderColor; + +/** + * This field is read-only. The DOM Element backing the view. + * @type {!HTMLElement} + */ +google.maps.marker.PinElement.prototype.element; + +/** + * See {@link google.maps.marker.PinElementOptions.glyph}. + * @type {string|!Element|!URL|null|undefined} + */ +google.maps.marker.PinElement.prototype.glyph; + +/** + * See {@link google.maps.marker.PinElementOptions.glyphColor}. + * @type {string|null|undefined} + */ +google.maps.marker.PinElement.prototype.glyphColor; + +/** + * See {@link google.maps.marker.PinElementOptions.scale}. + * @type {number|null|undefined} + */ +google.maps.marker.PinElement.prototype.scale; + + + +/** + * Options for creating a {@link google.maps.marker.PinElement}. + * @record + */ +google.maps.marker.PinElementOptions = function() {}; + +/** + * The background color of the pin shape. Supports any CSS color + * value. + * @type {string|null|undefined} + */ +google.maps.marker.PinElementOptions.prototype.background; + +/** + * The border color of the pin shape. Supports any CSS color + * value. + * @type {string|null|undefined} + */ +google.maps.marker.PinElementOptions.prototype.borderColor; + +/** + * The DOM element displayed in the pin. + * @type {string|!Element|!URL|null|undefined} + */ +google.maps.marker.PinElementOptions.prototype.glyph; + +/** + * The color of the glyph. Supports any CSS color + * value. + * @type {string|null|undefined} + */ +google.maps.marker.PinElementOptions.prototype.glyphColor; + +/** + * The scale of the pin. + * @default 1 + * @type {number|null|undefined} + */ +google.maps.marker.PinElementOptions.prototype.scale; + +/** + * @const + */ +google.maps.places = {}; + +/** + * + * Access by calling `const {AccessibilityOptions} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.AccessibilityOptions = function() {}; + +/** + * Whether a place has a wheelchair accessible entrance. Returns 'true' + * or 'false' if the value is known. Returns 'null' if the value + * is unknown. + * @type {boolean|null} + */ +google.maps.places.AccessibilityOptions.prototype + .hasWheelchairAccessibleEntrance; + +/** + * Whether a place has wheelchair accessible parking. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.AccessibilityOptions.prototype + .hasWheelchairAccessibleParking; + +/** + * Whether a place has a wheelchair accessible restroom. Returns 'true' + * or 'false' if the value is known. Returns 'null' if the value + * is unknown. + * @type {boolean|null} + */ +google.maps.places.AccessibilityOptions.prototype + .hasWheelchairAccessibleRestroom; + +/** + * Whether a place offers wheelchair accessible seating. Returns 'true' + * or 'false' if the value is known. Returns 'null' if the value + * is unknown. + * @type {boolean|null} + */ +google.maps.places.AccessibilityOptions.prototype + .hasWheelchairAccessibleSeating; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * + * Access by calling `const {AddressComponent} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.AddressComponent = function() {}; + +/** + * The full text of the address component. + * @type {string|null} + */ +google.maps.places.AddressComponent.prototype.longText; + +/** + * The abbreviated, short text of the given address component. + * @type {string|null} + */ +google.maps.places.AddressComponent.prototype.shortText; + +/** + * An array of strings denoting the type of this address component. A list of + * valid types can be found here. + * @type {!Array} + */ +google.maps.places.AddressComponent.prototype.types; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * + * Access by calling `const {Attribution} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.Attribution = function() {}; + +/** + * Attribution text to be displayed for this Place result. + * @type {string|null} + */ +google.maps.places.Attribution.prototype.provider; + +/** + * @type {string|null} + */ +google.maps.places.Attribution.prototype.providerURI; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * + * Access by calling `const {AuthorAttribution} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.AuthorAttribution = function() {}; + +/** + * Author's name for this result. + * @type {string} + */ +google.maps.places.AuthorAttribution.prototype.displayName; + +/** + * Author's photo URI for this result. This may not always be available. + * @type {string|null} + */ +google.maps.places.AuthorAttribution.prototype.photoURI; + +/** + * Author's profile URI for this result. + * @type {string|null} + */ +google.maps.places.AuthorAttribution.prototype.uri; + +/** + * A widget that provides Place predictions based on a user's text input. It + * attaches to an input element of type text, and listens for text + * entry in that field. The list of predictions is presented as a drop-down + * list, and is updated as text is entered. + * + * Access by calling `const {Autocomplete} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!HTMLInputElement} inputField The <input> text + * field to which the Autocomplete should be attached. + * @param {?google.maps.places.AutocompleteOptions=} opts Options. + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.places.Autocomplete = function(inputField, opts) {}; + +/** + * Returns the bounds to which predictions are biased. + * @return {!google.maps.LatLngBounds|undefined} The biasing bounds. + */ +google.maps.places.Autocomplete.prototype.getBounds = function() {}; + +/** + * Returns the fields to be included for the Place in the details response when + * the details are successfully retrieved. For a list of fields see {@link + * google.maps.places.PlaceResult}. + * @return {!Array|undefined} + */ +google.maps.places.Autocomplete.prototype.getFields = function() {}; + +/** + * Returns the details of the Place selected by user if the details were + * successfully retrieved. Otherwise returns a stub Place object, with the + * name property set to the current value of the input field. + * @return {!google.maps.places.PlaceResult} The Place selected by the user. + */ +google.maps.places.Autocomplete.prototype.getPlace = function() {}; + +/** + * Sets the preferred area within which to return Place results. Results are + * biased towards, but not restricted to, this area. + * @param {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|undefined} + * bounds The biasing bounds. + * @return {undefined} + */ +google.maps.places.Autocomplete.prototype.setBounds = function(bounds) {}; + +/** + * Sets the component restrictions. Component restrictions are used to restrict + * predictions to only those within the parent component. For example, the + * country. + * @param {?google.maps.places.ComponentRestrictions} restrictions The + * restrictions to use. + * @return {undefined} + */ +google.maps.places.Autocomplete.prototype.setComponentRestrictions = function( + restrictions) {}; + +/** + * Sets the fields to be included for the Place in the details response when the + * details are successfully retrieved. For a list of fields see {@link + * google.maps.places.PlaceResult}. + * @param {!Array|undefined} fields + * @return {undefined} + */ +google.maps.places.Autocomplete.prototype.setFields = function(fields) {}; + +/** + * @param {?google.maps.places.AutocompleteOptions} options + * @return {undefined} + */ +google.maps.places.Autocomplete.prototype.setOptions = function(options) {}; + +/** + * Sets the types of predictions to be returned. For supported types, see the + * developer's guide. If no types are specified, all types will be + * returned. + * @param {?Array} types The types of predictions to be included. + * @return {undefined} + */ +google.maps.places.Autocomplete.prototype.setTypes = function(types) {}; + +/** + * The options that can be set on an Autocomplete object. + * @record + */ +google.maps.places.AutocompleteOptions = function() {}; + +/** + * The area in which to search for places. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|undefined} + */ +google.maps.places.AutocompleteOptions.prototype.bounds; + +/** + * The component restrictions. Component restrictions are used to restrict + * predictions to only those within the parent component. For example, the + * country. + * @type {!google.maps.places.ComponentRestrictions|undefined} + */ +google.maps.places.AutocompleteOptions.prototype.componentRestrictions; + +/** + * Fields to be included for the Place in the details response when the details + * are successfully retrieved, which + * will be billed for. If ['ALL'] is passed in, all + * available fields will be returned and billed for (this is not recommended for + * production deployments). For a list of fields see {@link + * google.maps.places.PlaceResult}. Nested fields can be specified with + * dot-paths (for example, "geometry.location"). The default is + * ['ALL']. + * @type {!Array|undefined} + */ +google.maps.places.AutocompleteOptions.prototype.fields; + +/** + * A boolean value, indicating that the Autocomplete widget should only return + * those places that are inside the bounds of the Autocomplete widget at the + * time the query is sent. Setting strictBounds to false (which is + * the default) will make the results biased towards, but not restricted to, + * places contained within the bounds. + * @type {boolean|undefined} + */ +google.maps.places.AutocompleteOptions.prototype.strictBounds; + +/** + * The types of predictions to be returned. For supported types, see the + * developer's guide. If no types are specified, all types will be + * returned. + * @type {!Array|undefined} + */ +google.maps.places.AutocompleteOptions.prototype.types; + +/** + * Whether to retrieve only Place IDs. The PlaceResult made available when the + * place_changed event is fired will only have the place_id, types and name + * fields, with the place_id, types and description returned by the Autocomplete + * service. Disabled by default. + * @type {boolean|undefined} + * @deprecated placeIdOnly is deprecated as of January 15, 2019, + * and will be turned off on January 15, 2020. Use {@link + * google.maps.places.AutocompleteOptions.fields} instead: fields: + * ['place_id', 'name', 'types']. + */ +google.maps.places.AutocompleteOptions.prototype.placeIdOnly; + +/** + * Represents a single autocomplete prediction. + * @record + */ +google.maps.places.AutocompletePrediction = function() {}; + +/** + * This is the unformatted version of the query suggested by the Places service. + * @type {string} + */ +google.maps.places.AutocompletePrediction.prototype.description; + +/** + * The distance in meters of the place from the {@link + * google.maps.places.AutocompletionRequest.origin}. + * @type {number|undefined} + */ +google.maps.places.AutocompletePrediction.prototype.distance_meters; + +/** + * A set of substrings in the place's description that match elements in the + * user's input, suitable for use in highlighting those substrings. Each + * substring is identified by an offset and a length, expressed in unicode + * characters. + * @type {!Array} + */ +google.maps.places.AutocompletePrediction.prototype.matched_substrings; + +/** + * A place ID that can be used to retrieve details about this place using the + * place details service (see {@link + * google.maps.places.PlacesService.getDetails}). + * @type {string} + */ +google.maps.places.AutocompletePrediction.prototype.place_id; + +/** + * Structured information about the place's description, divided into a main + * text and a secondary text, including an array of matched substrings from the + * autocomplete input, identified by an offset and a length, expressed in + * unicode characters. + * @type {!google.maps.places.StructuredFormatting} + */ +google.maps.places.AutocompletePrediction.prototype.structured_formatting; + +/** + * Information about individual terms in the above description, from most to + * least specific. For example, "Taco Bell", "Willitis", and + * "CA". + * @type {!Array} + */ +google.maps.places.AutocompletePrediction.prototype.terms; + +/** + * An array of types that the prediction belongs to, for example + * 'establishment' or 'geocode'. + * @type {!Array} + */ +google.maps.places.AutocompletePrediction.prototype.types; + +/** + * Request interface for {@link + * google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions}. + * @record + */ +google.maps.places.AutocompleteRequest = function() {}; + +/** + * Included primary Place + * type (for example, "restaurant" or "gas_station"). + *

A Place is only returned if its primary type is included in this + * list. Up to 5 values can be specified. If no types are specified, all Place + * types are returned. + * @type {!Array|undefined} + */ +google.maps.places.AutocompleteRequest.prototype.includedPrimaryTypes; + +/** + * Only include results in the specified regions, specified as up to 15 CLDR + * two-character region codes. An empty set will not restrict the results. If + * both locationRestriction and includedRegionCodes + * are set, the results will be located in the area of intersection. + * @type {!Array|undefined} + */ +google.maps.places.AutocompleteRequest.prototype.includedRegionCodes; + +/** + * The text string on which to search. + * @type {string} + */ +google.maps.places.AutocompleteRequest.prototype.input; + +/** + * A zero-based Unicode character offset of input indicating the + * cursor position in input. The cursor position may influence what + * predictions are returned. If not specified, defaults to the length of + * input. + * @type {number|undefined} + */ +google.maps.places.AutocompleteRequest.prototype.inputOffset; + +/** + * The language in which to return results. Will default to the browser's + * language preference. The results may be in mixed languages if the language + * used in input is different from language, or if the + * returned Place does not have a translation from the local language to + * language. + * @type {string|undefined} + */ +google.maps.places.AutocompleteRequest.prototype.language; + +/** + * Bias results to a specified location.

At most one of + * locationBias or locationRestriction should be set. + * If neither are set, the results will be biased by IP address, meaning the IP + * address will be mapped to an imprecise location and used as a biasing signal. + * @type {!google.maps.places.LocationBias|undefined} + */ +google.maps.places.AutocompleteRequest.prototype.locationBias; + +/** + * Restrict results to a specified location.

At most one of + * locationBias or locationRestriction should be set. + * If neither are set, the results will be biased by IP address, meaning the IP + * address will be mapped to an imprecise location and used as a biasing signal. + * @type {!google.maps.places.LocationRestriction|undefined} + */ +google.maps.places.AutocompleteRequest.prototype.locationRestriction; + +/** + * The origin point from which to calculate geodesic distance to the destination + * (returned as {@link google.maps.places.PlacePrediction.distanceMeters}). If + * this value is omitted, geodesic distance will not be returned. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|undefined} + */ +google.maps.places.AutocompleteRequest.prototype.origin; + +/** + * The region code, specified as a CLDR two-character region code. This affects + * address formatting, result ranking, and may influence what results are + * returned. This does not restrict results to the specified region. + * @type {string|undefined} + */ +google.maps.places.AutocompleteRequest.prototype.region; + +/** + * A token which identifies an Autocomplete session for billing purposes. + * Generate a new session token via {@link + * google.maps.places.AutocompleteSessionToken}.

The session begins + * when the user starts typing a query, and concludes when they select a place + * and call {@link google.maps.places.Place.fetchFields}. Each session can have + * multiple queries, followed by one fetchFields call. The + * credentials used for each request within a session must belong to the same + * Google Cloud Console project. Once a session has concluded, the token is no + * longer valid; your app must generate a fresh token for each session. If the + * sessionToken parameter is omitted, or if you reuse a session + * token, the session is charged as if no session token was provided (each + * request is billed separately).

We recommend the following + * guidelines:

  • Use session tokens for all Place Autocomplete calls.
  • + *
  • Generate a fresh token for each session.
  • Be sure to pass a + * unique session token for each new session. Using the same token for more than + * one session will result in each request being billed individually.
+ * @type {!google.maps.places.AutocompleteSessionToken|undefined} + */ +google.maps.places.AutocompleteRequest.prototype.sessionToken; + +/** + * An Autocomplete response returned by the call to {@link + * google.maps.places.AutocompleteService.getPlacePredictions} containing a list + * of {@link google.maps.places.AutocompletePrediction}s. + * @record + */ +google.maps.places.AutocompleteResponse = function() {}; + +/** + * The list of {@link google.maps.places.AutocompletePrediction}s. + * @type {!Array} + */ +google.maps.places.AutocompleteResponse.prototype.predictions; + +/** + * Contains methods related to retrieving Autocomplete predictions. + * + * Access by calling `const {AutocompleteService} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.AutocompleteService = function() {}; + +/** + * Retrieves place autocomplete predictions based on the supplied autocomplete + * request. + * @param {!google.maps.places.AutocompletionRequest} request The autocompletion + * request. + * @param {(function(?Array, + * !google.maps.places.PlacesServiceStatus): void)=} callback A callback + * accepting an array of AutocompletePrediction objects and a + * PlacesServiceStatus value as argument. + * @return {!Promise} + */ +google.maps.places.AutocompleteService.prototype.getPlacePredictions = function( + request, callback) {}; + +/** + * Retrieves query autocomplete predictions based on the supplied query + * autocomplete request. + * @param {!google.maps.places.QueryAutocompletionRequest} request The query + * autocompletion request. + * @param {function(?Array, + * !google.maps.places.PlacesServiceStatus): void} callback A callback + * accepting an array of QueryAutocompletePrediction objects and a + * PlacesServiceStatus value as argument. + * @return {undefined} + */ +google.maps.places.AutocompleteService.prototype.getQueryPredictions = function( + request, callback) {}; + +/** + * Represents a session token used for tracking an autocomplete session. + * + * Access by calling `const {AutocompleteSessionToken} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.AutocompleteSessionToken = function() {}; + +/** + * An Autocomplete suggestion result. + * + * Access by calling `const {AutocompleteSuggestion} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.AutocompleteSuggestion = function() {}; + +/** + * Contains the human-readable name for the returned result. For establishment + * results, this is usually the business name and address. + * @type {!google.maps.places.PlacePrediction|null} + */ +google.maps.places.AutocompleteSuggestion.prototype.placePrediction; + +/** + * Fetches a list of AutocompleteSuggestions. + * @param {!google.maps.places.AutocompleteRequest} autocompleteRequest + * @return {!Promise}>} + */ +google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions = + function(autocompleteRequest) {}; + +/** + * An Autocompletion request to be sent to {@link + * google.maps.places.AutocompleteService.getPlacePredictions}. + * @record + */ +google.maps.places.AutocompletionRequest = function() {}; + +/** + * The component restrictions. Component restrictions are used to restrict + * predictions to only those within the parent component. For example, the + * country. + * @type {!google.maps.places.ComponentRestrictions|undefined} + */ +google.maps.places.AutocompletionRequest.prototype.componentRestrictions; + +/** + * The user entered input string. + * @type {string} + */ +google.maps.places.AutocompletionRequest.prototype.input; + +/** + * A language identifier for the language in which the results should be + * returned, if possible. Results in the selected language may be given a higher + * ranking, but suggestions are not restricted to this language. See the list of + * supported languages. + * @type {string|null|undefined} + */ +google.maps.places.AutocompletionRequest.prototype.language; + +/** + * A soft boundary or hint to use when searching for places. + * @type {!google.maps.places.LocationBias|null|undefined} + */ +google.maps.places.AutocompletionRequest.prototype.locationBias; + +/** + * Bounds to constrain search results. + * @type {!google.maps.places.LocationRestriction|null|undefined} + */ +google.maps.places.AutocompletionRequest.prototype.locationRestriction; + +/** + * The character position in the input term at which the service uses text for + * predictions (the position of the cursor in the input field). + * @type {number|undefined} + */ +google.maps.places.AutocompletionRequest.prototype.offset; + +/** + * The location where {@link + * google.maps.places.AutocompletePrediction.distance_meters} is calculated + * from. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|undefined} + */ +google.maps.places.AutocompletionRequest.prototype.origin; + +/** + * A region code which is used for result formatting and for result filtering. + * It does not restrict the suggestions to this country. The region code accepts + * a ccTLD + * ("top-level domain") two-character value. Most ccTLD codes are + * identical to ISO 3166-1 codes, with some notable exceptions. For example, the + * United Kingdom's ccTLD is "uk" (.co.uk) while its + * ISO 3166-1 code is "gb" (technically for the entity of "The + * United Kingdom of Great Britain and Northern Ireland"). + * @type {string|null|undefined} + */ +google.maps.places.AutocompletionRequest.prototype.region; + +/** + * Unique reference used to bundle individual requests into sessions. + * @type {!google.maps.places.AutocompleteSessionToken|undefined} + */ +google.maps.places.AutocompletionRequest.prototype.sessionToken; + +/** + * The types of predictions to be returned. For supported types, see the + * developer's guide. If no types are specified, all types will be + * returned. + * @type {!Array|undefined} + */ +google.maps.places.AutocompletionRequest.prototype.types; + +/** + * Bounds for prediction biasing. Predictions will be biased towards, but not + * restricted to, the given bounds. Both location and + * radius will be ignored if bounds is set. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|undefined} + * @deprecated bounds is deprecated as of May 2023. Use {@link + * google.maps.places.AutocompletionRequest.locationBias} and {@link + * google.maps.places.AutocompletionRequest.locationRestriction} instead. + */ +google.maps.places.AutocompletionRequest.prototype.bounds; + +/** + * Location for prediction biasing. Predictions will be biased towards the given + * location and radius. Alternatively, + * bounds can be used. + * @type {!google.maps.LatLng|undefined} + * @deprecated location is deprecated as of May 2023. Use {@link + * google.maps.places.AutocompletionRequest.locationBias} and {@link + * google.maps.places.AutocompletionRequest.locationRestriction} instead. + */ +google.maps.places.AutocompletionRequest.prototype.location; + +/** + * The radius of the area used for prediction biasing. The radius + * is specified in meters, and must always be accompanied by a + * location property. Alternatively, bounds can be + * used. + * @type {number|undefined} + * @deprecated radius is deprecated as of May 2023. Use {@link + * google.maps.places.AutocompletionRequest.locationBias} and {@link + * google.maps.places.AutocompletionRequest.locationRestriction} instead. + */ +google.maps.places.AutocompletionRequest.prototype.radius; + +/** + * The operational status of the Place, if it is a business, returned in a + * PlaceResult (indicates whether the place is operational, or closed either + * temporarily or permanently). Specify these by value, or the constant's + * name (example: 'OPERATIONAL' or + * google.maps.places.BusinessStatus.OPERATIONAL). + * + * Access by calling `const {BusinessStatus} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.places.BusinessStatus = { + /** + * The business is closed permanently. + */ + CLOSED_PERMANENTLY: 'CLOSED_PERMANENTLY', + /** + * The business is closed temporarily. + */ + CLOSED_TEMPORARILY: 'CLOSED_TEMPORARILY', + /** + * The business is operating normally. + */ + OPERATIONAL: 'OPERATIONAL', +}; + +/** + * Defines the component restrictions that can be used with the autocomplete + * service. + * @record + */ +google.maps.places.ComponentRestrictions = function() {}; + +/** + * Restricts predictions to the specified country (ISO 3166-1 Alpha-2 country + * code, case insensitive). For example, 'us', 'br', + * or 'au'. You can provide a single one, or an array of up to five + * country code strings. + * @type {string|!Array|null} + */ +google.maps.places.ComponentRestrictions.prototype.country; + +/** + * EV charging information, aggregated for connectors of the same type and the + * same charge rate. + * + * Access by calling `const {ConnectorAggregation} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.ConnectorAggregation = function() {}; + +/** + * The time when the connector availability information in this aggregation was + * last updated. + * @type {!Date|null} + */ +google.maps.places.ConnectorAggregation.prototype.availabilityLastUpdateTime; + +/** + * Number of connectors in this aggregation that are currently available. + * @type {number|null} + */ +google.maps.places.ConnectorAggregation.prototype.availableCount; + +/** + * Number of connectors in this aggregation. + * @type {number} + */ +google.maps.places.ConnectorAggregation.prototype.count; + +/** + * The static max charging rate in kw of each connector of the aggregation. + * @type {number} + */ +google.maps.places.ConnectorAggregation.prototype.maxChargeRateKw; + +/** + * Number of connectors in this aggregation that are currently out of service. + * @type {number|null} + */ +google.maps.places.ConnectorAggregation.prototype.outOfServiceCount; + +/** + * The connector type of this aggregation. + * @type {!google.maps.places.EVConnectorType|null} + */ +google.maps.places.ConnectorAggregation.prototype.type; + +/** + * Information about the EV charging station hosted in the place. + * + * Access by calling `const {EVChargeOptions} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.EVChargeOptions = function() {}; + +/** + * A list of EV charging connector aggregations that contain connectors of the + * same type and same charge rate. + * @type {!Array} + */ +google.maps.places.EVChargeOptions.prototype.connectorAggregations; + +/** + * Number of connectors at this station. Because some ports can have multiple + * connectors but only be able to charge one car at a time, the number of + * connectors may be greater than the total number of cars which can charge + * simultaneously. + * @type {number} + */ +google.maps.places.EVChargeOptions.prototype.connectorCount; + +/** + * EV charging connector types. + * + * Access by calling `const {EVConnectorType} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.places.EVConnectorType = { + /** + * Combined Charging System (AC and DC). Based on SAE Type-1 J-1772 connector. + */ + CCS_COMBO_1: 'CCS_COMBO_1', + /** + * Combined Charging System (AC and DC). Based on Type-2 Mennekes connector. + */ + CCS_COMBO_2: 'CCS_COMBO_2', + /** + * CHAdeMO type connector. + */ + CHADEMO: 'CHADEMO', + /** + * J1772 type 1 connector. + */ + J1772: 'J1772', + /** + * Other connector types. + */ + OTHER: 'OTHER', + /** + * The generic TESLA connector. This is NACS in the North America but can be + * non-NACS in other parts of the world (e.g. CCS Combo 2 (CCS2) or GB/T). + * This value is less representative of an actual connector type, and more + * represents the ability to charge a Tesla brand vehicle at a Tesla owned + * charging station. + */ + TESLA: 'TESLA', + /** + * IEC 62196 type 2 connector. Often referred to as MENNEKES. + */ + TYPE_2: 'TYPE_2', + /** + * GB/T type corresponds to the GB/T standard in China. This type covers all + * GB_T types. + */ + UNSPECIFIED_GB_T: 'UNSPECIFIED_GB_T', + /** + * Unspecified wall outlet. + */ + UNSPECIFIED_WALL_OUTLET: 'UNSPECIFIED_WALL_OUTLET', +}; + +/** + * EV-related options that can be specified for a place search request. + * @record + */ +google.maps.places.EVSearchOptions = function() {}; + +/** + * The list of preferred EV connector types. A place that does not support any + * of the listed connector types is filtered out. + * @type {!Array|undefined} + */ +google.maps.places.EVSearchOptions.prototype.connectorTypes; + +/** + * Minimum required charging rate in kilowatts. A place with a charging rate + * less than the specified rate is filtered out. + * @type {number|undefined} + */ +google.maps.places.EVSearchOptions.prototype.minimumChargingRateKw; + +/** + * Options for fetching Place fields. + * @record + */ +google.maps.places.FetchFieldsRequest = function() {}; + +/** + * List of fields to be fetched. + * @type {!Array} + */ +google.maps.places.FetchFieldsRequest.prototype.fields; + +/** + * A find place from text search request to be sent to {@link + * google.maps.places.PlacesService.findPlaceFromPhoneNumber}. + * @record + */ +google.maps.places.FindPlaceFromPhoneNumberRequest = function() {}; + +/** + * Fields to be included in the response, which + * will be billed for. If ['ALL'] is passed in, all + * available fields will be returned and billed for (this is not recommended for + * production deployments). For a list of fields see {@link + * google.maps.places.PlaceResult}. Nested fields can be specified with + * dot-paths (for example, "geometry.location"). + * @type {!Array} + */ +google.maps.places.FindPlaceFromPhoneNumberRequest.prototype.fields; + +/** + * A language identifier for the language in which names and addresses should be + * returned, when possible. See the list of + * supported languages. + * @type {string|null|undefined} + */ +google.maps.places.FindPlaceFromPhoneNumberRequest.prototype.language; + +/** + * The bias used when searching for Place. The result will be biased towards, + * but not restricted to, the given {@link google.maps.places.LocationBias}. + * @type {!google.maps.places.LocationBias|undefined} + */ +google.maps.places.FindPlaceFromPhoneNumberRequest.prototype.locationBias; + +/** + * The phone number of the place to look up. Format must be E.164. + * @type {string} + */ +google.maps.places.FindPlaceFromPhoneNumberRequest.prototype.phoneNumber; + +/** + * A find place from text search request to be sent to {@link + * google.maps.places.PlacesService.findPlaceFromQuery}. + * @record + */ +google.maps.places.FindPlaceFromQueryRequest = function() {}; + +/** + * Fields to be included in the response, which + * will be billed for. If ['ALL'] is passed in, all + * available fields will be returned and billed for (this is not recommended for + * production deployments). For a list of fields see {@link + * google.maps.places.PlaceResult}. Nested fields can be specified with + * dot-paths (for example, "geometry.location"). + * @type {!Array} + */ +google.maps.places.FindPlaceFromQueryRequest.prototype.fields; + +/** + * A language identifier for the language in which names and addresses should be + * returned, when possible. See the list of + * supported languages. + * @type {string|null|undefined} + */ +google.maps.places.FindPlaceFromQueryRequest.prototype.language; + +/** + * The bias used when searching for Place. The result will be biased towards, + * but not restricted to, the given {@link google.maps.places.LocationBias}. + * @type {!google.maps.places.LocationBias|undefined} + */ +google.maps.places.FindPlaceFromQueryRequest.prototype.locationBias; + +/** + * The request's query. For example, the name or address of a place. + * @type {string} + */ +google.maps.places.FindPlaceFromQueryRequest.prototype.query; + +/** + * Text representing a Place prediction. The text may be used as is or + * formatted. + * + * Access by calling `const {FormattableText} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.FormattableText = function() {}; + +/** + * A list of string ranges identifying where the input request matched in {@link + * google.maps.places.FormattableText.text}. The ranges can be used to format + * specific parts of text. The substrings may not be exact matches + * of {@link google.maps.places.AutocompleteRequest.input} if the matching was + * determined by criteria other than string matching (for example, spell + * corrections or transliterations). These values are Unicode character offsets + * of {@link google.maps.places.FormattableText.text}. The ranges are guaranteed + * to be ordered in increasing offset values. + * @type {!Array} + */ +google.maps.places.FormattableText.prototype.matches; + +/** + * Text that may be used as is or formatted with {@link + * google.maps.places.FormattableText.matches}. + * @type {string} + */ +google.maps.places.FormattableText.prototype.text; + +/** + * The most recent information about fuel options in a gas station. This + * information is updated regularly. + * + * Access by calling `const {FuelOptions} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.FuelOptions = function() {}; + +/** + * A list of fuel prices for each type of fuel this station has, one entry per + * fuel type. + * @type {!Array} + */ +google.maps.places.FuelOptions.prototype.fuelPrices; + +/** + * Fuel price information for a given type of fuel. + * + * Access by calling `const {FuelPrice} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.FuelPrice = function() {}; + +/** + * The price of the fuel. + * @type {!google.maps.places.Money|null} + */ +google.maps.places.FuelPrice.prototype.price; + +/** + * The type of fuel. + * @type {!google.maps.places.FuelType|null} + */ +google.maps.places.FuelPrice.prototype.type; + +/** + * The time the fuel price was last updated. + * @type {!Date|null} + */ +google.maps.places.FuelPrice.prototype.updateTime; + +/** + * Types of fuel. + * + * Access by calling `const {FuelType} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.places.FuelType = { + /** + * Bio-diesel. + */ + BIO_DIESEL: 'BIO_DIESEL', + /** + * Diesel fuel. + */ + DIESEL: 'DIESEL', + /** + * E 80. + */ + E80: 'E80', + /** + * E 85. + */ + E85: 'E85', + /** + * LPG. + */ + LPG: 'LPG', + /** + * Methane. + */ + METHANE: 'METHANE', + /** + * Midgrade. + */ + MIDGRADE: 'MIDGRADE', + /** + * Premium. + */ + PREMIUM: 'PREMIUM', + /** + * Regular unleaded. + */ + REGULAR_UNLEADED: 'REGULAR_UNLEADED', + /** + * SP 100. + */ + SP100: 'SP100', + /** + * SP 91. + */ + SP91: 'SP91', + /** + * SP 91 E10. + */ + SP91_E10: 'SP91_E10', + /** + * SP 92. + */ + SP92: 'SP92', + /** + * SP 95. + */ + SP95: 'SP95', + /** + * SP95 E10. + */ + SP95_E10: 'SP95_E10', + /** + * SP 98. + */ + SP98: 'SP98', + /** + * SP 99. + */ + SP99: 'SP99', + /** + * Truck diesel. + */ + TRUCK_DIESEL: 'TRUCK_DIESEL', +}; + +/** + * @typedef {!google.maps.LatLng|!google.maps.LatLngLiteral|!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|!google.maps.Circle|!google.maps.CircleLiteral|string} + */ +google.maps.places.LocationBias; + +/** + * @typedef {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral} + */ +google.maps.places.LocationRestriction; + +/** + * A representation of an amount of money with its currency type. + * + * Access by calling `const {Money} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.Money = function() {}; + +/** + * The three-letter currency code, defined in ISO 4217. + * @type {string} + */ +google.maps.places.Money.prototype.currencyCode; + +/** + * Number of nano (10^-9) units of the amount. + * @type {number} + */ +google.maps.places.Money.prototype.nanos; + +/** + * The whole units of the amount. For example, if {@link + * google.maps.places.Money.currencyCode} is "USD", then 1 unit is 1 + * US dollar. + * @type {number} + */ +google.maps.places.Money.prototype.units; + +/** + * Returns a human-readable representation of the amount of money with its + * currency symbol. + * @return {string} + */ +google.maps.places.Money.prototype.toString = function() {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * + * Access by calling `const {OpeningHours} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.OpeningHours = function() {}; + +/** + * Opening periods covering each day of the week, starting from Sunday, in + * chronological order. Does not include days where the Place is not open. + * @type {!Array} + */ +google.maps.places.OpeningHours.prototype.periods; + +/** + * An array of seven strings representing the formatted opening hours for each + * day of the week. The Places Service will format and localize the opening + * hours appropriately for the current language. The ordering of the elements in + * this array depends on the language. Some languages start the week on Monday, + * while others start on Sunday. + * @type {!Array} + */ +google.maps.places.OpeningHours.prototype.weekdayDescriptions; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * + * Access by calling `const {OpeningHoursPeriod} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.OpeningHoursPeriod = function() {}; + +/** + * The closing time for the Place. + * @type {!google.maps.places.OpeningHoursPoint|null} + */ +google.maps.places.OpeningHoursPeriod.prototype.close; + +/** + * The opening time for the Place. + * @type {!google.maps.places.OpeningHoursPoint} + */ +google.maps.places.OpeningHoursPeriod.prototype.open; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * + * Access by calling `const {OpeningHoursPoint} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.OpeningHoursPoint = function() {}; + +/** + * The day of the week, as a number in the range [0, 6], starting on Sunday. For + * example, 2 means Tuesday. + * @type {number} + */ +google.maps.places.OpeningHoursPoint.prototype.day; + +/** + * The hour of the OpeningHoursPoint.time as a number, in the range [0, 23]. + * This will be reported in the Place’s time zone. + * @type {number} + */ +google.maps.places.OpeningHoursPoint.prototype.hour; + +/** + * The minute of the OpeningHoursPoint.time as a number, in the range [0, 59]. + * This will be reported in the Place’s time zone. + * @type {number} + */ +google.maps.places.OpeningHoursPoint.prototype.minute; + +/** + * + * Access by calling `const {ParkingOptions} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.ParkingOptions = function() {}; + +/** + * Whether a place offers free garage parking. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.ParkingOptions.prototype.hasFreeGarageParking; + +/** + * Whether a place offers free parking lots. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.ParkingOptions.prototype.hasFreeParkingLot; + +/** + * Whether a place offers free street parking. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.ParkingOptions.prototype.hasFreeStreetParking; + +/** + * Whether a place offers paid garage parking. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.ParkingOptions.prototype.hasPaidGarageParking; + +/** + * Whether a place offers paid parking lots. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.ParkingOptions.prototype.hasPaidParkingLot; + +/** + * Whether a place offers paid street parking. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.ParkingOptions.prototype.hasPaidStreetParking; + +/** + * Whether a place offers valet parking. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.ParkingOptions.prototype.hasValetParking; + +/** + * + * Access by calling `const {PaymentOptions} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.PaymentOptions = function() {}; + +/** + * Whether a place only accepts payment via cash. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.PaymentOptions.prototype.acceptsCashOnly; + +/** + * Whether a place accepts payment via credit card. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.PaymentOptions.prototype.acceptsCreditCards; + +/** + * Whether a place accepts payment via debit card. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.PaymentOptions.prototype.acceptsDebitCards; + +/** + * Whether a place accepts payment via NFC. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. + * @type {boolean|null} + */ +google.maps.places.PaymentOptions.prototype.acceptsNFC; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * + * Access by calling `const {Photo} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.Photo = function() {}; + +/** + * Attribution text to be displayed for this photo. + * @type {!Array} + */ +google.maps.places.Photo.prototype.authorAttributions; + +/** + * The height of the photo in pixels. + * @type {number} + */ +google.maps.places.Photo.prototype.heightPx; + +/** + * The width of the photo in pixels. + * @type {number} + */ +google.maps.places.Photo.prototype.widthPx; + +/** + * Returns the image URL corresponding to the specified options. + * @param {!google.maps.places.PhotoOptions=} options + * @return {string} + */ +google.maps.places.Photo.prototype.getURI = function(options) {}; + +/** + * Defines photo-requesting options. + * @record + */ +google.maps.places.PhotoOptions = function() {}; + +/** + * The maximum height in pixels of the returned image. + * @type {number|null|undefined} + */ +google.maps.places.PhotoOptions.prototype.maxHeight; + +/** + * The maximum width in pixels of the returned image. + * @type {number|null|undefined} + */ +google.maps.places.PhotoOptions.prototype.maxWidth; + +/** + * + * Access by calling `const {Place} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.places.PlaceOptions} options + * @constructor + */ +google.maps.places.Place = function(options) {}; + +/** + * Accessibility options of this Place. undefined if the + * accessibility options data have not been called for from the server. + * @type {google.maps.places.AccessibilityOptions|null|undefined} + */ +google.maps.places.Place.prototype.accessibilityOptions; + +/** + * The collection of address components for this Place’s location. Empty object + * if there is no known address data. undefined if the address data + * has not been called for from the server. + * @type {!Array|undefined} + */ +google.maps.places.Place.prototype.addressComponents; + +/** + * The representation of the Place’s address in the adr microformat. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.adrFormatAddress; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.allowsDogs; + +/** + * Attribution text to be displayed for this Place result. + * @type {!Array|undefined} + */ +google.maps.places.Place.prototype.attributions; + +/** + * The location's operational status. null if there is no known + * status. undefined if the status data has not been loaded from + * the server. + * @type {google.maps.places.BusinessStatus|null|undefined} + */ +google.maps.places.Place.prototype.businessStatus; + +/** + * The location's display name. null if there is no name. + * undefined if the name data has not been loaded from the server. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.displayName; + +/** + * The language of the location's display name. null if there + * is no name. undefined if the name data has not been loaded from + * the server. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.displayNameLanguageCode; + +/** + * The editorial summary for this place. null if there is no + * editorial summary. undefined if this field has not yet been + * requested. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.editorialSummary; + +/** + * The language of the editorial summary for this place. null if + * there is no editorial summary. undefined if this field has not + * yet been requested. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.editorialSummaryLanguageCode; + +/** + * EV Charge options provided by the place. undefined if the EV + * charge options have not been called for from the server. + * @type {google.maps.places.EVChargeOptions|null|undefined} + */ +google.maps.places.Place.prototype.evChargeOptions; + +/** + * The locations’s full address. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.formattedAddress; + +/** + * Fuel options provided by the place. undefined if the fuel + * options have not been called for from the server. + * @type {google.maps.places.FuelOptions|null|undefined} + */ +google.maps.places.Place.prototype.fuelOptions; + +/** + * URL of the official Google page for this place. This is the Google-owned page + * that contains the best available information about the Place. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.googleMapsURI; + +/** + * Whether a place has curbside pickup. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. Returns 'undefined' if this field has not yet been + * requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.hasCurbsidePickup; + +/** + * Whether a place has delivery. Returns 'true' or 'false' if + * the value is known. Returns 'null' if the value is unknown. Returns + * 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.hasDelivery; + +/** + * Whether a place has dine in. Returns 'true' or 'false' if the + * value is known. Returns 'null' if the value is unknown. Returns + * 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.hasDineIn; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.hasLiveMusic; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.hasMenuForChildren; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.hasOutdoorSeating; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.hasRestroom; + +/** + * Whether a place has takeout. Returns 'true' or 'false' if the + * value is known. Returns 'null' if the value is unknown. Returns + * 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.hasTakeout; + +/** + * The default HEX color code for the place's category. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.iconBackgroundColor; + +/** + * The unique place id. + * @type {string} + */ +google.maps.places.Place.prototype.id; + +/** + * The Place’s phone number in international format. International format + * includes the country code, and is prefixed with the plus (+) sign. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.internationalPhoneNumber; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.isGoodForChildren; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.isGoodForGroups; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.isGoodForWatchingSports; + +/** + * Whether a place is reservable. Returns 'true' or 'false' if + * the value is known. Returns 'null' if the value is unknown. Returns + * 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.isReservable; + +/** + * The Place’s position. + * @type {google.maps.LatLng|null|undefined} + */ +google.maps.places.Place.prototype.location; + +/** + * The Place’s phone number, formatted according to the number's + * regional convention. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.nationalPhoneNumber; + +/** + * Options of parking provided by the place. undefined if the + * parking options data have not been called for from the server. + * @type {google.maps.places.ParkingOptions|null|undefined} + */ +google.maps.places.Place.prototype.parkingOptions; + +/** + * Payment options provided by the place. undefined if the payment + * options data have not been called for from the server. + * @type {google.maps.places.PaymentOptions|null|undefined} + */ +google.maps.places.Place.prototype.paymentOptions; + +/** + * Photos of this Place. The collection will contain up to ten {@link + * google.maps.places.Photo} objects. + * @type {!Array|undefined} + */ +google.maps.places.Place.prototype.photos; + +/** + * @type {google.maps.places.PlusCode|null|undefined} + */ +google.maps.places.Place.prototype.plusCode; + +/** + * The price level of the Place. This property can return any of the following + * values
  • Free
  • + *
  • Inexpensive
  • Moderate
  • + *
  • Expensive
  • Very Expensive
+ * @type {google.maps.places.PriceLevel|null|undefined} + */ +google.maps.places.Place.prototype.priceLevel; + +/** + * The location's primary type. null if there is no type. + * undefined if the type data has not been loaded from the server. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.primaryType; + +/** + * The location's primary type display name. null if there is + * no type. undefined if the type data has not been loaded from the + * server. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.primaryTypeDisplayName; + +/** + * The language of the location's primary type display name. + * null if there is no type. undefined if the type + * data has not been loaded from the server. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.primaryTypeDisplayNameLanguageCode; + +/** + * A rating, between 1.0 to 5.0, based on user reviews of this Place. + * @type {number|null|undefined} + */ +google.maps.places.Place.prototype.rating; + +/** + * @type {google.maps.places.OpeningHours|null|undefined} + */ +google.maps.places.Place.prototype.regularOpeningHours; + +/** + * The requested language for this place. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.requestedLanguage; + +/** + * The requested region for this place. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.requestedRegion; + +/** + * A list of reviews for this Place. + * @type {!Array|undefined} + */ +google.maps.places.Place.prototype.reviews; + +/** + * Whether a place serves beer. Returns 'true' or 'false' if the + * value is known. Returns 'null' if the value is unknown. Returns + * 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesBeer; + +/** + * Whether a place serves breakfast. Returns 'true' or 'false' + * if the value is known. Returns 'null' if the value is unknown. + * Returns 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesBreakfast; + +/** + * Whether a place serves brunch. Returns 'true' or 'false' if + * the value is known. Returns 'null' if the value is unknown. Returns + * 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesBrunch; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesCocktails; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesCoffee; + +/** + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesDessert; + +/** + * Whether a place serves dinner. Returns 'true' or 'false' if + * the value is known. Returns 'null' if the value is unknown. Returns + * 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesDinner; + +/** + * Whether a place serves lunch. Returns 'true' or 'false' if + * the value is known. Returns 'null' if the value is unknown. Returns + * 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesLunch; + +/** + * Whether a place serves vegetarian food. Returns 'true' or + * 'false' if the value is known. Returns 'null' if the value is + * unknown. Returns 'undefined' if this field has not yet been + * requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesVegetarianFood; + +/** + * Whether a place serves wine. Returns 'true' or 'false' if the + * value is known. Returns 'null' if the value is unknown. Returns + * 'undefined' if this field has not yet been requested. + * @type {boolean|null|undefined} + */ +google.maps.places.Place.prototype.servesWine; + +/** + * URI to the svg image mask resource that can be used to represent a place’s + * category. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.svgIconMaskURI; + +/** + * An array of types + * for this Place (for example, ["political", + * "locality"] or ["restaurant", + * "establishment"]). + * @type {!Array|undefined} + */ +google.maps.places.Place.prototype.types; + +/** + * The number of user ratings which contributed to this Place’s {@link + * google.maps.places.Place.rating}. + * @type {number|null|undefined} + */ +google.maps.places.Place.prototype.userRatingCount; + +/** + * The offset from UTC of the Place’s current timezone, in minutes. For example, + * Austrialian Eastern Standard Time (GMT+10) in daylight savings is 11 hours + * ahead of UTC, so the utc_offset_minutes will be + * 660. For timezones behind UTC, the offset is negative. For + * example, the utc_offset_minutes is -60 for Cape + * Verde. + * @type {number|null|undefined} + */ +google.maps.places.Place.prototype.utcOffsetMinutes; + +/** + * The preferred viewport when displaying this Place on a map. + * @type {google.maps.LatLngBounds|null|undefined} + */ +google.maps.places.Place.prototype.viewport; + +/** + * The authoritative website for this Place, such as a business' homepage. + * @type {string|null|undefined} + */ +google.maps.places.Place.prototype.websiteURI; + +/** + * @type {google.maps.places.OpeningHours|null|undefined} + * @deprecated Use {@link google.maps.places.Place.regularOpeningHours} instead. + */ +google.maps.places.Place.prototype.openingHours; + +/** + * @type {boolean|null|undefined} + * @deprecated This field was accidentally documented, but has never actually + * been populated. + */ +google.maps.places.Place.prototype.hasWiFi; + +/** + * Text query based place search. + * @param {!google.maps.places.SearchByTextRequest} request + * @return {!Promise<{places:!Array}>} + */ +google.maps.places.Place.searchByText = function(request) {}; + +/** + * Search for nearby places. + * @param {!google.maps.places.SearchNearbyRequest} request + * @return {!Promise<{places:!Array}>} + */ +google.maps.places.Place.searchNearby = function(request) {}; + +/** + * @param {!google.maps.places.FetchFieldsRequest} options + * @return {!Promise<{place:!google.maps.places.Place}>} + */ +google.maps.places.Place.prototype.fetchFields = function(options) {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * Calculates the Date representing the next OpeningHoursTime. Returns undefined + * if the data is insufficient to calculate the result, or this place is not + * operational. + * @param {!Date=} date + * @return {!Promise} + */ +google.maps.places.Place.prototype.getNextOpeningTime = function(date) {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * Check if the place is open at the given datetime. Resolves with + * undefined if the known data for the location is insufficient to + * calculate this, e.g. if the opening hours are unregistered. + * @param {!Date=} date Defaults to now. + * @return {!Promise} + */ +google.maps.places.Place.prototype.isOpen = function(date) {}; + +/** + * @return {!Object} a JSON object with all the requested Place properties. + * @override + */ +google.maps.places.Place.prototype.toJSON = function() {}; + +/** + * Defines information about an aspect of the place that users have reviewed. + * @record + * @deprecated This interface is no longer used. + */ +google.maps.places.PlaceAspectRating = function() {}; + +/** + * The rating of this aspect. For individual reviews this is an integer from 0 + * to 3. For aggregated ratings of a place this is an integer from 0 to 30. + * @type {number} + */ +google.maps.places.PlaceAspectRating.prototype.rating; + +/** + * The aspect type. For example, "food", "decor", + * "service", or "overall". + * @type {string} + */ +google.maps.places.PlaceAspectRating.prototype.type; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * PlaceAutocompleteElement is an HTMLElement subclass which + * provides a UI component for the Places Autocomplete API. + * + * Access by calling `const {PlaceAutocompleteElement} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.places.PlaceAutocompleteElementOptions} options + * @implements {google.maps.places.PlaceAutocompleteElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.places.PlaceAutocompleteElement = function(options) {}; + +/** + * The component restrictions. Component restrictions are used to restrict + * predictions to only those within the parent component. For example, the + * country. + * @type {!google.maps.places.ComponentRestrictions|null} + */ +google.maps.places.PlaceAutocompleteElement.prototype.componentRestrictions; + +/** + * A soft boundary or hint to use when searching for places. + * @type {!google.maps.places.LocationBias|null} + */ +google.maps.places.PlaceAutocompleteElement.prototype.locationBias; + +/** + * Bounds to constrain search results. + * @type {!google.maps.places.LocationRestriction|null} + */ +google.maps.places.PlaceAutocompleteElement.prototype.locationRestriction; + +/** + * The name to be used for the input element. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#name + * for details. Follows the same behavior as the name attribute for inputs. Note + * that this is the name that will be used when a form is submitted. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form + * for details. + * @type {string|null} + */ +google.maps.places.PlaceAutocompleteElement.prototype.name; + +/** + * A language identifier for the language in which the results should be + * returned, if possible. Results in the selected language may be given a higher + * ranking, but suggestions are not restricted to this language. See the list of + * supported languages. + * @type {string|null} + */ +google.maps.places.PlaceAutocompleteElement.prototype.requestedLanguage; + +/** + * A region code which is used for result formatting and for result filtering. + * It does not restrict the suggestions to this country. The region code accepts + * a ccTLD + * ("top-level domain") two-character value. Most ccTLD codes are + * identical to ISO 3166-1 codes, with some notable exceptions. For example, the + * United Kingdom's ccTLD is "uk" (.co.uk) while its + * ISO 3166-1 code is "gb" (technically for the entity of "The + * United Kingdom of Great Britain and Northern Ireland"). + * @type {string|null} + */ +google.maps.places.PlaceAutocompleteElement.prototype.requestedRegion; + +/** + * The types of predictions to be returned. For supported types, see the + * developer's guide. If no types are specified, all types will be + * returned. + * @type {!Array|null} + */ +google.maps.places.PlaceAutocompleteElement.prototype.types; + + + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Options for constructing a PlaceAutocompleteElement. + * @record + */ +google.maps.places.PlaceAutocompleteElementOptions = function() {}; + +/** + * See {@link google.maps.places.PlaceAutocompleteElement.componentRestrictions} + * @type {!google.maps.places.ComponentRestrictions|null|undefined} + */ +google.maps.places.PlaceAutocompleteElementOptions.prototype + .componentRestrictions; + +/** + * See {@link google.maps.places.PlaceAutocompleteElement.locationBias} + * @type {!google.maps.places.LocationBias|null|undefined} + */ +google.maps.places.PlaceAutocompleteElementOptions.prototype.locationBias; + +/** + * See {@link google.maps.places.PlaceAutocompleteElement.locationRestriction} + * @type {!google.maps.places.LocationRestriction|null|undefined} + */ +google.maps.places.PlaceAutocompleteElementOptions.prototype + .locationRestriction; + +/** + * See {@link google.maps.places.PlaceAutocompleteElement.requestedLanguage} + * @type {string|null|undefined} + */ +google.maps.places.PlaceAutocompleteElementOptions.prototype.requestedLanguage; + +/** + * See {@link google.maps.places.PlaceAutocompleteElement.requestedRegion} + * @type {string|null|undefined} + */ +google.maps.places.PlaceAutocompleteElementOptions.prototype.requestedRegion; + +/** + * See {@link google.maps.places.PlaceAutocompleteElement.types} + * @type {!Array|null|undefined} + */ +google.maps.places.PlaceAutocompleteElementOptions.prototype.types; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * This event is created after the user selects a place with the Place + * Autocomplete Element. Access the selection with event.place. + * + * Access by calling `const {PlaceAutocompletePlaceSelectEvent} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {Event} + * @constructor + */ +google.maps.places.PlaceAutocompletePlaceSelectEvent = function() {}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * @type {!google.maps.places.Place} + */ +google.maps.places.PlaceAutocompletePlaceSelectEvent.prototype.place; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * This event is emitted by the PlaceAutocompleteElement when there is an issue + * with the network request. + * + * Access by calling `const {PlaceAutocompleteRequestErrorEvent} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {Event} + * @constructor + */ +google.maps.places.PlaceAutocompleteRequestErrorEvent = function() {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * An HTML element that displays details for a place. Use the + * configureFromPlace() or configureFromLocation() + * methods to specify the content to be rendered. + * + * Access by calling `const {PlaceDetailsElement} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.places.PlaceDetailsElementOptions=} options + * @implements {google.maps.places.PlaceDetailsElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.places.PlaceDetailsElement = function(options) {}; + +/** + * Read only. Place object containing the ID, location, and + * viewport of the currently rendered place. + * @type {!google.maps.places.Place|undefined} + */ +google.maps.places.PlaceDetailsElement.prototype.place; + +/** + * The size variant of the PlaceDetailsElement. By default, the element will + * display PlaceDetailsSize.X_LARGE. + * @type {!google.maps.places.PlaceDetailsSize|null|undefined} + */ +google.maps.places.PlaceDetailsElement.prototype.size; + + + +/** + * Configures the widget from a LatLng using reverse geocoding. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} location The location + * to render place details for. + * @return {!Promise} A promise that resolves once place data is loaded + * and rendered. + */ +google.maps.places.PlaceDetailsElement.prototype.configureFromLocation = + function(location) {}; + +/** + * Configures the widget from a Place object or Place ID. + * @param {!google.maps.places.Place|!{id:string}} place The place to render + * details for. + * @return {!Promise} A promise that resolves once place data is loaded + * and rendered. + */ +google.maps.places.PlaceDetailsElement.prototype.configureFromPlace = function( + place) {}; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Options for PlaceDetailsElement. + * @record + */ +google.maps.places.PlaceDetailsElementOptions = function() {}; + +/** + * See {@link google.maps.places.PlaceDetailsElement.size} + * @type {!google.maps.places.PlaceDetailsSize|null|undefined} + */ +google.maps.places.PlaceDetailsElementOptions.prototype.size; + +/** + * A Place details query to be sent to the PlacesService. + * @record + */ +google.maps.places.PlaceDetailsRequest = function() {}; + +/** + * Fields to be included in the details response, which + * will be billed for. If no fields are specified or + * ['ALL'] is passed in, all available fields will be + * returned and billed for (this is not recommended for production deployments). + * For a list of fields see {@link google.maps.places.PlaceResult}. Nested + * fields can be specified with dot-paths (for example, + * "geometry.location"). + * @type {!Array|undefined} + */ +google.maps.places.PlaceDetailsRequest.prototype.fields; + +/** + * A language identifier for the language in which details should be returned. + * See the list + * of supported languages. + * @type {string|null|undefined} + */ +google.maps.places.PlaceDetailsRequest.prototype.language; + +/** + * The Place ID of the Place for which details are being requested. + * @type {string} + */ +google.maps.places.PlaceDetailsRequest.prototype.placeId; + +/** + * A region code of the user's region. This can affect which photos may be + * returned, and possibly other things. The region code accepts a ccTLD + * ("top-level domain") two-character value. Most ccTLD codes are + * identical to ISO 3166-1 codes, with some notable exceptions. For example, the + * United Kingdom's ccTLD is "uk" (.co.uk) while its + * ISO 3166-1 code is "gb" (technically for the entity of "The + * United Kingdom of Great Britain and Northern Ireland"). + * @type {string|null|undefined} + */ +google.maps.places.PlaceDetailsRequest.prototype.region; + +/** + * Unique reference used to bundle the details request with an autocomplete + * session. + * @type {!google.maps.places.AutocompleteSessionToken|undefined} + */ +google.maps.places.PlaceDetailsRequest.prototype.sessionToken; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Size variants for PlaceDetailsElement. + * + * Access by calling `const {PlaceDetailsSize} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.places.PlaceDetailsSize = { + /** + * Large variant including a large image, basic information, and contact + * information. + */ + LARGE: 'LARGE', + /** + * Medium variant including a large image and basic information. + */ + MEDIUM: 'MEDIUM', + /** + * Small variant including a small image and basic information. + */ + SMALL: 'SMALL', + /** + * Extra large variant including a photo collage, reviews, and comprehensive + * place information. + */ + X_LARGE: 'X_LARGE', +}; + +/** + * Defines information about the geometry of a Place. + * @record + */ +google.maps.places.PlaceGeometry = function() {}; + +/** + * The Place’s position. + * @type {!google.maps.LatLng|undefined} + */ +google.maps.places.PlaceGeometry.prototype.location; + +/** + * The preferred viewport when displaying this Place on a map. This property + * will be null if the preferred viewport for the Place is not + * known. Only available with {@link + * google.maps.places.PlacesService.getDetails}. + * @type {!google.maps.LatLngBounds|undefined} + */ +google.maps.places.PlaceGeometry.prototype.viewport; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * An HTML element that displays the results of a place search in a list. Use + * the configureFromSearchByTextRequest() or + * configureFromSearchNearbyRequest() methods to specify the + * request to render results for. + * + * Access by calling `const {PlaceListElement} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.places.PlaceListElementOptions=} options + * @implements {google.maps.places.PlaceListElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.places.PlaceListElement = function(options) {}; + +/** + * Read only. Array of Place objects containing the IDs, locations, + * and viewports of the currently rendered places. + * @type {!Array} + */ +google.maps.places.PlaceListElement.prototype.places; + +/** + * Whether or not the list items are selectable. If true, the list items will be + * buttons that dispatch the gmp-placeselect event when clicked. + * Accessible keyboard navigation and selection is also supported. + * @type {boolean} + */ +google.maps.places.PlaceListElement.prototype.selectable; + + + +/** + * Configures the widget to render search results from a Places Text Search API + * request. + * @param {!google.maps.places.SearchByTextRequest} request The request to + * render results for. The fields property of the + * SearchByTextRequest is not required. + * @return {!Promise} A promise that resolves once place data is loaded + * and rendered. + */ +google.maps.places.PlaceListElement.prototype.configureFromSearchByTextRequest = + function(request) {}; + +/** + * Configures the widget to render search results from a Places Nearby Search + * API request. + * @param {!google.maps.places.SearchNearbyRequest} request The request to + * render results for. The fields property of the + * SearchNearbyRequest is not required. + * @return {!Promise} A promise that resolves once place data is loaded + * and rendered. + */ +google.maps.places.PlaceListElement.prototype.configureFromSearchNearbyRequest = + function(request) {}; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Options for PlaceListElement. + * @record + */ +google.maps.places.PlaceListElementOptions = function() {}; + +/** + * See {@link google.maps.places.PlaceListElement.selectable} + * @type {boolean|null|undefined} + */ +google.maps.places.PlaceListElementOptions.prototype.selectable; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * This event is emitted by the PlaceListElement when the user + * selects a place. + * + * Access by calling `const {PlaceListPlaceSelectEvent} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {Event} + * @constructor + */ +google.maps.places.PlaceListPlaceSelectEvent = function() {}; + +/** + * The list index of the selected place. + * @type {number} + */ +google.maps.places.PlaceListPlaceSelectEvent.prototype.index; + +/** + * A Place object containing the ID, location, and viewport of the + * selected place. + * @type {!google.maps.places.Place} + */ +google.maps.places.PlaceListPlaceSelectEvent.prototype.place; + +/** + * Defines information about the opening hours of a Place. + * @record + */ +google.maps.places.PlaceOpeningHours = function() {}; + +/** + * Opening periods covering for each day of the week, starting from Sunday, in + * chronological order. Days in which the Place is not open are not included. + * Only available with {@link google.maps.places.PlacesService.getDetails}. + * @type {!Array|undefined} + */ +google.maps.places.PlaceOpeningHours.prototype.periods; + +/** + * An array of seven strings representing the formatted opening hours for each + * day of the week. The Places Service will format and localize the opening + * hours appropriately for the current language. The ordering of the elements in + * this array depends on the language. Some languages start the week on Monday + * while others start on Sunday. Only available with {@link + * google.maps.places.PlacesService.getDetails}. Other calls may return an empty + * array. + * @type {!Array|undefined} + */ +google.maps.places.PlaceOpeningHours.prototype.weekday_text; + +/** + * Whether the Place is open at the current time. + * @type {boolean|undefined} + * @deprecated open_now is deprecated as of November 2019. Use + * the {@link google.maps.places.PlaceOpeningHours.isOpen} method from + * a {@link google.maps.places.PlacesService.getDetails} result instead. See + * https://goo.gle/js-open-now + */ +google.maps.places.PlaceOpeningHours.prototype.open_now; + +/** + * Check whether the place is open now (when no date is passed), or at the given + * date. If this place does not have {@link + * google.maps.places.PlaceResult.utc_offset_minutes} or {@link + * google.maps.places.PlaceOpeningHours.periods} then undefined is + * returned ({@link google.maps.places.PlaceOpeningHours.periods} is only + * available via {@link google.maps.places.PlacesService.getDetails}). This + * method does not take exceptional hours, such as holiday hours, into + * consideration. + * @param {!Date=} date + * @return {boolean|undefined} + */ +google.maps.places.PlaceOpeningHours.prototype.isOpen = function(date) {}; + +/** + * Defines structured information about the opening hours of a Place. + * Note: If a Place is always open, the + * close section will be missing from the response. Clients can + * rely on always-open being represented as an open period + * containing day with value 0 and time + * with value "0000", and no close. + * @record + */ +google.maps.places.PlaceOpeningHoursPeriod = function() {}; + +/** + * The closing time for the Place. + * @type {!google.maps.places.PlaceOpeningHoursTime|undefined} + */ +google.maps.places.PlaceOpeningHoursPeriod.prototype.close; + +/** + * The opening time for the Place. + * @type {!google.maps.places.PlaceOpeningHoursTime} + */ +google.maps.places.PlaceOpeningHoursPeriod.prototype.open; + +/** + * Defines when a Place opens or closes. + * @record + */ +google.maps.places.PlaceOpeningHoursTime = function() {}; + +/** + * The days of the week, as a number in the range [0, + * 6], starting on Sunday. For example, 2 means + * Tuesday. + * @type {number} + */ +google.maps.places.PlaceOpeningHoursTime.prototype.day; + +/** + * The hours of the {@link google.maps.places.PlaceOpeningHoursTime.time} as a + * number, in the range [0, 23]. This will be reported + * in the Place’s time zone. + * @type {number} + */ +google.maps.places.PlaceOpeningHoursTime.prototype.hours; + +/** + * The minutes of the {@link google.maps.places.PlaceOpeningHoursTime.time} as a + * number, in the range [0, 59]. This will be reported + * in the Place’s time zone. + * @type {number} + */ +google.maps.places.PlaceOpeningHoursTime.prototype.minutes; + +/** + * The timestamp (as milliseconds since the epoch, suitable for use with + * new Date()) representing the next occurrence of this + * PlaceOpeningHoursTime. It is calculated from the {@link + * google.maps.places.PlaceOpeningHoursTime.day} of week, the {@link + * google.maps.places.PlaceOpeningHoursTime.time}, and the {@link + * google.maps.places.PlaceResult.utc_offset_minutes}. If the {@link + * google.maps.places.PlaceResult.utc_offset_minutes} is undefined, + * then nextDate will be undefined. + * @type {number|undefined} + */ +google.maps.places.PlaceOpeningHoursTime.prototype.nextDate; + +/** + * The time of day in 24-hour "hhmm" format. Values are in the range + * ["0000", "2359"]. The time will be reported in the + * Place’s time zone. + * @type {string} + */ +google.maps.places.PlaceOpeningHoursTime.prototype.time; + +/** + * Options for constructing a Place. + * @record + */ +google.maps.places.PlaceOptions = function() {}; + +/** + * The unique place id. + * @type {string} + */ +google.maps.places.PlaceOptions.prototype.id; + +/** + * A language identifier for the language in which details should be returned. + * See the list + * of supported languages. + * @type {string|null|undefined} + */ +google.maps.places.PlaceOptions.prototype.requestedLanguage; + +/** + * A region code of the user's region. This can affect which photos may be + * returned, and possibly other things. The region code accepts a ccTLD + * ("top-level domain") two-character value. Most ccTLD codes are + * identical to ISO 3166-1 codes, with some notable exceptions. For example, the + * United Kingdom's ccTLD is "uk" (.co.uk) while its + * ISO 3166-1 code is "gb" (technically for the entity of "The + * United Kingdom of Great Britain and Northern Ireland"). + * @type {string|null|undefined} + */ +google.maps.places.PlaceOptions.prototype.requestedRegion; + +/** + * Represents a photo element of a Place. + * @record + */ +google.maps.places.PlacePhoto = function() {}; + +/** + * The height of the photo in pixels. + * @type {number} + */ +google.maps.places.PlacePhoto.prototype.height; + +/** + * Attribution text to be displayed for this photo. + * @type {!Array} + */ +google.maps.places.PlacePhoto.prototype.html_attributions; + +/** + * The width of the photo in pixels. + * @type {number} + */ +google.maps.places.PlacePhoto.prototype.width; + +/** + * Returns the image URL corresponding to the specified options. + * @param {!google.maps.places.PhotoOptions=} opts + * @return {string} + */ +google.maps.places.PlacePhoto.prototype.getUrl = function(opts) {}; + +/** + * Defines Open Location Codes or "plus + * codes" for a Place. Plus codes can be used as a replacement for + * street addresses in places where they do not exist (where buildings are not + * numbered or streets are not named). + * @record + */ +google.maps.places.PlacePlusCode = function() {}; + +/** + * A plus code with a 1/8000th of a degree by + * 1/8000th of a degree area where the first four characters (the area code) are + * dropped and replaced with a locality description. For example, "9G8F+5W + * Zurich, Switzerland". If no suitable locality that can be found to + * shorten the code then this field is omitted. + * @type {string|undefined} + */ +google.maps.places.PlacePlusCode.prototype.compound_code; + +/** + * A plus code with a 1/8000th of a degree by + * 1/8000th of a degree area. For example, "8FVC9G8F+5W". + * @type {string} + */ +google.maps.places.PlacePlusCode.prototype.global_code; + +/** + * Prediction results for a Place Autocomplete prediction. + * + * Access by calling `const {PlacePrediction} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.PlacePrediction = function() {}; + +/** + * The length of the geodesic in meters from origin if + * origin is specified. + * @type {number|null} + */ +google.maps.places.PlacePrediction.prototype.distanceMeters; + +/** + * Represents the name of the Place. + * @type {!google.maps.places.FormattableText|null} + */ +google.maps.places.PlacePrediction.prototype.mainText; + +/** + * The unique identifier of the suggested Place. This identifier can be used in + * other APIs that accept Place IDs. + * @type {string} + */ +google.maps.places.PlacePrediction.prototype.placeId; + +/** + * Represents additional disambiguating features (such as a city or region) to + * further identify the Place. + * @type {!google.maps.places.FormattableText|null} + */ +google.maps.places.PlacePrediction.prototype.secondaryText; + +/** + * Contains the human-readable name for the returned result. For establishment + * results, this is usually the business name and address.

+ * text is recommended for developers who wish to show a single UI + * element. Developers who wish to show two separate, but related, UI elements + * may want to use {@link google.maps.places.PlacePrediction.mainText} + * and {@link google.maps.places.PlacePrediction.secondaryText} instead. + * @type {!google.maps.places.FormattableText} + */ +google.maps.places.PlacePrediction.prototype.text; + +/** + * List of types that apply to this Place from Table A or Table B in https://developers.google.com/maps/documentation/places/web-service/place-types. + * @type {!Array} + */ +google.maps.places.PlacePrediction.prototype.types; + +/** + * Returns a Place representation of this PlacePrediction. A subsequent call + * to {@link google.maps.places.Place.fetchFields} is required to get full Place + * details. + * @return {!google.maps.places.Place} + */ +google.maps.places.PlacePrediction.prototype.toPlace = function() {}; + +/** + * Defines information about a Place. + * @record + */ +google.maps.places.PlaceResult = function() {}; + +/** + * The collection of address components for this Place’s location. Only + * available with {@link google.maps.places.PlacesService.getDetails}. + * @type {!Array|undefined} + */ +google.maps.places.PlaceResult.prototype.address_components; + +/** + * The representation of the Place’s address in the adr microformat. Only available + * with {@link google.maps.places.PlacesService.getDetails}. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.adr_address; + +/** + * The rated aspects of this Place, based on Google and Zagat user reviews. The + * ratings are on a scale of 0 to 30. + * @type {!Array|undefined} + */ +google.maps.places.PlaceResult.prototype.aspects; + +/** + * A flag indicating the operational status of the Place, if it is a business + * (indicates whether the place is operational, or closed either temporarily or + * permanently). If no data is available, the flag is not present in search or + * details responses. + * @type {!google.maps.places.BusinessStatus|undefined} + */ +google.maps.places.PlaceResult.prototype.business_status; + +/** + * The Place’s full address. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.formatted_address; + +/** + * The Place’s phone number, formatted according to the + * number's regional convention. Only available with {@link + * google.maps.places.PlacesService.getDetails}. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.formatted_phone_number; + +/** + * The Place’s geometry-related information. + * @type {!google.maps.places.PlaceGeometry|undefined} + */ +google.maps.places.PlaceResult.prototype.geometry; + +/** + * Attribution text to be displayed for this Place result. Available + * html_attributions are always returned regardless of what + * fields have been requested, and must be displayed. + * @type {!Array|undefined} + */ +google.maps.places.PlaceResult.prototype.html_attributions; + +/** + * URL to an image resource that can be used to represent this Place’s category. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.icon; + +/** + * Background color for use with a Place's icon. See also {@link + * google.maps.places.PlaceResult.icon_mask_base_uri}. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.icon_background_color; + +/** + * A truncated URL to an icon mask. Access different icon types by appending a + * file extension to the end (i.e. .svg or .png). + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.icon_mask_base_uri; + +/** + * The Place’s phone number in international format. International format + * includes the country code, and is prefixed with the plus (+) sign. Only + * available with {@link google.maps.places.PlacesService.getDetails}. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.international_phone_number; + +/** + * The Place’s name. Note: In the case of user entered Places, this is the raw + * text, as typed by the user. Please exercise caution when using this data, as + * malicious users may try to use it as a vector for code injection attacks (See + * + * http://en.wikipedia.org/wiki/Code_injection). + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.name; + +/** + * Defines when the Place opens or closes. + * @type {!google.maps.places.PlaceOpeningHours|undefined} + */ +google.maps.places.PlaceResult.prototype.opening_hours; + +/** + * Photos of this Place. The collection will contain up to ten {@link + * google.maps.places.PlacePhoto} objects. + * @type {!Array|undefined} + */ +google.maps.places.PlaceResult.prototype.photos; + +/** + * A unique identifier for the Place. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.place_id; + +/** + * Defines Open Location Codes or "plus + * codes" for the Place. + * @type {!google.maps.places.PlacePlusCode|undefined} + */ +google.maps.places.PlaceResult.prototype.plus_code; + +/** + * The price level of the Place, on a scale of 0 to 4. Price levels are + * interpreted as follows:
    + *
  • 0: Free
  • 1: Inexpensive
  • 2: + * Moderate
  • 3: Expensive
  • 4: Very Expensive + *
+ * @type {number|undefined} + */ +google.maps.places.PlaceResult.prototype.price_level; + +/** + * A rating, between 1.0 to 5.0, based on user reviews of this Place. + * @type {number|undefined} + */ +google.maps.places.PlaceResult.prototype.rating; + +/** + * A list of reviews of this Place. Only available with {@link + * google.maps.places.PlacesService.getDetails}. + * @type {!Array|undefined} + */ +google.maps.places.PlaceResult.prototype.reviews; + +/** + * An array of + * types for this Place (for example, ["political", "locality"] + * or ["restaurant", "establishment"]). + * @type {!Array|undefined} + */ +google.maps.places.PlaceResult.prototype.types; + +/** + * URL of the official Google page for this place. This is the Google-owned page + * that contains the best available information about the Place. Only available + * with {@link google.maps.places.PlacesService.getDetails}. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.url; + +/** + * The number of user ratings which contributed to this Place’s {@link + * google.maps.places.PlaceResult.rating}. + * @type {number|undefined} + */ +google.maps.places.PlaceResult.prototype.user_ratings_total; + +/** + * The offset from UTC of the Place’s current timezone, in minutes. For example, + * Sydney, Australia in daylight savings is 11 hours ahead of UTC, so the + * utc_offset_minutes will be 660. For timezones + * behind UTC, the offset is negative. For example, the + * utc_offset_minutes is -60 for Cape Verde. Only + * available with {@link google.maps.places.PlacesService.getDetails}. + * @type {number|undefined} + */ +google.maps.places.PlaceResult.prototype.utc_offset_minutes; + +/** + * The simplified address for the Place, including the street name, street + * number, and locality, but not the province/state, postal code, or country. + * For example, Google's Sydney, Australia office has a vicinity value of + * "48 Pirrama Road, Pyrmont". Only available with {@link + * google.maps.places.PlacesService.getDetails}. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.vicinity; + +/** + * The authoritative website for this Place, such as a business' homepage. + * Only available with {@link google.maps.places.PlacesService.getDetails}. + * @type {string|undefined} + */ +google.maps.places.PlaceResult.prototype.website; + +/** + * The offset from UTC of the Place’s current timezone, in minutes. For example, + * Sydney, Australia in daylight savings is 11 hours ahead of UTC, so the + * utc_offset will be 660. For timezones behind UTC, + * the offset is negative. For example, the utc_offset is + * -60 for Cape Verde. Only available with {@link + * google.maps.places.PlacesService.getDetails}. + * @type {number|undefined} + * @deprecated utc_offset is deprecated as of November 2019. + * Use {@link google.maps.places.PlaceResult.utc_offset_minutes} instead. + * See https://goo.gle/js-open-now + */ +google.maps.places.PlaceResult.prototype.utc_offset; + +/** + * A flag indicating whether the Place is closed, either permanently or + * temporarily. If the place is operational, or if no data is available, the + * flag is absent from the response. + * @type {boolean|undefined} + * @deprecated permanently_closed is deprecated as of May 2020 and + * will be turned off in May 2021. Use {@link + * google.maps.places.PlaceResult.business_status} instead as + * permanently_closed does not distinguish between temporary + * and permanent closures. + */ +google.maps.places.PlaceResult.prototype.permanently_closed; + +/** + * Represents a single review of a place. + * @record + */ +google.maps.places.PlaceReview = function() {}; + +/** + * The name of the reviewer. + * @type {string} + */ +google.maps.places.PlaceReview.prototype.author_name; + +/** + * A URL to the reviewer's profile. This will be undefined when + * the reviewer's profile is unavailable. + * @type {string|undefined} + */ +google.maps.places.PlaceReview.prototype.author_url; + +/** + * An IETF language code indicating the language in which this review is + * written. Note that this code includes only the main language tag without any + * secondary tag indicating country or region. For example, all the English + * reviews are tagged as 'en' rather than 'en-AU' or + * 'en-UK'. + * @type {string} + */ +google.maps.places.PlaceReview.prototype.language; + +/** + * A URL to the reviwer's profile image. + * @type {string} + */ +google.maps.places.PlaceReview.prototype.profile_photo_url; + +/** + * The rating of this review, a number between 1.0 and 5.0 (inclusive). + * @type {number|undefined} + */ +google.maps.places.PlaceReview.prototype.rating; + +/** + * A string of formatted recent time, expressing the review time relative to the + * current time in a form appropriate for the language and country. For example + * "a month ago". + * @type {string} + */ +google.maps.places.PlaceReview.prototype.relative_time_description; + +/** + * The text of a review. + * @type {string} + */ +google.maps.places.PlaceReview.prototype.text; + +/** + * Timestamp for the review, expressed in seconds since epoch. + * @type {number} + */ +google.maps.places.PlaceReview.prototype.time; + +/** + * The aspects rated by the review. The ratings on a scale of 0 to 3. + * @type {!Array|undefined} + * @deprecated This field is no longer available. + */ +google.maps.places.PlaceReview.prototype.aspects; + +/** + * An object used to fetch additional pages of Places results. + * @record + */ +google.maps.places.PlaceSearchPagination = function() {}; + +/** + * Indicates if further results are available. true when there is + * an additional results page. + * @type {boolean} + */ +google.maps.places.PlaceSearchPagination.prototype.hasNextPage; + +/** + * Fetches the next page of results. Uses the same callback function that was + * provided to the first search request. + * @return {void} + */ +google.maps.places.PlaceSearchPagination.prototype.nextPage = function() {}; + +/** + * A Place search query to be sent to the PlacesService. + * @record + */ +google.maps.places.PlaceSearchRequest = function() {}; + +/** + * The bounds within which to search for Places. Both location and + * radius will be ignored if bounds is set. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.bounds; + +/** + * A term to be matched against all available fields, including but not limited + * to name, type, and address, as well as customer reviews and other third-party + * content. + * @type {string|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.keyword; + +/** + * A language identifier for the language in which names and addresses should be + * returned, when possible. See the list of + * supported languages. + * @type {string|null|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.language; + +/** + * The location around which to search for Places. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.location; + +/** + * Restricts results to only those places at the specified price level or lower. + * Valid values are in the range from 0 (most affordable) to 4 (most expensive), + * inclusive. Must be greater than or equal to minPrice , if + * specified. + * @type {number|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.maxPriceLevel; + +/** + * Restricts results to only those places at the specified price level or + * higher. Valid values are in the range from 0 (most affordable) to 4 (most + * expensive), inclusive. Must be less than or equal to maxPrice, + * if specified. + * @type {number|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.minPriceLevel; + +/** + * Restricts results to only those places that are open right now. + * @type {boolean|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.openNow; + +/** + * The distance from the given location within which to search for Places, in + * meters. The maximum allowed value is 50 000. + * @type {number|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.radius; + +/** + * Specifies the ranking method to use when returning results. Note that when + * rankBy is set to DISTANCE, you must specify a + * location but you cannot specify a radius or + * bounds. + * @default {@link google.maps.places.RankBy.PROMINENCE} + * @type {!google.maps.places.RankBy|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.rankBy; + +/** + * Searches for places of the given type. The type is translated to the local + * language of the request's target location and used as a query string. If + * a query is also provided, it is concatenated to the localized type string. + * Results of a different type are dropped from the response. Use this field to + * perform language and region independent categorical searches. Valid types are + * given here. + * @type {string|undefined} + */ +google.maps.places.PlaceSearchRequest.prototype.type; + +/** + * Equivalent to keyword. Values in this field are combined with + * values in the keyword field and passed as part of the same + * search string. + * @type {string|undefined} + * @deprecated Use keyword instead. + */ +google.maps.places.PlaceSearchRequest.prototype.name; + +/** + * Contains methods related to searching for places and retrieving details about + * a place. + * + * Access by calling `const {PlacesService} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!HTMLDivElement|!google.maps.Map} attrContainer + * @constructor + */ +google.maps.places.PlacesService = function(attrContainer) {}; + +/** + * Retrieves a list of places based on a phone number. In most cases there + * should be just one item in the result list, however if the request is + * ambiguous more than one result may be returned. The {@link + * google.maps.places.PlaceResult}s passed to the callback are subsets of a + * full {@link google.maps.places.PlaceResult}. Your app can get a more + * detailed {@link google.maps.places.PlaceResult} for each place by + * calling {@link google.maps.places.PlacesService.getDetails} and passing + * the {@link google.maps.places.PlaceResult.place_id} for the desired place. + * @param {!google.maps.places.FindPlaceFromPhoneNumberRequest} request + * @param {function((!Array|null), + * !google.maps.places.PlacesServiceStatus): void} callback + * @return {undefined} + */ +google.maps.places.PlacesService.prototype.findPlaceFromPhoneNumber = function( + request, callback) {}; + +/** + * Retrieves a list of places based on a query string. In most cases there + * should be just one item in the result list, however if the request is + * ambiguous more than one result may be returned. The {@link + * google.maps.places.PlaceResult}s passed to the callback are subsets of a + * full {@link google.maps.places.PlaceResult}. Your app can get a more + * detailed {@link google.maps.places.PlaceResult} for each place by + * calling {@link google.maps.places.PlacesService.getDetails} and passing + * the {@link google.maps.places.PlaceResult.place_id} for the desired place. + * @param {!google.maps.places.FindPlaceFromQueryRequest} request + * @param {function((!Array|null), + * !google.maps.places.PlacesServiceStatus): void} callback + * @return {undefined} + */ +google.maps.places.PlacesService.prototype.findPlaceFromQuery = function( + request, callback) {}; + +/** + * Retrieves details about the place identified by the given + * placeId. + * @param {!google.maps.places.PlaceDetailsRequest} request + * @param {function((!google.maps.places.PlaceResult|null), + * !google.maps.places.PlacesServiceStatus): void} callback + * @return {undefined} + */ +google.maps.places.PlacesService.prototype.getDetails = function( + request, callback) {}; + +/** + * Retrieves a list of places near a particular location, based on keyword or + * type. Location must always be specified, either by passing a + * LatLngBounds, or location and radius + * parameters. The {@link google.maps.places.PlaceResult}s passed to the + * callback are subsets of the full {@link google.maps.places.PlaceResult}. Your + * app can get a more detailed {@link google.maps.places.PlaceResult} for each + * place by sending a Place + * Details request passing the {@link + * google.maps.places.PlaceResult.place_id} for the desired place. The {@link + * google.maps.places.PlaceSearchPagination} object can be used to fetch + * additional pages of results (null if this is the last page of results or if + * there is only one page of results). + * @param {!google.maps.places.PlaceSearchRequest} request + * @param {function((!Array|null), + * !google.maps.places.PlacesServiceStatus, + * (!google.maps.places.PlaceSearchPagination|null)): void} callback + * @return {undefined} + */ +google.maps.places.PlacesService.prototype.nearbySearch = function( + request, callback) {}; + +/** + * Retrieves a list of places based on a query string (for example, "pizza + * in New York", or "shoe stores near Ottawa"). Location + * parameters are optional; when the location is specified, results are only + * biased toward nearby results rather than restricted to places inside the + * area. Use textSearch when you want to search for places using an + * arbitrary string, and in cases where you may not want to restrict search + * results to a particular location. The PlaceSearchPagination + * object can be used to fetch additional pages of results (null if this is the + * last page of results or if there is only one page of results). + * @param {!google.maps.places.TextSearchRequest} request + * @param {function((!Array|null), + * !google.maps.places.PlacesServiceStatus, + * (!google.maps.places.PlaceSearchPagination|null)): void} callback + * @return {undefined} + */ +google.maps.places.PlacesService.prototype.textSearch = function( + request, callback) {}; + +/** + * The status returned by the PlacesService on the completion of + * its searches. Specify these by value, or by using the constant's name. + * For example, 'OK' or + * google.maps.places.PlacesServiceStatus.OK. + * + * Access by calling `const {PlacesServiceStatus} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.places.PlacesServiceStatus = { + /** + * This request was invalid. + */ + INVALID_REQUEST: 'INVALID_REQUEST', + /** + * The place referenced was not found. + */ + NOT_FOUND: 'NOT_FOUND', + /** + * The response contains a valid result. + */ + OK: 'OK', + /** + * The application has gone over its request quota. + */ + OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT', + /** + * The application is not allowed to use the PlacesService. + */ + REQUEST_DENIED: 'REQUEST_DENIED', + /** + * The PlacesService request could not be processed due to a + * server error. The request may succeed if you try again. + */ + UNKNOWN_ERROR: 'UNKNOWN_ERROR', + /** + * No result was found for this request. + */ + ZERO_RESULTS: 'ZERO_RESULTS', +}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * + * Access by calling `const {PlusCode} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.PlusCode = function() {}; + +/** + * A plus code with a 1/8000th of a degree by 1/8000th of a degree area where + * the first four characters (the area code) are dropped and replaced with a + * locality description. For example, "9G8F+5W Zurich, Switzerland". + * @type {string|null} + */ +google.maps.places.PlusCode.prototype.compoundCode; + +/** + * A plus code with a 1/8000th of a degree by 1/8000th of a degree area. For + * example, "8FVC9G8F+5W". + * @type {string|null} + */ +google.maps.places.PlusCode.prototype.globalCode; + +/** + * Represents a prediction substring. + * @record + */ +google.maps.places.PredictionSubstring = function() {}; + +/** + * The length of the substring. + * @type {number} + */ +google.maps.places.PredictionSubstring.prototype.length; + +/** + * The offset to the substring's start within the description string. + * @type {number} + */ +google.maps.places.PredictionSubstring.prototype.offset; + +/** + * Represents a prediction term. + * @record + */ +google.maps.places.PredictionTerm = function() {}; + +/** + * The offset, in unicode characters, of the start of this term in the + * description of the place. + * @type {number} + */ +google.maps.places.PredictionTerm.prototype.offset; + +/** + * The value of this term, for example, "Taco Bell". + * @type {string} + */ +google.maps.places.PredictionTerm.prototype.value; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * Price level enum for Place objects. + * + * Access by calling `const {PriceLevel} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.places.PriceLevel = { + EXPENSIVE: 'EXPENSIVE', + FREE: 'FREE', + INEXPENSIVE: 'INEXPENSIVE', + MODERATE: 'MODERATE', + VERY_EXPENSIVE: 'VERY_EXPENSIVE', +}; + +/** + * Represents a single Query Autocomplete prediction. + * @record + */ +google.maps.places.QueryAutocompletePrediction = function() {}; + +/** + * This is the unformatted version of the query suggested by the Places service. + * @type {string} + */ +google.maps.places.QueryAutocompletePrediction.prototype.description; + +/** + * A set of substrings in the place's description that match elements in the + * user's input, suitable for use in highlighting those substrings. Each + * substring is identified by an offset and a length, expressed in unicode + * characters. + * @type {!Array} + */ +google.maps.places.QueryAutocompletePrediction.prototype.matched_substrings; + +/** + * Only available if prediction is a place. A place ID that can be used to + * retrieve details about this place using the place details service (see {@link + * google.maps.places.PlacesService.getDetails}). + * @type {string|undefined} + */ +google.maps.places.QueryAutocompletePrediction.prototype.place_id; + +/** + * Information about individual terms in the above description. Categorical + * terms come first (for example, "restaurant"). Address terms appear + * from most to least specific. For example, "San Francisco", and + * "CA". + * @type {!Array} + */ +google.maps.places.QueryAutocompletePrediction.prototype.terms; + +/** + * A QueryAutocompletion request to be sent to the + * QueryAutocompleteService. + * @record + */ +google.maps.places.QueryAutocompletionRequest = function() {}; + +/** + * Bounds for prediction biasing. Predictions will be biased towards, but not + * restricted to, the given bounds. Both location and + * radius will be ignored if bounds is set. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|undefined} + */ +google.maps.places.QueryAutocompletionRequest.prototype.bounds; + +/** + * The user entered input string. + * @type {string} + */ +google.maps.places.QueryAutocompletionRequest.prototype.input; + +/** + * Location for prediction biasing. Predictions will be biased towards the given + * location and radius. Alternatively, + * bounds can be used. + * @type {!google.maps.LatLng|undefined} + */ +google.maps.places.QueryAutocompletionRequest.prototype.location; + +/** + * The character position in the input term at which the service uses text for + * predictions (the position of the cursor in the input field). + * @type {number|undefined} + */ +google.maps.places.QueryAutocompletionRequest.prototype.offset; + +/** + * The radius of the area used for prediction biasing. The radius + * is specified in meters, and must always be accompanied by a + * location property. Alternatively, bounds can be + * used. + * @type {number|undefined} + */ +google.maps.places.QueryAutocompletionRequest.prototype.radius; + +/** + * Ranking options for a PlaceSearchRequest. + * + * Access by calling `const {RankBy} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {number} + */ +google.maps.places.RankBy = { + /** + * Ranks place results by distance from the location. + */ + DISTANCE: 0, + /** + * Ranks place results by their prominence. + */ + PROMINENCE: 1, +}; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * + * + * Access by calling `const {Review} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.Review = function() {}; + +/** + * The reviewer. + * @type {!google.maps.places.AuthorAttribution|null} + */ +google.maps.places.Review.prototype.authorAttribution; + +/** + * @type {!Date|null} + */ +google.maps.places.Review.prototype.publishTime; + +/** + * The rating of this review, a number between 1.0 and 5.0 (inclusive). + * @type {number|null} + */ +google.maps.places.Review.prototype.rating; + +/** + * A string of formatted recent time, expressing the review time relative to the + * current time in a form appropriate for the language and country. For example + * `"a month ago"'. + * @type {string|null} + */ +google.maps.places.Review.prototype.relativePublishTimeDescription; + +/** + * The text of a review. + * @type {string|null} + */ +google.maps.places.Review.prototype.text; + +/** + * An IETF language code indicating the language in which this review is + * written. Note that this code includes only the main language tag without any + * secondary tag indicating country or region. For example, all the English + * reviews are tagged as 'en' rather than 'en-AU' or + * 'en-UK'. + * @type {string|null} + */ +google.maps.places.Review.prototype.textLanguageCode; + +/** + * A widget that provides query predictions based on a user's text input. It + * attaches to an input element of type text, and listens for text + * entry in that field. The list of predictions is presented as a drop-down + * list, and is updated as text is entered. + * + * Access by calling `const {SearchBox} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!HTMLInputElement} inputField + * @param {?google.maps.places.SearchBoxOptions=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.places.SearchBox = function(inputField, opts) {}; + +/** + * Returns the bounds to which query predictions are biased. + * @return {!google.maps.LatLngBounds|undefined} + */ +google.maps.places.SearchBox.prototype.getBounds = function() {}; + +/** + * Returns the query selected by the user to be used with + * places_changed event. + * @return {!Array|undefined} + */ +google.maps.places.SearchBox.prototype.getPlaces = function() {}; + +/** + * Sets the region to use for biasing query predictions. Results will only be + * biased towards this area and not be completely restricted to it. + * @param {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null} bounds + * @return {undefined} + */ +google.maps.places.SearchBox.prototype.setBounds = function(bounds) {}; + +/** + * The options that can be set on a SearchBox object. + * @record + */ +google.maps.places.SearchBoxOptions = function() {}; + +/** + * The area towards which to bias query predictions. Predictions are biased + * towards, but not restricted to, queries targeting these bounds. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|null|undefined} + */ +google.maps.places.SearchBoxOptions.prototype.bounds; + +/** + * RankPreference enum for SearchByTextRequest. + * + * Access by calling `const {SearchByTextRankPreference} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.places.SearchByTextRankPreference = { + /** + * Ranks results by distance. + */ + DISTANCE: 'DISTANCE', + /** + * Ranks results by relevance. + */ + RELEVANCE: 'RELEVANCE', +}; + +/** + * Request interface for {@link google.maps.places.Place.searchByText}. + * @record + */ +google.maps.places.SearchByTextRequest = function() {}; + +/** + * EV-related options that can be specified for a place search request. + * @type {!google.maps.places.EVSearchOptions|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.evSearchOptions; + +/** + * Required for {@link google.maps.places.Place.searchByText}. Fields to be + * included in the response, which + * will be billed for. If ['*'] is passed in, all + * available fields will be returned and billed for (this is not recommended for + * production deployments). You can request any property in the {@link + * google.maps.places.Place} class as a field. + * @type {!Array|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.fields; + +/** + * The requested place type. Full list of types supported: https://developers.google.com/maps/documentation/places/web-service/place-types. + * Only one included type is supported. See {@link + * google.maps.places.SearchByTextRequest.useStrictTypeFiltering} + * @type {string|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.includedType; + +/** + * Used to restrict the search to places that are currently open. + * @default false + * @type {boolean|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.isOpenNow; + +/** + * Place details will be displayed with the preferred language if available. + * Will default to the browser's language preference. Current list of + * supported languages: https://developers.google.com/maps/faq#languagesupport. + * @type {string|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.language; + +/** + * The region to search. This location serves as a bias which means results + * around given location might be returned. Cannot be set along with + * locationRestriction. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|!google.maps.CircleLiteral|!google.maps.Circle|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.locationBias; + +/** + * The region to search. This location serves as a restriction which means + * results outside given location will not be returned. Cannot be set along with + * locationBias. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.locationRestriction; + +/** + * Maximum number of results to return. It must be between 1 and 20, + * inclusively. + * @type {number|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.maxResultCount; + +/** + * Filter out results whose average user rating is strictly less than this + * limit. A valid value must be an float between 0 and 5 (inclusively) at a 0.5 + * cadence i.e. [0, 0.5, 1.0, ... , 5.0] inclusively. The input rating will be + * rounded up to the nearest 0.5(ceiling). For instance, a rating of 0.6 will + * eliminate all results with a less than 1.0 rating. + * @type {number|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.minRating; + +/** + * Used to restrict the search to places that are marked as certain price + * levels. Any combinations of price levels can be chosen. Defaults to all price + * levels. + * @type {!Array|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.priceLevels; + +/** + * How results will be ranked in the response. + * @default SearchByTextRankPreference.RELEVANCE + * @type {!google.maps.places.SearchByTextRankPreference|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.rankPreference; + +/** + * The Unicode country/region code (CLDR) of the location where the request is + * coming from. This parameter is used to display the place details, like + * region-specific place name, if available. The parameter can affect results + * based on applicable law. For more information, see https://www.unicode.org/cldr/charts/latest/supplemental/territory_language_information.html. + * Note that 3-digit region codes are not currently supported. + * @type {string|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.region; + +/** + * Required. The text query for textual search. + * @type {string|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.textQuery; + +/** + * Used to set strict type filtering for {@link + * google.maps.places.SearchByTextRequest.includedType}. If set to true, only + * results of the same type will be returned. + * @default false + * @type {boolean|undefined} + */ +google.maps.places.SearchByTextRequest.prototype.useStrictTypeFiltering; + +/** + * @type {string|undefined} + * @deprecated Please use textQuery instead + */ +google.maps.places.SearchByTextRequest.prototype.query; + +/** + * Available only in the v=beta channel: https://goo.gle/3oAthT3. + * @type {!google.maps.places.SearchByTextRankPreference|undefined} + * @deprecated Please use rankPreference instead. + */ +google.maps.places.SearchByTextRequest.prototype.rankBy; + +/** + * RankPreference enum for SearchNearbyRequest. + * + * Access by calling `const {SearchNearbyRankPreference} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.places.SearchNearbyRankPreference = { + /** + * Ranks results by distance. + */ + DISTANCE: 'DISTANCE', + /** + * Ranks results by popularity. + */ + POPULARITY: 'POPULARITY', +}; + +/** + * Request interface for {@link google.maps.places.Place.searchNearby}. For more + * information on the request, see Places + * API reference. + * @record + */ +google.maps.places.SearchNearbyRequest = function() {}; + +/** + * Excluded primary place type. See the full + * list of types supported. A place can only have a single primary type. Up + * to 50 types may be specified. If you specify the same type in both + * included and excluded lists, an INVALID_ARGUMENT + * error is returned. + * @type {!Array|undefined} + */ +google.maps.places.SearchNearbyRequest.prototype.excludedPrimaryTypes; + +/** + * Excluded place type. See the full + * list of types supported. A place can have many different place types. Up + * to 50 types may be specified. If you specify the same type in both + * included and excluded lists, an INVALID_ARGUMENT + * error is returned. + * @type {!Array|undefined} + */ +google.maps.places.SearchNearbyRequest.prototype.excludedTypes; + +/** + * Required for {@link google.maps.places.Place.searchNearby}. Fields to be + * included in the response, which + * will be billed for. If ['*'] is passed in, all + * available fields will be returned and billed for (this is not recommended for + * production deployments). You can request any property in the {@link + * google.maps.places.Place} class as a field. + * @type {!Array|undefined} + */ +google.maps.places.SearchNearbyRequest.prototype.fields; + +/** + * Included primary place type. See the full + * list of types supported. A place can only have a single primary type. Up + * to 50 types may be specified. If you specify the same type in both + * included and excluded lists, an INVALID_ARGUMENT + * error is returned. + * @type {!Array|undefined} + */ +google.maps.places.SearchNearbyRequest.prototype.includedPrimaryTypes; + +/** + * Included place type. See the full + * list of types supported. A place can have many different place types. Up + * to 50 types may be specified. If you specify the same type in both + * included and excluded lists, an INVALID_ARGUMENT + * error is returned. + * @type {!Array|undefined} + */ +google.maps.places.SearchNearbyRequest.prototype.includedTypes; + +/** + * Place details will be displayed with the preferred language if available. + * Will default to the browser's language preference. Current list of + * supported languages: https://developers.google.com/maps/faq#languagesupport. + * @type {string|undefined} + */ +google.maps.places.SearchNearbyRequest.prototype.language; + +/** + * The region to search, specified as a circle with center and radius. Results + * outside given location are not returned. + * @type {!google.maps.Circle|!google.maps.CircleLiteral} + */ +google.maps.places.SearchNearbyRequest.prototype.locationRestriction; + +/** + * Maximum number of results to return. It must be between 1 and 20, + * inclusively. + * @type {number|undefined} + */ +google.maps.places.SearchNearbyRequest.prototype.maxResultCount; + +/** + * How results will be ranked in the response. + * @default SearchNearbyRankPreference.DISTANCE + * @type {!google.maps.places.SearchNearbyRankPreference|undefined} + */ +google.maps.places.SearchNearbyRequest.prototype.rankPreference; + +/** + * The Unicode country/region code (CLDR) of the location where the request is + * coming from. This parameter is used to display the place details, like + * region-specific place name, if available. The parameter can affect results + * based on applicable law. For more information, see https://www.unicode.org/cldr/charts/latest/supplemental/territory_language_information.html. + * Note that 3-digit region codes are not currently supported. + * @type {string|undefined} + */ +google.maps.places.SearchNearbyRequest.prototype.region; + +/** + * Identifies a substring within a given text. + * + * Access by calling `const {StringRange} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @constructor + */ +google.maps.places.StringRange = function() {}; + +/** + * Zero-based offset of the last Unicode character of the substring (exclusive). + * @type {number} + */ +google.maps.places.StringRange.prototype.endOffset; + +/** + * Zero-based offset of the first Unicode character of the substring + * (inclusive). + * @type {number} + */ +google.maps.places.StringRange.prototype.startOffset; + +/** + * Contains structured information about the place's description, divided + * into a main text and a secondary text, including an array of matched + * substrings from the autocomplete input, identified by an offset and a length, + * expressed in unicode characters. + * @record + */ +google.maps.places.StructuredFormatting = function() {}; + +/** + * This is the main text part of the unformatted description of the place + * suggested by the Places service. Usually the name of the place. + * @type {string} + */ +google.maps.places.StructuredFormatting.prototype.main_text; + +/** + * A set of substrings in the main text that match elements in the user's + * input, suitable for use in highlighting those substrings. Each substring is + * identified by an offset and a length, expressed in unicode characters. + * @type {!Array} + */ +google.maps.places.StructuredFormatting.prototype.main_text_matched_substrings; + +/** + * This is the secondary text part of the unformatted description of the place + * suggested by the Places service. Usually the location of the place. + * @type {string} + */ +google.maps.places.StructuredFormatting.prototype.secondary_text; + +/** + * A text search request to be sent to the PlacesService. + * @record + */ +google.maps.places.TextSearchRequest = function() {}; + +/** + * Bounds used to bias results when searching for Places (optional). Both + * location and radius will be ignored if + * bounds is set. Results will not be restricted to those inside + * these bounds; but, results inside it will rank higher. + * @type {!google.maps.LatLngBounds|!google.maps.LatLngBoundsLiteral|undefined} + */ +google.maps.places.TextSearchRequest.prototype.bounds; + +/** + * A language identifier for the language in which names and addresses should be + * returned, when possible. See the list of + * supported languages. + * @type {string|null|undefined} + */ +google.maps.places.TextSearchRequest.prototype.language; + +/** + * The center of the area used to bias results when searching for Places. + * @type {!google.maps.LatLng|!google.maps.LatLngLiteral|undefined} + */ +google.maps.places.TextSearchRequest.prototype.location; + +/** + * The request's query term. For example, the name of a place ('Eiffel + * Tower'), a category followed by the name of a location ('pizza in New + * York'), or the name of a place followed by a location disambiguator + * ('Starbucks in Sydney'). + * @type {string|undefined} + */ +google.maps.places.TextSearchRequest.prototype.query; + +/** + * The radius of the area used to bias results when searching for Places, in + * meters. + * @type {number|undefined} + */ +google.maps.places.TextSearchRequest.prototype.radius; + +/** + * A region code to bias results towards. The region code accepts a ccTLD + * ("top-level domain") two-character value. Most ccTLD codes are + * identical to ISO 3166-1 codes, with some notable exceptions. For example, the + * United Kingdom's ccTLD is "uk" (.co.uk) while its + * ISO 3166-1 code is "gb" (technically for the entity of "The + * United Kingdom of Great Britain and Northern Ireland"). + * @type {string|null|undefined} + */ +google.maps.places.TextSearchRequest.prototype.region; + +/** + * Searches for places of the given type. The type is translated to the local + * language of the request's target location and used as a query string. If + * a query is also provided, it is concatenated to the localized type string. + * Results of a different type are dropped from the response. Use this field to + * perform language and region independent categorical searches. Valid types are + * given here. + * @type {string|undefined} + */ +google.maps.places.TextSearchRequest.prototype.type; + +/** + * @const + */ +google.maps.visualization = {}; + +/** + * A layer that provides a client-side rendered heatmap, depicting the intensity + * of data at geographical points. + * + * Access by calling `const {HeatmapLayer} = await + * google.maps.importLibrary("visualization")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {google.maps.visualization.HeatmapLayerOptions=} opts + * @extends {google.maps.MVCObject} + * @constructor + */ +google.maps.visualization.HeatmapLayer = function(opts) {}; + +/** + * Returns the data points currently displayed by this heatmap. + * @return {!google.maps.MVCArray} + */ +google.maps.visualization.HeatmapLayer.prototype.getData = function() {}; + +/** + * @return {!google.maps.Map|undefined} + */ +google.maps.visualization.HeatmapLayer.prototype.getMap = function() {}; + +/** + * Sets the data points to be displayed by this heatmap. + * @param {!google.maps.MVCArray|!Array} + * data + * @return {undefined} + */ +google.maps.visualization.HeatmapLayer.prototype.setData = function(data) {}; + +/** + * Renders the heatmap on the specified map. If map is set to null, + * the heatmap will be removed. + * @param {?google.maps.Map} map + * @return {undefined} + */ +google.maps.visualization.HeatmapLayer.prototype.setMap = function(map) {}; + +/** + * @param {?google.maps.visualization.HeatmapLayerOptions} options + * @return {undefined} + */ +google.maps.visualization.HeatmapLayer.prototype.setOptions = function( + options) {}; + +/** + * This object defines the properties that can be set on a + * HeatmapLayer object. + * @record + */ +google.maps.visualization.HeatmapLayerOptions = function() {}; + +/** + * The data points to display. Required. + * @type {!google.maps.MVCArray|!Array|null|undefined} + */ +google.maps.visualization.HeatmapLayerOptions.prototype.data; + +/** + * Specifies whether heatmaps dissipate on zoom. By default, the radius of + * influence of a data point is specified by the radius option only. When + * dissipating is disabled, the radius option is interpreted as a radius at zoom + * level 0. + * @type {boolean|null|undefined} + */ +google.maps.visualization.HeatmapLayerOptions.prototype.dissipating; + +/** + * The color gradient of the heatmap, specified as an array of CSS color + * strings. All CSS3 colors are supported except for extended named colors. + * @type {!Array|null|undefined} + */ +google.maps.visualization.HeatmapLayerOptions.prototype.gradient; + +/** + * The map on which to display the layer. + * @type {!google.maps.Map|null|undefined} + */ +google.maps.visualization.HeatmapLayerOptions.prototype.map; + +/** + * The maximum intensity of the heatmap. By default, heatmap colors are + * dynamically scaled according to the greatest concentration of points at any + * particular pixel on the map. This property allows you to specify a fixed + * maximum. + * @type {number|null|undefined} + */ +google.maps.visualization.HeatmapLayerOptions.prototype.maxIntensity; + +/** + * The opacity of the heatmap, expressed as a number between 0 and 1. + * @default 0.6 + * @type {number|null|undefined} + */ +google.maps.visualization.HeatmapLayerOptions.prototype.opacity; + +/** + * The radius of influence for each data point, in pixels. + * @type {number|null|undefined} + */ +google.maps.visualization.HeatmapLayerOptions.prototype.radius; + +/** + * A data point entry for a heatmap. This is a geographical data point with a + * weight attribute. + * @record + */ +google.maps.visualization.WeightedLocation = function() {}; + +/** + * The location of the data point. + * @type {!google.maps.LatLng} + */ +google.maps.visualization.WeightedLocation.prototype.location; + +/** + * The weighting value of the data point. + * @type {number} + */ +google.maps.visualization.WeightedLocation.prototype.weight; diff --git a/contrib/externs/maps/google_maps_api_v3_exp.js b/contrib/externs/maps/google_maps_api_v3_exp.js index eaf5916cd1c..7222fb65467 100644 --- a/contrib/externs/maps/google_maps_api_v3_exp.js +++ b/contrib/externs/maps/google_maps_api_v3_exp.js @@ -7403,7 +7403,9 @@ google.maps.MarkerOptions.prototype.crossOnDrag; google.maps.MarkerOptions.prototype.cursor; /** - * If true, the marker can be dragged. + * If true, the marker can be dragged. Note: Setting this to + * true will make the marker clickable even if + * clickable is set to false. * @default false * @type {boolean|null|undefined} */ @@ -7449,7 +7451,8 @@ google.maps.MarkerOptions.prototype.opacity; * static element. This is useful in cases where a large number of markers is * required. Read more about marker - * optimization. + * optimization. Note: This optimization has no effect for markers on + * vector maps. * @type {boolean|null|undefined} */ google.maps.MarkerOptions.prototype.optimized; @@ -8194,7 +8197,7 @@ google.maps.Point.prototype.y; /** * Compares two Points - * @param {google.maps.Point} other + * @param {!google.maps.Point|null} other * @return {boolean} */ google.maps.Point.prototype.equals = function(other) {}; @@ -9793,7 +9796,7 @@ google.maps.StreetViewService = function() {}; * StreetViewPanoramaData is passed to the provided callback. * @param {!google.maps.StreetViewLocationRequest|!google.maps.StreetViewPanoRequest} * request - * @param {(function(?google.maps.StreetViewPanoramaData, + * @param {(function((!google.maps.StreetViewPanoramaData|null), * !google.maps.StreetViewStatus): void)=} callback * @return {!Promise} */ @@ -11351,6 +11354,66 @@ google.maps.drawing.OverlayType = { RECTANGLE: 'rectangle', }; +/** + * @const + */ +google.maps.elevation = {}; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * An HTML element that visually displays elevation data. Set the element's + * path property to show a graph of elevation along the path. + * + * Access by calling `const {ElevationElement} = await + * google.maps.importLibrary("elevation")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.elevation.ElevationElementOptions=} options + * @implements {google.maps.elevation.ElevationElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.elevation.ElevationElement = function(options) {}; + +/** + * The path along which to show elevation data. Line segments will be + * interpolated in between the points of the array; even a small number of + * points will still produce a detailed elevation graph.
If only one point + * is provided, the widget will show the elevation number for that point. + * @type {!Array|null|undefined} + */ +google.maps.elevation.ElevationElement.prototype.path; + +/** + * Determines if elevation will be shown in feet/miles or meters/km. If + * undefined, the widget will default to the preferred unit system for the + * region specified in the API loader. + * @type {!google.maps.UnitSystem|null|undefined} + */ +google.maps.elevation.ElevationElement.prototype.unitSystem; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Options for ElevationElement. + * @record + */ +google.maps.elevation.ElevationElementOptions = function() {}; + +/** + * See {@link google.maps.elevation.ElevationElement.path} + * @type {!Array|null|undefined} + */ +google.maps.elevation.ElevationElementOptions.prototype.path; + +/** + * See {@link google.maps.elevation.ElevationElement.unitSystem} + * @type {!google.maps.UnitSystem|null|undefined} + */ +google.maps.elevation.ElevationElementOptions.prototype.unitSystem; + /** * @const */ @@ -11388,31 +11451,6 @@ google.maps.geometry.poly.containsLocation = function(point, polygon) {}; google.maps.geometry.poly.isLocationOnEdge = function( point, poly, tolerance) {}; -/** - * Utilities for polyline encoding and decoding. - * - * Access by calling `const {encoding} = await - * google.maps.importLibrary("geometry")`. See - * https://developers.google.com/maps/documentation/javascript/libraries. - * @const - */ -google.maps.geometry.encoding = {}; - -/** - * Decodes an encoded path string into a sequence of LatLngs. - * @param {string} encodedPath - * @return {!Array} - */ -google.maps.geometry.encoding.decodePath = function(encodedPath) {}; - -/** - * Encodes a sequence of LatLngs into an encoded path string. - * @param {!Array|!google.maps.MVCArray} - * path - * @return {string} - */ -google.maps.geometry.encoding.encodePath = function(path) {}; - /** * Utility functions for computing geodesic angles, distances and areas. The * default radius is Earth's radius of 6378137 meters. @@ -11420,9 +11458,9 @@ google.maps.geometry.encoding.encodePath = function(path) {}; * Access by calling `const {spherical} = await * google.maps.importLibrary("geometry")`. See * https://developers.google.com/maps/documentation/javascript/libraries. - * @const + * @constructor */ -google.maps.geometry.spherical = {}; +google.maps.geometry.spherical = function() {}; /** * Returns the unsigned area of a closed path, in the range [0, 2×pi×radius²]. @@ -11490,7 +11528,7 @@ google.maps.geometry.spherical.computeOffset = function( * @param {number} distance * @param {number} heading * @param {number=} radius - * @return {?google.maps.LatLng} + * @return {!google.maps.LatLng|null} */ google.maps.geometry.spherical.computeOffsetOrigin = function( to, distance, heading, radius) {}; @@ -11524,6 +11562,31 @@ google.maps.geometry.spherical.computeSignedArea = function(loop, radius) {}; */ google.maps.geometry.spherical.interpolate = function(from, to, fraction) {}; +/** + * Utilities for polyline encoding and decoding. + * + * Access by calling `const {encoding} = await + * google.maps.importLibrary("geometry")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @const + */ +google.maps.geometry.encoding = {}; + +/** + * Decodes an encoded path string into a sequence of LatLngs. + * @param {string} encodedPath + * @return {!Array} + */ +google.maps.geometry.encoding.decodePath = function(encodedPath) {}; + +/** + * Encodes a sequence of LatLngs into an encoded path string. + * @param {!Array|!google.maps.MVCArray} + * path + * @return {string} + */ +google.maps.geometry.encoding.encodePath = function(path) {}; + /** * @const */ @@ -16009,7 +16072,7 @@ google.maps.maps3d.Marker3DElementOptions.prototype.zIndex; * Access by calling `const {Marker3DInteractiveElement} = await * google.maps.importLibrary("maps3d")`. See * https://developers.google.com/maps/documentation/javascript/libraries. - * @param {!google.maps.maps3d.Marker3DElementOptions=} options + * @param {!google.maps.maps3d.Marker3DInteractiveElementOptions=} options * @implements {google.maps.maps3d.Marker3DInteractiveElementOptions} * @extends {google.maps.maps3d.Marker3DElement} * @constructor @@ -18352,11 +18415,6 @@ google.maps.places.Place.prototype.hasRestroom; */ google.maps.places.Place.prototype.hasTakeout; -/** - * @type {boolean|null|undefined} - */ -google.maps.places.Place.prototype.hasWiFi; - /** * The default HEX color code for the place's category. * @type {string|null|undefined} @@ -18625,6 +18683,13 @@ google.maps.places.Place.prototype.websiteURI; */ google.maps.places.Place.prototype.openingHours; +/** + * @type {boolean|null|undefined} + * @deprecated This field was accidentally documented, but has never actually + * been populated. + */ +google.maps.places.Place.prototype.hasWiFi; + /** * Text query based place search. * @param {!google.maps.places.SearchByTextRequest} request @@ -18854,6 +18919,75 @@ google.maps.places.PlaceAutocompletePlaceSelectEvent.prototype.place; */ google.maps.places.PlaceAutocompleteRequestErrorEvent = function() {}; +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * An HTML element that displays details for a place. Use the + * configureFromPlace() or configureFromLocation() + * methods to specify the content to be rendered. + * + * Access by calling `const {PlaceDetailsElement} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.places.PlaceDetailsElementOptions=} options + * @implements {google.maps.places.PlaceDetailsElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.places.PlaceDetailsElement = function(options) {}; + +/** + * Read only. Place object containing the ID, location, and + * viewport of the currently rendered place. + * @type {!google.maps.places.Place|undefined} + */ +google.maps.places.PlaceDetailsElement.prototype.place; + +/** + * The size variant of the PlaceDetailsElement. By default, the element will + * display PlaceDetailsSize.X_LARGE. + * @type {!google.maps.places.PlaceDetailsSize|null|undefined} + */ +google.maps.places.PlaceDetailsElement.prototype.size; + + + +/** + * Configures the widget from a LatLng using reverse geocoding. + * @param {!google.maps.LatLng|!google.maps.LatLngLiteral} location The location + * to render place details for. + * @return {!Promise} A promise that resolves once place data is loaded + * and rendered. + */ +google.maps.places.PlaceDetailsElement.prototype.configureFromLocation = + function(location) {}; + +/** + * Configures the widget from a Place object or Place ID. + * @param {!google.maps.places.Place|!{id:string}} place The place to render + * details for. + * @return {!Promise} A promise that resolves once place data is loaded + * and rendered. + */ +google.maps.places.PlaceDetailsElement.prototype.configureFromPlace = function( + place) {}; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Options for PlaceDetailsElement. + * @record + */ +google.maps.places.PlaceDetailsElementOptions = function() {}; + +/** + * See {@link google.maps.places.PlaceDetailsElement.size} + * @type {!google.maps.places.PlaceDetailsSize|null|undefined} + */ +google.maps.places.PlaceDetailsElementOptions.prototype.size; + /** * A Place details query to be sent to the PlacesService. * @record @@ -18907,6 +19041,37 @@ google.maps.places.PlaceDetailsRequest.prototype.region; */ google.maps.places.PlaceDetailsRequest.prototype.sessionToken; +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Size variants for PlaceDetailsElement. + * + * Access by calling `const {PlaceDetailsSize} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @enum {string} + */ +google.maps.places.PlaceDetailsSize = { + /** + * Large variant including a large image, basic information, and contact + * information. + */ + LARGE: 'LARGE', + /** + * Medium variant including a large image and basic information. + */ + MEDIUM: 'MEDIUM', + /** + * Small variant including a small image and basic information. + */ + SMALL: 'SMALL', + /** + * Extra large variant including a photo collage, reviews, and comprehensive + * place information. + */ + X_LARGE: 'X_LARGE', +}; + /** * Defines information about the geometry of a Place. * @record @@ -18928,6 +19093,108 @@ google.maps.places.PlaceGeometry.prototype.location; */ google.maps.places.PlaceGeometry.prototype.viewport; +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * An HTML element that displays the results of a place search in a list. Use + * the configureFromSearchByTextRequest() or + * configureFromSearchNearbyRequest() methods to specify the + * request to render results for. + * + * Access by calling `const {PlaceListElement} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @param {!google.maps.places.PlaceListElementOptions=} options + * @implements {google.maps.places.PlaceListElementOptions} + * @extends {HTMLElement} + * @constructor + */ +google.maps.places.PlaceListElement = function(options) {}; + +/** + * Read only. Array of Place objects containing the IDs, locations, + * and viewports of the currently rendered places. + * @type {!Array} + */ +google.maps.places.PlaceListElement.prototype.places; + +/** + * Whether or not the list items are selectable. If true, the list items will be + * buttons that dispatch the gmp-placeselect event when clicked. + * Accessible keyboard navigation and selection is also supported. + * @type {boolean} + */ +google.maps.places.PlaceListElement.prototype.selectable; + + + +/** + * Configures the widget to render search results from a Places Text Search API + * request. + * @param {!google.maps.places.SearchByTextRequest} request The request to + * render results for. The fields property of the + * SearchByTextRequest is not required. + * @return {!Promise} A promise that resolves once place data is loaded + * and rendered. + */ +google.maps.places.PlaceListElement.prototype.configureFromSearchByTextRequest = + function(request) {}; + +/** + * Configures the widget to render search results from a Places Nearby Search + * API request. + * @param {!google.maps.places.SearchNearbyRequest} request The request to + * render results for. The fields property of the + * SearchNearbyRequest is not required. + * @return {!Promise} A promise that resolves once place data is loaded + * and rendered. + */ +google.maps.places.PlaceListElement.prototype.configureFromSearchNearbyRequest = + function(request) {}; + + + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * Options for PlaceListElement. + * @record + */ +google.maps.places.PlaceListElementOptions = function() {}; + +/** + * See {@link google.maps.places.PlaceListElement.selectable} + * @type {boolean|null|undefined} + */ +google.maps.places.PlaceListElementOptions.prototype.selectable; + +/** + * Available only in the v=alpha channel: https://goo.gle/js-alpha-channel. + * + * This event is emitted by the PlaceListElement when the user + * selects a place. + * + * Access by calling `const {PlaceListPlaceSelectEvent} = await + * google.maps.importLibrary("places")`. See + * https://developers.google.com/maps/documentation/javascript/libraries. + * @extends {Event} + * @constructor + */ +google.maps.places.PlaceListPlaceSelectEvent = function() {}; + +/** + * The list index of the selected place. + * @type {number} + */ +google.maps.places.PlaceListPlaceSelectEvent.prototype.index; + +/** + * A Place object containing the ID, location, and viewport of the + * selected place. + * @type {!google.maps.places.Place} + */ +google.maps.places.PlaceListPlaceSelectEvent.prototype.place; + /** * Defines information about the opening hours of a Place. * @record @@ -20082,13 +20349,14 @@ google.maps.places.SearchByTextRequest = function() {}; google.maps.places.SearchByTextRequest.prototype.evSearchOptions; /** - * Fields to be included in the response, which * will be billed for. If ['*'] is passed in, all * available fields will be returned and billed for (this is not recommended for * production deployments). You can request any property in the {@link * google.maps.places.Place} class as a field. - * @type {!Array} + * @type {!Array|undefined} */ google.maps.places.SearchByTextRequest.prototype.fields; @@ -20255,13 +20523,14 @@ google.maps.places.SearchNearbyRequest.prototype.excludedPrimaryTypes; google.maps.places.SearchNearbyRequest.prototype.excludedTypes; /** - * Fields to be included in the response, which * will be billed for. If ['*'] is passed in, all * available fields will be returned and billed for (this is not recommended for * production deployments). You can request any property in the {@link * google.maps.places.Place} class as a field. - * @type {!Array} + * @type {!Array|undefined} */ google.maps.places.SearchNearbyRequest.prototype.fields; @@ -20570,7 +20839,7 @@ google.maps.visualization.WeightedLocation = function() {}; /** * The location of the data point. - * @type {google.maps.LatLng} + * @type {!google.maps.LatLng} */ google.maps.visualization.WeightedLocation.prototype.location;