| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  | # Copyright 2015 Google Inc. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require 'date' | 
					
						
							|  |  |  | require 'google/apis/core/base_service' | 
					
						
							|  |  |  | require 'google/apis/core/json_representation' | 
					
						
							|  |  |  | require 'google/apis/core/hashable' | 
					
						
							|  |  |  | require 'google/apis/errors' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Google | 
					
						
							|  |  |  |   module Apis | 
					
						
							|  |  |  |     module VectortileV1 | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Represents an area. Used to represent regions such as water, parks, etc. | 
					
						
							|  |  |  |       class Area | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # True if the polygon is not entirely internal to the feature that it belongs to: | 
					
						
							|  |  |  |         # that is, some of the edges are bordering another feature. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `hasExternalEdges` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :has_external_edges | 
					
						
							|  |  |  |         alias_method :has_external_edges?, :has_external_edges | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # When has_external_edges is true, the polygon has some edges that border | 
					
						
							|  |  |  |         # another feature. This field indicates the internal edges that do not border | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # another feature. Each value is an index into the vertices array, and denotes | 
					
						
							|  |  |  |         # the start vertex of the internal edge (the next vertex in the boundary loop is | 
					
						
							|  |  |  |         # the end of the edge). If the selected vertex is the last vertex in the | 
					
						
							|  |  |  |         # boundary loop, then the edge between that vertex and the starting vertex of | 
					
						
							|  |  |  |         # the loop is internal. This field may be used for styling. For example, | 
					
						
							|  |  |  |         # building parapets could be placed only on the external edges of a building | 
					
						
							|  |  |  |         # polygon, or water could be lighter colored near the external edges of a body | 
					
						
							|  |  |  |         # of water. If has_external_edges is false, all edges are internal and this | 
					
						
							|  |  |  |         # field will be empty. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `internalEdges` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :internal_edges | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Identifies the boundary loops of the polygon. Only set for INDEXED_TRIANGLE | 
					
						
							|  |  |  |         # polygons. Each value is an index into the vertices array indicating the | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # beginning of a loop. For instance, values of [2, 5] would indicate loop_data | 
					
						
							|  |  |  |         # contained 3 loops with indices 0-1, 2-4, and 5-end. This may be used in | 
					
						
							|  |  |  |         # conjunction with the internal_edges field for styling polygon boundaries. Note | 
					
						
							|  |  |  |         # that an edge may be on a polygon boundary but still internal to the feature. | 
					
						
							|  |  |  |         # For example, a feature split across multiple tiles will have an internal | 
					
						
							|  |  |  |         # polygon boundary edge along the edge of the tile. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `loopBreaks` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :loop_breaks | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # When the polygon encoding is of type INDEXED_TRIANGLES, this contains the | 
					
						
							|  |  |  |         # indices of the triangle vertices in the vertex_offsets field. There are 3 | 
					
						
							|  |  |  |         # vertex indices per triangle. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `triangleIndices` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :triangle_indices | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The polygon encoding type used for this area. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `type` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :type | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 2D vertex list used for lines and areas. Each entry represents an offset from | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # the previous one in local tile coordinates. The first entry is offset from (0, | 
					
						
							|  |  |  |         # 0). For example, the list of vertices [(1,1), (2, 2), (1, 2)] would be encoded | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # in vertex offsets as [(1, 1), (1, 1), (-1, 0)]. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `vertexOffsets` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::Vertex2DList] | 
					
						
							|  |  |  |         attr_accessor :vertex_offsets | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The z-ordering of this area. Areas with a lower z-order should be rendered | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # beneath areas with a higher z-order. This z-ordering does not imply anything | 
					
						
							|  |  |  |         # about the altitude of the line relative to the ground, but it can be used to | 
					
						
							|  |  |  |         # prevent z-fighting during rendering on the client. This z-ordering can only be | 
					
						
							|  |  |  |         # used to compare areas, and cannot be compared with the z_order field in the | 
					
						
							|  |  |  |         # Line message. The z-order may be negative or zero. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `zOrder` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :z_order | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @has_external_edges = args[:has_external_edges] if args.key?(:has_external_edges) | 
					
						
							|  |  |  |           @internal_edges = args[:internal_edges] if args.key?(:internal_edges) | 
					
						
							|  |  |  |           @loop_breaks = args[:loop_breaks] if args.key?(:loop_breaks) | 
					
						
							|  |  |  |           @triangle_indices = args[:triangle_indices] if args.key?(:triangle_indices) | 
					
						
							|  |  |  |           @type = args[:type] if args.key?(:type) | 
					
						
							|  |  |  |           @vertex_offsets = args[:vertex_offsets] if args.key?(:vertex_offsets) | 
					
						
							|  |  |  |           @z_order = args[:z_order] if args.key?(:z_order) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Represents a height-extruded area: a 3D prism with a constant X-Y plane cross | 
					
						
							|  |  |  |       # section. Used to represent extruded buildings. A single building may consist | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |       # of several extruded areas. The min_z and max_z fields are scaled to the size | 
					
						
							|  |  |  |       # of the tile. An extruded area with a max_z value of 4096 has the same height | 
					
						
							|  |  |  |       # as the width of the tile that it is on. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |       class ExtrudedArea | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Represents an area. Used to represent regions such as water, parks, etc. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `area` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::Area] | 
					
						
							|  |  |  |         attr_accessor :area | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The z-value in local tile coordinates where the extruded area ends. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `maxZ` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :max_z | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # The z-value in local tile coordinates where the extruded area begins. This is | 
					
						
							|  |  |  |         # non-zero for extruded areas that begin off the ground. For example, a building | 
					
						
							|  |  |  |         # with a skybridge may have an extruded area component with a non-zero min_z. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `minZ` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :min_z | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @area = args[:area] if args.key?(:area) | 
					
						
							|  |  |  |           @max_z = args[:max_z] if args.key?(:max_z) | 
					
						
							|  |  |  |           @min_z = args[:min_z] if args.key?(:min_z) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A feature representing a single geographic entity. | 
					
						
							|  |  |  |       class Feature | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The localized name of this feature. Currently only returned for roads. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `displayName` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :display_name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Represents the geometry of a feature, that is, the shape that it has on the | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # map. The local tile coordinate system has the origin at the north-west (upper- | 
					
						
							|  |  |  |         # left) corner of the tile, and is scaled to 4096 units across each edge. The | 
					
						
							|  |  |  |         # height (Z) axis has the same scale factor: an extruded area with a max_z value | 
					
						
							|  |  |  |         # of 4096 has the same height as the width of the tile that it is on. There is | 
					
						
							|  |  |  |         # no clipping boundary, so it is possible that some coordinates will lie outside | 
					
						
							|  |  |  |         # the tile boundaries. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `geometry` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::Geometry] | 
					
						
							|  |  |  |         attr_accessor :geometry | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # Place ID of this feature, suitable for use in Places API details requests. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `placeId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :place_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Relations to other features. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `relations` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::VectortileV1::Relation>] | 
					
						
							|  |  |  |         attr_accessor :relations | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Extra metadata relating to segments. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `segmentInfo` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::SegmentInfo] | 
					
						
							|  |  |  |         attr_accessor :segment_info | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The type of this feature. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `type` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :type | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @display_name = args[:display_name] if args.key?(:display_name) | 
					
						
							|  |  |  |           @geometry = args[:geometry] if args.key?(:geometry) | 
					
						
							|  |  |  |           @place_id = args[:place_id] if args.key?(:place_id) | 
					
						
							|  |  |  |           @relations = args[:relations] if args.key?(:relations) | 
					
						
							|  |  |  |           @segment_info = args[:segment_info] if args.key?(:segment_info) | 
					
						
							|  |  |  |           @type = args[:type] if args.key?(:type) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A tile containing information about the map features located in the region it | 
					
						
							|  |  |  |       # covers. | 
					
						
							|  |  |  |       class FeatureTile | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Global tile coordinates. Global tile coordinates reference a specific tile on | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # the map at a specific zoom level. The origin of this coordinate system is | 
					
						
							|  |  |  |         # always at the northwest corner of the map, with x values increasing from west | 
					
						
							|  |  |  |         # to east and y values increasing from north to south. Tiles are indexed using x, | 
					
						
							|  |  |  |         # y coordinates from that origin. The zoom level containing the entire world in | 
					
						
							|  |  |  |         # a tile is 0, and it increases as you zoom in. Zoom level n + 1 will contain 4 | 
					
						
							|  |  |  |         # times as many tiles as zoom level n. The zoom level controls the level of | 
					
						
							|  |  |  |         # detail of the data that is returned. In particular, this affects the set of | 
					
						
							|  |  |  |         # feature types returned, their density, and geometry simplification. The exact | 
					
						
							|  |  |  |         # tile contents may change over time, but care will be taken to keep supporting | 
					
						
							|  |  |  |         # the most important use cases. For example, zoom level 15 shows roads for | 
					
						
							|  |  |  |         # orientation and planning in the local neighborhood and zoom level 17 shows | 
					
						
							|  |  |  |         # buildings to give users on foot a sense of situational awareness. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `coordinates` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::TileCoordinates] | 
					
						
							|  |  |  |         attr_accessor :coordinates | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Features present on this map tile. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `features` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::VectortileV1::Feature>] | 
					
						
							|  |  |  |         attr_accessor :features | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Resource name of the tile. The tile resource name is prefixed by its | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # collection ID `tiles/` followed by the resource ID, which encodes the tile's | 
					
						
							|  |  |  |         # global x and y coordinates and zoom level as `@,,z`. For example, `tiles/@1,2, | 
					
						
							|  |  |  |         # 3z`. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `name` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Data providers for the data contained in this tile. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `providers` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::VectortileV1::ProviderInfo>] | 
					
						
							|  |  |  |         attr_accessor :providers | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Tile response status code to support tile caching. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `status` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :status | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # An opaque value, usually less than 30 characters, that contains version info | 
					
						
							|  |  |  |         # about this tile and the data that was used to generate it. The client should | 
					
						
							|  |  |  |         # store this value in its tile cache and pass it back to the API in the | 
					
						
							|  |  |  |         # client_tile_version_id field of subsequent tile requests in order to enable | 
					
						
							|  |  |  |         # the API to detect when the new tile would be the same as the one the client | 
					
						
							|  |  |  |         # already has in its cache. Also see STATUS_OK_DATA_UNCHANGED. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `versionId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :version_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @coordinates = args[:coordinates] if args.key?(:coordinates) | 
					
						
							|  |  |  |           @features = args[:features] if args.key?(:features) | 
					
						
							|  |  |  |           @name = args[:name] if args.key?(:name) | 
					
						
							|  |  |  |           @providers = args[:providers] if args.key?(:providers) | 
					
						
							|  |  |  |           @status = args[:status] if args.key?(:status) | 
					
						
							|  |  |  |           @version_id = args[:version_id] if args.key?(:version_id) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A packed representation of a 2D grid of uniformly spaced points containing | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |       # elevation data. Each point within the grid represents the altitude in meters | 
					
						
							|  |  |  |       # above average sea level at that location within the tile. Elevations provided | 
					
						
							|  |  |  |       # are (generally) relative to the EGM96 geoid, however some areas will be | 
					
						
							|  |  |  |       # relative to NAVD88. EGM96 and NAVD88 are off by no more than 2 meters. The | 
					
						
							|  |  |  |       # grid is oriented north-west to south-east, as illustrated: rows[0].a[0] rows[0] | 
					
						
							|  |  |  |       # .a[m] +-----------------+ | | | N | | ^ | | | | | W <-----> E | | | | | v | | | 
					
						
							|  |  |  |       # S | | | +-----------------+ rows[n].a[0] rows[n].a[m] Rather than storing the | 
					
						
							|  |  |  |       # altitudes directly, we store the diffs between them as integers at some | 
					
						
							|  |  |  |       # requested level of precision to take advantage of integer packing. The actual | 
					
						
							|  |  |  |       # altitude values a[] can be reconstructed using the scale and each row's | 
					
						
							|  |  |  |       # first_altitude and altitude_diff fields. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |       class FirstDerivativeElevationGrid | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A multiplier applied to the altitude fields below to extract the actual | 
					
						
							|  |  |  |         # altitudes in meters from the elevation grid. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `altitudeMultiplier` | 
					
						
							|  |  |  |         # @return [Float] | 
					
						
							|  |  |  |         attr_accessor :altitude_multiplier | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # Rows of points containing altitude data making up the elevation grid. Each row | 
					
						
							|  |  |  |         # is the same length. Rows are ordered from north to south. E.g: rows[0] is the | 
					
						
							|  |  |  |         # north-most row, and rows[n] is the south-most row. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `rows` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::VectortileV1::Row>] | 
					
						
							|  |  |  |         attr_accessor :rows | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @altitude_multiplier = args[:altitude_multiplier] if args.key?(:altitude_multiplier) | 
					
						
							|  |  |  |           @rows = args[:rows] if args.key?(:rows) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Represents the geometry of a feature, that is, the shape that it has on the | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |       # map. The local tile coordinate system has the origin at the north-west (upper- | 
					
						
							|  |  |  |       # left) corner of the tile, and is scaled to 4096 units across each edge. The | 
					
						
							|  |  |  |       # height (Z) axis has the same scale factor: an extruded area with a max_z value | 
					
						
							|  |  |  |       # of 4096 has the same height as the width of the tile that it is on. There is | 
					
						
							|  |  |  |       # no clipping boundary, so it is possible that some coordinates will lie outside | 
					
						
							|  |  |  |       # the tile boundaries. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |       class Geometry | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The areas present in this geometry. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `areas` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::VectortileV1::Area>] | 
					
						
							|  |  |  |         attr_accessor :areas | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The extruded areas present in this geometry. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `extrudedAreas` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::VectortileV1::ExtrudedArea>] | 
					
						
							|  |  |  |         attr_accessor :extruded_areas | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The lines present in this geometry. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `lines` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::VectortileV1::Line>] | 
					
						
							|  |  |  |         attr_accessor :lines | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The modeled volumes present in this geometry. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `modeledVolumes` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::VectortileV1::ModeledVolume>] | 
					
						
							|  |  |  |         attr_accessor :modeled_volumes | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @areas = args[:areas] if args.key?(:areas) | 
					
						
							|  |  |  |           @extruded_areas = args[:extruded_areas] if args.key?(:extruded_areas) | 
					
						
							|  |  |  |           @lines = args[:lines] if args.key?(:lines) | 
					
						
							|  |  |  |           @modeled_volumes = args[:modeled_volumes] if args.key?(:modeled_volumes) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Represents a 2D polyline. Used to represent segments such as roads, train | 
					
						
							|  |  |  |       # tracks, etc. | 
					
						
							|  |  |  |       class Line | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 2D vertex list used for lines and areas. Each entry represents an offset from | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # the previous one in local tile coordinates. The first entry is offset from (0, | 
					
						
							|  |  |  |         # 0). For example, the list of vertices [(1,1), (2, 2), (1, 2)] would be encoded | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # in vertex offsets as [(1, 1), (1, 1), (-1, 0)]. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `vertexOffsets` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::Vertex2DList] | 
					
						
							|  |  |  |         attr_accessor :vertex_offsets | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # The z-order of the line. Lines with a lower z-order should be rendered beneath | 
					
						
							|  |  |  |         # lines with a higher z-order. This z-ordering does not imply anything about the | 
					
						
							|  |  |  |         # altitude of the area relative to the ground, but it can be used to prevent z- | 
					
						
							|  |  |  |         # fighting during rendering on the client. In general, larger and more important | 
					
						
							|  |  |  |         # road features will have a higher z-order line associated with them. This z- | 
					
						
							|  |  |  |         # ordering can only be used to compare lines, and cannot be compared with the | 
					
						
							|  |  |  |         # z_order field in the Area message. The z-order may be negative or zero. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `zOrder` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :z_order | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @vertex_offsets = args[:vertex_offsets] if args.key?(:vertex_offsets) | 
					
						
							|  |  |  |           @z_order = args[:z_order] if args.key?(:z_order) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Represents a modeled volume in 3D space. Used to represent 3D buildings. | 
					
						
							|  |  |  |       class ModeledVolume | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The triangle strips present in this mesh. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `strips` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::VectortileV1::TriangleStrip>] | 
					
						
							|  |  |  |         attr_accessor :strips | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 3D vertex list used for modeled volumes. Each entry represents an offset from | 
					
						
							|  |  |  |         # the previous one in local tile coordinates. The first coordinate is offset | 
					
						
							|  |  |  |         # from (0, 0, 0). | 
					
						
							|  |  |  |         # Corresponds to the JSON property `vertexOffsets` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::Vertex3DList] | 
					
						
							|  |  |  |         attr_accessor :vertex_offsets | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @strips = args[:strips] if args.key?(:strips) | 
					
						
							|  |  |  |           @vertex_offsets = args[:vertex_offsets] if args.key?(:vertex_offsets) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Information about the data providers that should be included in the | 
					
						
							|  |  |  |       # attribution string shown by the client. | 
					
						
							|  |  |  |       class ProviderInfo | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Attribution string for this provider. This string is not localized. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `description` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :description | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @description = args[:description] if args.key?(:description) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Represents a relation to another feature in the tile. For example, a building | 
					
						
							|  |  |  |       # might be occupied by a given POI. The related feature can be retrieved using | 
					
						
							|  |  |  |       # the related feature index. | 
					
						
							|  |  |  |       class Relation | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # Zero-based index to look up the related feature from the list of features in | 
					
						
							|  |  |  |         # the tile. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `relatedFeatureIndex` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :related_feature_index | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Relation type between the origin feature to the related feature. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `relationType` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :relation_type | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @related_feature_index = args[:related_feature_index] if args.key?(:related_feature_index) | 
					
						
							|  |  |  |           @relation_type = args[:relation_type] if args.key?(:relation_type) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Extra metadata relating to roads. | 
					
						
							|  |  |  |       class RoadInfo | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # Road has signage discouraging or prohibiting use by the general public. E.g., | 
					
						
							|  |  |  |         # roads with signs that say "Private", or "No trespassing." | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `isPrivate` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :is_private | 
					
						
							|  |  |  |         alias_method :is_private?, :is_private | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @is_private = args[:is_private] if args.key?(:is_private) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |       # A row of altitude points in the elevation grid, ordered from west to east. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |       class Row | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # The difference between each successive pair of altitudes, from west to east. | 
					
						
							|  |  |  |         # The first, westmost point, is just the altitude rather than a diff. The units | 
					
						
							|  |  |  |         # are specified by the altitude_multiplier parameter above; the value in meters | 
					
						
							|  |  |  |         # is given by altitude_multiplier * altitude_diffs[n]. The altitude row (in | 
					
						
							|  |  |  |         # metres above sea level) can be reconstructed with: a[0] = altitude_diffs[0] * | 
					
						
							|  |  |  |         # altitude_multiplier when n > 0, a[n] = a[n-1] + altitude_diffs[n-1] * | 
					
						
							|  |  |  |         # altitude_multiplier. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `altitudeDiffs` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :altitude_diffs | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @altitude_diffs = args[:altitude_diffs] if args.key?(:altitude_diffs) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A packed representation of a 2D grid of uniformly spaced points containing | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |       # elevation data. Each point within the grid represents the altitude in meters | 
					
						
							|  |  |  |       # above average sea level at that location within the tile. Elevations provided | 
					
						
							|  |  |  |       # are (generally) relative to the EGM96 geoid, however some areas will be | 
					
						
							|  |  |  |       # relative to NAVD88. EGM96 and NAVD88 are off by no more than 2 meters. The | 
					
						
							|  |  |  |       # grid is oriented north-west to south-east, as illustrated: rows[0].a[0] rows[0] | 
					
						
							|  |  |  |       # .a[m] +-----------------+ | | | N | | ^ | | | | | W <-----> E | | | | | v | | | 
					
						
							|  |  |  |       # S | | | +-----------------+ rows[n].a[0] rows[n].a[m] Rather than storing the | 
					
						
							|  |  |  |       # altitudes directly, we store the diffs of the diffs between them as integers | 
					
						
							|  |  |  |       # at some requested level of precision to take advantage of integer packing. | 
					
						
							|  |  |  |       # Note that the data is packed in such a way that is fast to decode in Unity and | 
					
						
							|  |  |  |       # that further optimizes wire size. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |       class SecondDerivativeElevationGrid | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # A multiplier applied to the elements in the encoded data to extract the actual | 
					
						
							|  |  |  |         # altitudes in meters. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `altitudeMultiplier` | 
					
						
							|  |  |  |         # @return [Float] | 
					
						
							|  |  |  |         attr_accessor :altitude_multiplier | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The number of columns included in the encoded elevation data (i.e. the | 
					
						
							|  |  |  |         # horizontal resolution of the grid). | 
					
						
							|  |  |  |         # Corresponds to the JSON property `columnCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :column_count | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # A stream of elements each representing a point on the tile running across each | 
					
						
							|  |  |  |         # row from left to right, top to bottom. There will be precisely | 
					
						
							|  |  |  |         # horizontal_resolution * vertical_resolution elements in the stream. The | 
					
						
							|  |  |  |         # elements are not the heights, rather the second order derivative of the values | 
					
						
							|  |  |  |         # one would expect in a stream of height data. Each element is a varint with the | 
					
						
							|  |  |  |         # following encoding: ----------------------------------------------------------- | 
					
						
							|  |  |  |         # -------------| | Head Nibble | ------------------------------------------------ | 
					
						
							|  |  |  |         # ------------------------| | Bit 0 | Bit 1 | Bits 2-3 | | Terminator| Sign (1= | 
					
						
							|  |  |  |         # neg) | Least significant 2 bits of absolute error | --------------------------- | 
					
						
							|  |  |  |         # ---------------------------------------------| | Tail Nibble #1 | ------------- | 
					
						
							|  |  |  |         # -----------------------------------------------------------| | Bit 0 | Bit 1-3 | 
					
						
							|  |  |  |         # | | Terminator| Least significant 3 bits of absolute error | ------------------ | 
					
						
							|  |  |  |         # ------------------------------------------------------| | ... | Tail Nibble #n | 
					
						
							|  |  |  |         # | ------------------------------------------------------------------------| | | 
					
						
							|  |  |  |         # Bit 0 | Bit 1-3 | | Terminator| Least significant 3 bits of absolute error | -- | 
					
						
							|  |  |  |         # ----------------------------------------------------------------------| | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `encodedData` | 
					
						
							|  |  |  |         # NOTE: Values are automatically base64 encoded/decoded in the client library. | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :encoded_data | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # The number of rows included in the encoded elevation data (i.e. the vertical | 
					
						
							|  |  |  |         # resolution of the grid). | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `rowCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :row_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @altitude_multiplier = args[:altitude_multiplier] if args.key?(:altitude_multiplier) | 
					
						
							|  |  |  |           @column_count = args[:column_count] if args.key?(:column_count) | 
					
						
							|  |  |  |           @encoded_data = args[:encoded_data] if args.key?(:encoded_data) | 
					
						
							|  |  |  |           @row_count = args[:row_count] if args.key?(:row_count) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Extra metadata relating to segments. | 
					
						
							|  |  |  |       class SegmentInfo | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Extra metadata relating to roads. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `roadInfo` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::RoadInfo] | 
					
						
							|  |  |  |         attr_accessor :road_info | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @road_info = args[:road_info] if args.key?(:road_info) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A tile containing information about the terrain located in the region it | 
					
						
							|  |  |  |       # covers. | 
					
						
							|  |  |  |       class TerrainTile | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Global tile coordinates. Global tile coordinates reference a specific tile on | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # the map at a specific zoom level. The origin of this coordinate system is | 
					
						
							|  |  |  |         # always at the northwest corner of the map, with x values increasing from west | 
					
						
							|  |  |  |         # to east and y values increasing from north to south. Tiles are indexed using x, | 
					
						
							|  |  |  |         # y coordinates from that origin. The zoom level containing the entire world in | 
					
						
							|  |  |  |         # a tile is 0, and it increases as you zoom in. Zoom level n + 1 will contain 4 | 
					
						
							|  |  |  |         # times as many tiles as zoom level n. The zoom level controls the level of | 
					
						
							|  |  |  |         # detail of the data that is returned. In particular, this affects the set of | 
					
						
							|  |  |  |         # feature types returned, their density, and geometry simplification. The exact | 
					
						
							|  |  |  |         # tile contents may change over time, but care will be taken to keep supporting | 
					
						
							|  |  |  |         # the most important use cases. For example, zoom level 15 shows roads for | 
					
						
							|  |  |  |         # orientation and planning in the local neighborhood and zoom level 17 shows | 
					
						
							|  |  |  |         # buildings to give users on foot a sense of situational awareness. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `coordinates` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::TileCoordinates] | 
					
						
							|  |  |  |         attr_accessor :coordinates | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A packed representation of a 2D grid of uniformly spaced points containing | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # elevation data. Each point within the grid represents the altitude in meters | 
					
						
							|  |  |  |         # above average sea level at that location within the tile. Elevations provided | 
					
						
							|  |  |  |         # are (generally) relative to the EGM96 geoid, however some areas will be | 
					
						
							|  |  |  |         # relative to NAVD88. EGM96 and NAVD88 are off by no more than 2 meters. The | 
					
						
							|  |  |  |         # grid is oriented north-west to south-east, as illustrated: rows[0].a[0] rows[0] | 
					
						
							|  |  |  |         # .a[m] +-----------------+ | | | N | | ^ | | | | | W <-----> E | | | | | v | | | 
					
						
							|  |  |  |         # S | | | +-----------------+ rows[n].a[0] rows[n].a[m] Rather than storing the | 
					
						
							|  |  |  |         # altitudes directly, we store the diffs between them as integers at some | 
					
						
							|  |  |  |         # requested level of precision to take advantage of integer packing. The actual | 
					
						
							|  |  |  |         # altitude values a[] can be reconstructed using the scale and each row's | 
					
						
							|  |  |  |         # first_altitude and altitude_diff fields. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `firstDerivative` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::FirstDerivativeElevationGrid] | 
					
						
							|  |  |  |         attr_accessor :first_derivative | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Resource name of the tile. The tile resource name is prefixed by its | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # collection ID `terrain/` followed by the resource ID, which encodes the tile's | 
					
						
							|  |  |  |         # global x and y coordinates and zoom level as `@,,z`. For example, `terrain/@1, | 
					
						
							|  |  |  |         # 2,3z`. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `name` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A packed representation of a 2D grid of uniformly spaced points containing | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |         # elevation data. Each point within the grid represents the altitude in meters | 
					
						
							|  |  |  |         # above average sea level at that location within the tile. Elevations provided | 
					
						
							|  |  |  |         # are (generally) relative to the EGM96 geoid, however some areas will be | 
					
						
							|  |  |  |         # relative to NAVD88. EGM96 and NAVD88 are off by no more than 2 meters. The | 
					
						
							|  |  |  |         # grid is oriented north-west to south-east, as illustrated: rows[0].a[0] rows[0] | 
					
						
							|  |  |  |         # .a[m] +-----------------+ | | | N | | ^ | | | | | W <-----> E | | | | | v | | | 
					
						
							|  |  |  |         # S | | | +-----------------+ rows[n].a[0] rows[n].a[m] Rather than storing the | 
					
						
							|  |  |  |         # altitudes directly, we store the diffs of the diffs between them as integers | 
					
						
							|  |  |  |         # at some requested level of precision to take advantage of integer packing. | 
					
						
							|  |  |  |         # Note that the data is packed in such a way that is fast to decode in Unity and | 
					
						
							|  |  |  |         # that further optimizes wire size. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |         # Corresponds to the JSON property `secondDerivative` | 
					
						
							|  |  |  |         # @return [Google::Apis::VectortileV1::SecondDerivativeElevationGrid] | 
					
						
							|  |  |  |         attr_accessor :second_derivative | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @coordinates = args[:coordinates] if args.key?(:coordinates) | 
					
						
							|  |  |  |           @first_derivative = args[:first_derivative] if args.key?(:first_derivative) | 
					
						
							|  |  |  |           @name = args[:name] if args.key?(:name) | 
					
						
							|  |  |  |           @second_derivative = args[:second_derivative] if args.key?(:second_derivative) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Global tile coordinates. Global tile coordinates reference a specific tile on | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |       # the map at a specific zoom level. The origin of this coordinate system is | 
					
						
							|  |  |  |       # always at the northwest corner of the map, with x values increasing from west | 
					
						
							|  |  |  |       # to east and y values increasing from north to south. Tiles are indexed using x, | 
					
						
							|  |  |  |       # y coordinates from that origin. The zoom level containing the entire world in | 
					
						
							|  |  |  |       # a tile is 0, and it increases as you zoom in. Zoom level n + 1 will contain 4 | 
					
						
							|  |  |  |       # times as many tiles as zoom level n. The zoom level controls the level of | 
					
						
							|  |  |  |       # detail of the data that is returned. In particular, this affects the set of | 
					
						
							|  |  |  |       # feature types returned, their density, and geometry simplification. The exact | 
					
						
							|  |  |  |       # tile contents may change over time, but care will be taken to keep supporting | 
					
						
							|  |  |  |       # the most important use cases. For example, zoom level 15 shows roads for | 
					
						
							|  |  |  |       # orientation and planning in the local neighborhood and zoom level 17 shows | 
					
						
							|  |  |  |       # buildings to give users on foot a sense of situational awareness. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |       class TileCoordinates | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Required. The x coordinate. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `x` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :x | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Required. The y coordinate. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `y` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :y | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Required. The Google Maps API zoom level. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `zoom` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :zoom | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @x = args[:x] if args.key?(:x) | 
					
						
							|  |  |  |           @y = args[:y] if args.key?(:y) | 
					
						
							|  |  |  |           @zoom = args[:zoom] if args.key?(:zoom) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Represents a strip of triangles. Each triangle uses the last edge of the | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |       # previous one. The following diagram shows an example of a triangle strip, with | 
					
						
							|  |  |  |       # each vertex labeled with its index in the vertex_index array. (1)-----(3) / \ / | 
					
						
							|  |  |  |       # \ / \ / \ / \ / \ (0)-----(2)-----(4) Vertices may be in either clockwise or | 
					
						
							|  |  |  |       # counter-clockwise order. | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |       class TriangleStrip | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Index into the vertex_offset array representing the next vertex in the | 
					
						
							|  |  |  |         # triangle strip. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `vertexIndices` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :vertex_indices | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @vertex_indices = args[:vertex_indices] if args.key?(:vertex_indices) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # 2D vertex list used for lines and areas. Each entry represents an offset from | 
					
						
							| 
									
										
										
										
											2020-08-11 00:38:09 +00:00
										 |  |  |       # the previous one in local tile coordinates. The first entry is offset from (0, | 
					
						
							|  |  |  |       # 0). For example, the list of vertices [(1,1), (2, 2), (1, 2)] would be encoded | 
					
						
							| 
									
										
										
										
											2020-06-25 00:37:57 +00:00
										 |  |  |       # in vertex offsets as [(1, 1), (1, 1), (-1, 0)]. | 
					
						
							|  |  |  |       class Vertex2DList | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # List of x-offsets in local tile coordinates. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `xOffsets` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :x_offsets | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # List of y-offsets in local tile coordinates. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `yOffsets` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :y_offsets | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @x_offsets = args[:x_offsets] if args.key?(:x_offsets) | 
					
						
							|  |  |  |           @y_offsets = args[:y_offsets] if args.key?(:y_offsets) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # 3D vertex list used for modeled volumes. Each entry represents an offset from | 
					
						
							|  |  |  |       # the previous one in local tile coordinates. The first coordinate is offset | 
					
						
							|  |  |  |       # from (0, 0, 0). | 
					
						
							|  |  |  |       class Vertex3DList | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # List of x-offsets in local tile coordinates. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `xOffsets` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :x_offsets | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # List of y-offsets in local tile coordinates. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `yOffsets` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :y_offsets | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # List of z-offsets in local tile coordinates. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `zOffsets` | 
					
						
							|  |  |  |         # @return [Array<Fixnum>] | 
					
						
							|  |  |  |         attr_accessor :z_offsets | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @x_offsets = args[:x_offsets] if args.key?(:x_offsets) | 
					
						
							|  |  |  |           @y_offsets = args[:y_offsets] if args.key?(:y_offsets) | 
					
						
							|  |  |  |           @z_offsets = args[:z_offsets] if args.key?(:z_offsets) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |