<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="vectortile_v1.html">Semantic Tile API</a> . <a href="vectortile_v1.featuretiles.html">featuretiles</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(name, alwaysIncludeBuildingFootprints=None, clientInfo_apiClient=None, clientInfo_applicationId=None, clientInfo_applicationVersion=None, clientInfo_deviceModel=None, clientInfo_operatingSystem=None, clientInfo_platform=None, clientInfo_userId=None, clientTileVersionId=None, enableDetailedHighwayTypes=None, enableFeatureNames=None, enableModeledVolumes=None, enablePoliticalFeatures=None, enablePrivateRoads=None, enableUnclippedBuildings=None, languageCode=None, regionCode=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a feature tile by its tile resource name.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, alwaysIncludeBuildingFootprints=None, clientInfo_apiClient=None, clientInfo_applicationId=None, clientInfo_applicationVersion=None, clientInfo_deviceModel=None, clientInfo_operatingSystem=None, clientInfo_platform=None, clientInfo_userId=None, clientTileVersionId=None, enableDetailedHighwayTypes=None, enableFeatureNames=None, enableModeledVolumes=None, enablePoliticalFeatures=None, enablePrivateRoads=None, enableUnclippedBuildings=None, languageCode=None, regionCode=None, x__xgafv=None)</code>
  <pre>Gets a feature tile by its tile resource name.

Args:
  name: string, Required. Resource name of the tile. The tile resource name is prefixed by its collection ID `tiles/` followed by the resource ID, which encodes the tile&#x27;s global x and y coordinates and zoom level as `@,,z`. For example, `tiles/@1,2,3z`. (required)
  alwaysIncludeBuildingFootprints: boolean, Flag indicating whether the returned tile will always contain 2.5D footprints for structures. If enabled_modeled_volumes is set, this will mean that structures will have both their 3D models and 2.5D footprints returned.
  clientInfo_apiClient: string, API client name and version. For example, the SDK calling the API. The exact format is up to the client.
  clientInfo_applicationId: string, Application ID, such as the package name on Android and the bundle identifier on iOS platforms.
  clientInfo_applicationVersion: string, Application version number, such as &quot;1.2.3&quot;. The exact format is application-dependent.
  clientInfo_deviceModel: string, Device model as reported by the device. The exact format is platform-dependent.
  clientInfo_operatingSystem: string, Operating system name and version as reported by the OS. For example, &quot;Mac OS X 10.10.4&quot;. The exact format is platform-dependent.
  clientInfo_platform: string, Platform where the application is running.
    Allowed values
      PLATFORM_UNSPECIFIED - Unspecified or unknown OS.
      EDITOR - Development environment.
      MAC_OS - macOS.
      WINDOWS - Windows.
      LINUX - Linux
      ANDROID - Android
      IOS - iOS
      WEB_GL - WebGL.
  clientInfo_userId: string, Required. A client-generated user ID. The ID should be generated and persisted during the first user session or whenever a pre-existing ID is not found. The exact format is up to the client. This must be non-empty in a GetFeatureTileRequest (whether via the header or GetFeatureTileRequest.client_info).
  clientTileVersionId: string, Optional version id identifying the tile that is already in the client&#x27;s cache. This field should be populated with the most recent version_id value returned by the API for the requested tile. If the version id is empty the server always returns a newly rendered tile. If it is provided the server checks if the tile contents would be identical to one that&#x27;s already on the client, and if so, returns a stripped-down response tile with STATUS_OK_DATA_UNCHANGED instead.
  enableDetailedHighwayTypes: boolean, Flag indicating whether detailed highway types should be returned. If this is set, the CONTROLLED_ACCESS_HIGHWAY type may be returned. If not, then these highways will have the generic HIGHWAY type. This exists for backwards compatibility reasons.
  enableFeatureNames: boolean, Flag indicating whether human-readable names should be returned for features. If this is set, the display_name field on the feature will be filled out.
  enableModeledVolumes: boolean, Flag indicating whether 3D building models should be enabled. If this is set structures will be returned as 3D modeled volumes rather than 2.5D extruded areas where possible.
  enablePoliticalFeatures: boolean, Flag indicating whether political features should be returned.
  enablePrivateRoads: boolean, Flag indicating whether the returned tile will contain road features that are marked private. Private roads are indicated by the Feature.segment_info.road_info.is_private field.
  enableUnclippedBuildings: boolean, Flag indicating whether unclipped buildings should be returned. If this is set, building render ops will extend beyond the tile boundary. Buildings will only be returned on the tile that contains their centroid.
  languageCode: string, Required. The BCP-47 language code corresponding to the language in which the name was requested, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
  regionCode: string, Required. The Unicode country/region code (CLDR) of the location from which the request is coming from, such as &quot;US&quot; and &quot;419&quot;. For more information, see http://www.unicode.org/reports/tr35/#unicode_region_subtag.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A tile containing information about the map features located in the region it covers.
  &quot;coordinates&quot;: { # Global tile coordinates. Global tile coordinates reference a specific tile on 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. # The global tile coordinates that uniquely identify this tile.
    &quot;x&quot;: 42, # Required. The x coordinate.
    &quot;y&quot;: 42, # Required. The y coordinate.
    &quot;zoom&quot;: 42, # Required. The Google Maps API zoom level.
  },
  &quot;features&quot;: [ # Features present on this map tile.
    { # A feature representing a single geographic entity.
      &quot;displayName&quot;: &quot;A String&quot;, # The localized name of this feature. Currently only returned for roads.
      &quot;geometry&quot;: { # Represents the geometry of a feature, that is, the shape that it has on the 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. # The geometry of this feature, representing the space that it occupies in the world.
        &quot;areas&quot;: [ # The areas present in this geometry.
          { # Represents an area. Used to represent regions such as water, parks, etc. Next ID: 10
            &quot;basemapZOrder&quot;: { # Metadata necessary to determine the ordering of a particular basemap element relative to others. To render the basemap correctly, sort by z-plane, then z-grade, then z-within-grade. # The z-order of this geometry when rendered on a flat basemap. Geometry with a lower z-order should be rendered beneath geometry 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. Unlike Area.z_order this can be used to compare with Line.basemap_z_order, and in fact may yield more accurate rendering (where a line may be rendered beneath an area).
              &quot;zGrade&quot;: 42, # The second most significant component of the ordering of a component to be rendered onto the basemap.
              &quot;zPlane&quot;: 42, # The most significant component of the ordering of a component to be rendered onto the basemap.
              &quot;zWithinGrade&quot;: 42, # The least significant component of the ordering of a component to be rendered onto the basemap.
            },
            &quot;hasExternalEdges&quot;: True or False, # 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.
            &quot;internalEdges&quot;: [ # 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 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.
              42,
            ],
            &quot;loopBreaks&quot;: [ # Identifies the boundary loops of the polygon. Only set for INDEXED_TRIANGLE polygons. Each value is an index into the vertices array indicating the 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.
              42,
            ],
            &quot;triangleIndices&quot;: [ # 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.
              42,
            ],
            &quot;type&quot;: &quot;A String&quot;, # The polygon encoding type used for this area.
            &quot;vertexOffsets&quot;: { # 2D vertex list used for lines and areas. Each entry represents an offset from 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 in vertex offsets as [(1, 1), (1, 1), (-1, 0)]. # The vertices present in the polygon defining the area.
              &quot;xOffsets&quot;: [ # List of x-offsets in local tile coordinates.
                42,
              ],
              &quot;yOffsets&quot;: [ # List of y-offsets in local tile coordinates.
                42,
              ],
            },
            &quot;zOrder&quot;: 42, # The z-ordering of this area. Areas with a lower z-order should be rendered 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. Prefer Area.basemap_z_order.
          },
        ],
        &quot;extrudedAreas&quot;: [ # The extruded areas present in this geometry. Not populated if modeled_volumes are included in this geometry unless always_include_building_footprints is set in GetFeatureTileRequest, in which case the client should decide which (extruded areas or modeled volumes) should be used (they should not be rendered together).
          { # 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 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.
            &quot;area&quot;: { # Represents an area. Used to represent regions such as water, parks, etc. Next ID: 10 # The area representing the footprint of the extruded area.
              &quot;basemapZOrder&quot;: { # Metadata necessary to determine the ordering of a particular basemap element relative to others. To render the basemap correctly, sort by z-plane, then z-grade, then z-within-grade. # The z-order of this geometry when rendered on a flat basemap. Geometry with a lower z-order should be rendered beneath geometry 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. Unlike Area.z_order this can be used to compare with Line.basemap_z_order, and in fact may yield more accurate rendering (where a line may be rendered beneath an area).
                &quot;zGrade&quot;: 42, # The second most significant component of the ordering of a component to be rendered onto the basemap.
                &quot;zPlane&quot;: 42, # The most significant component of the ordering of a component to be rendered onto the basemap.
                &quot;zWithinGrade&quot;: 42, # The least significant component of the ordering of a component to be rendered onto the basemap.
              },
              &quot;hasExternalEdges&quot;: True or False, # 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.
              &quot;internalEdges&quot;: [ # 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 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.
                42,
              ],
              &quot;loopBreaks&quot;: [ # Identifies the boundary loops of the polygon. Only set for INDEXED_TRIANGLE polygons. Each value is an index into the vertices array indicating the 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.
                42,
              ],
              &quot;triangleIndices&quot;: [ # 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.
                42,
              ],
              &quot;type&quot;: &quot;A String&quot;, # The polygon encoding type used for this area.
              &quot;vertexOffsets&quot;: { # 2D vertex list used for lines and areas. Each entry represents an offset from 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 in vertex offsets as [(1, 1), (1, 1), (-1, 0)]. # The vertices present in the polygon defining the area.
                &quot;xOffsets&quot;: [ # List of x-offsets in local tile coordinates.
                  42,
                ],
                &quot;yOffsets&quot;: [ # List of y-offsets in local tile coordinates.
                  42,
                ],
              },
              &quot;zOrder&quot;: 42, # The z-ordering of this area. Areas with a lower z-order should be rendered 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. Prefer Area.basemap_z_order.
            },
            &quot;maxZ&quot;: 42, # The z-value in local tile coordinates where the extruded area ends.
            &quot;minZ&quot;: 42, # 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.
          },
        ],
        &quot;lines&quot;: [ # The lines present in this geometry.
          { # Represents a 2D polyline. Used to represent segments such as roads, train tracks, etc.
            &quot;basemapZOrder&quot;: { # Metadata necessary to determine the ordering of a particular basemap element relative to others. To render the basemap correctly, sort by z-plane, then z-grade, then z-within-grade. # The z-order of this geometry when rendered on a flat basemap. Geometry with a lower z-order should be rendered beneath geometry 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. Unlike Line.z_order this can be used to compare with Area.basemap_z_order, and in fact may yield more accurate rendering (where a line may be rendered beneath an area).
              &quot;zGrade&quot;: 42, # The second most significant component of the ordering of a component to be rendered onto the basemap.
              &quot;zPlane&quot;: 42, # The most significant component of the ordering of a component to be rendered onto the basemap.
              &quot;zWithinGrade&quot;: 42, # The least significant component of the ordering of a component to be rendered onto the basemap.
            },
            &quot;vertexOffsets&quot;: { # 2D vertex list used for lines and areas. Each entry represents an offset from 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 in vertex offsets as [(1, 1), (1, 1), (-1, 0)]. # The vertices present in the polyline.
              &quot;xOffsets&quot;: [ # List of x-offsets in local tile coordinates.
                42,
              ],
              &quot;yOffsets&quot;: [ # List of y-offsets in local tile coordinates.
                42,
              ],
            },
            &quot;zOrder&quot;: 42, # 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. Prefer Line.basemap_z_order.
          },
        ],
        &quot;modeledVolumes&quot;: [ # The modeled volumes present in this geometry. Not populated unless enable_modeled_volumes has been set in GetFeatureTileRequest.
          { # Represents a modeled volume in 3D space. Used to represent 3D buildings.
            &quot;strips&quot;: [ # The triangle strips present in this mesh.
              { # Represents a strip of triangles. Each triangle uses the last edge of the 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.
                &quot;vertexIndices&quot;: [ # Index into the vertex_offset array representing the next vertex in the triangle strip.
                  42,
                ],
              },
            ],
            &quot;vertexOffsets&quot;: { # 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). # The vertices present in the mesh defining the modeled volume.
              &quot;xOffsets&quot;: [ # List of x-offsets in local tile coordinates.
                42,
              ],
              &quot;yOffsets&quot;: [ # List of y-offsets in local tile coordinates.
                42,
              ],
              &quot;zOffsets&quot;: [ # List of z-offsets in local tile coordinates.
                42,
              ],
            },
          },
        ],
      },
      &quot;placeId&quot;: &quot;A String&quot;, # Place ID of this feature, suitable for use in Places API details requests.
      &quot;relations&quot;: [ # Relations to other features.
        { # 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.
          &quot;relatedFeatureIndex&quot;: 42, # Zero-based index to look up the related feature from the list of features in the tile.
          &quot;relationType&quot;: &quot;A String&quot;, # Relation type between the origin feature to the related feature.
        },
      ],
      &quot;segmentInfo&quot;: { # Extra metadata relating to segments. # Metadata for features with the SEGMENT FeatureType.
        &quot;roadInfo&quot;: { # Extra metadata relating to roads. # Metadata for features with the ROAD FeatureType.
          &quot;isPrivate&quot;: True or False, # Road has signage discouraging or prohibiting use by the general public. E.g., roads with signs that say &quot;Private&quot;, or &quot;No trespassing.&quot;
        },
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of this feature.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Resource name of the tile. The tile resource name is prefixed by its collection ID `tiles/` followed by the resource ID, which encodes the tile&#x27;s global x and y coordinates and zoom level as `@,,z`. For example, `tiles/@1,2,3z`.
  &quot;providers&quot;: [ # Data providers for the data contained in this tile.
    { # Information about the data providers that should be included in the attribution string shown by the client.
      &quot;description&quot;: &quot;A String&quot;, # Attribution string for this provider. This string is not localized.
    },
  ],
  &quot;status&quot;: &quot;A String&quot;, # Tile response status code to support tile caching.
  &quot;versionId&quot;: &quot;A String&quot;, # 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.
}</pre>
</div>

</body></html>