Map Tile API Developer's Guide

Metainfo Tile Format for Metadata Generation Two

Every metainfo tile displays the following information in a JSON structure.
  • metadata – container for the response
    • street labels – array of street labels
      • name
      • font size
      • vertices – array of tile coordinates
    • labels – array of labels
      • name
      • type
      • bounding boxes – array of boxes
    • city center labels - array of city center labels
      • name
      • box 1
      • box 2
      • city center info
        • type
        • name
        • alternative names – array of names
          • country code
          • name
        • country code
        • position
          • latitude
          • longitude
        • population
    • buildings – array of buildings
      • id
      • vertices – array of vertices
      • polygons – array of polygons
      • outlines – array of outlines
    • transit stops – array of transit stops
      • name
      • bounding boxes – array of bounding boxes
        • box 1
        • box 2
      • info – array of transit stop information
        • geoposition
          • latitude
          • longitude
        • official name
        • informal name
        • places id
        • operating hours
          • Monday
          • Tuesday
          • Wednesday
          • Thursday
          • Friday
          • Saturday
          • Sunday
          • Holiday
        • parking hours
          • Monday
          • Tuesday
          • Wednesday
          • Thursday
          • Friday
          • Saturday
          • Sunday
          • Holiday
    • POIs – array of Points of Interest (POIs)
      • name
      • geoposition
        • latitude
        • longitude
      • bounding boxes – array of bounding boxes
        • box 1
        • box 2
      • info - array of POI information
The format is as follows:
{
  "metadata": {
    "street labels": [],
    "labels": [],
    "city center labels": [],
    "buildings": [],
    "transit stops": [],
    "POIs": []
  }
}

Street labels

The street labels field displays an array of labels containing the name of the street, the font size used to render it and an array of vertices to draw the polyline that represents the bounding box. The format is as follows:
"name": "",
"font size": "",
"vertices: []
Name Type Description
name String Name of the street
font size String Font size used to render the label, it is a number displayed as a string
vertices Array of tile coordinates Array containing all vertices needed to draw a polyline that creates a bounding box on the street label, an array of x/y values, as in [ x1, y1, x2, y2 ... ]

Labels

The Labels field displays information about labels that are not street labels, including the name, the type and the location (bounding box). The format is an array of labels, each one with the following format:
"name": "",
"type": "",
"bounding boxes": []
Name Type Description
name String Name displayed on the label
type String One of the following types: Mountain Peak, Text, Pedestrian Point, Roadsign

When the type is Roadsign, there are additional fields:

  1. region (ISO country code)
  2. category
  3. route name
  4. route level
  5. uri
bounding boxes Array of Bounding Box Array containing all the bounding boxes of the label, that can contain a box 1 or box 2.

City Center Labels

This field displays an array of city center labels, each one including the name and location (bounding box) of the name, the city center additional information, which shows the type of city, official displayed name, the alternative names in different languages, the country code, position (latitude and longitude) and population. The format is as follows:
"name": "",
"box 1" : [],
"box 2": [],
"city center info": {
  "type": "",
  "name": "",
  "alternative names": [
    [
      "",
      ""
    ]
  ],
  "country code": "",
  "position": {
    "latitude":,
    "longitude":
  },
  "population":
}
Name Type Description
name String Name of the city
box 1 Bounding Box Location of the text or icon in the tile
box 2 Bounding Box Location of the text or icon in the tile
city center info Structure Structure containing additional information for a city

Buildings

The buildings field contains a list of buildings for the current tile. The information provided allows you to:
  • identify buildings within a single tile or across several tiles using a building's unique ID
  • define the shape of a building in order to select or highlight it on the map
The shape of a building is provided as an array of vertices, polygons and outlines, where polygons respect winding logic which determines if the polygon is inner or outer. For each building, the following information is available:
  • the minimum number of polygons (polygons with holes) that cover the whole building top view
  • the outlines that indicate which sides are actual building limits and which sides are tile borders
For example:
"buildings":[ { "id": "1597687598890565952", 
  "vertices": [ 256, 133.83, 256, 32.36, 186, 72.56, 224, 154.69 ], 
  "polygons": [ [ 0, 1, 2, 3]], 
  "outlines": [ [ 2, 1 ], [ 0, 3, 2 ]] } ]
The format is as follows:
"id": "",
"vertices": [],
"polygons": [],
"outlines": []]
Name Type Description
id String Internal id of the building
vertices Array Vertices (an array of x/y values, as in [ x1, y1, x2, y2 ... ] )
polygons Array Polygons (an array of polygons, each polygon being a set of indices of the vertices array)
outlines Array Outlines (an array of outlines, each outline being a set of indices of the vertices array)

Transit stops

The transit stop field displays the name, bounding boxes and related information.
Note: Empty fields are filtered out and not present in the output, such as informal name, places ID, operating hours, parking hours, and so on.
The format is as follows:
"name": "",
"bounding boxes": [
  "box 1": [],
  "box 2": []
],
"info": [
  {
    "position": {
      "latitude": ,
      "longitude":
    },
    "official name": "",
    "informal name": "",
    "places id": "",
    "operating hours": {
      "Monday": [],
      "Tuesday": [],
      "Wednesday": [],
      "Thursday": [],
      "Friday": [],
      "Saturday": [],
      "Sunday": [],
      "Holiday": []
    },
    "parking hours": {
      "Monday": [],
      "Tuesday": [],
      "Wednesday": [],
      "Thursday": [],
      "Friday": [],
      "Saturday": [],
      "Sunday": [],
      "Holiday": []
    }
  }
]
Name Type Description
name String Name of the transit stop
bounding boxes Bounding box Array of bounding boxes (box 1 or box 2 or both)
info Transit Stop Info

Each transit stop info has:

  1. position (latitude/longitude)
  2. official name
  3. informal name
  4. places ID
  5. operating hours
  6. parking hours
Note: Parking information is provided for Transit Stations such as large Train and Bus Stations, so that users can have an entry level understanding of whether they may be able to Park & Ride at that location. The following cases are covered in the content:
  • Parking Hours = Difference between whether or not overnight parking is allowed.

POIs

The POIs field displays information about different POIs in the map including the name, geoposition, bounding boxes and an array of POI info objects. If you want to get information about POIs in the metainfo tile, you need to use the pois parameter.

The format is as follows:
"name": "",
"geoposition": {
  "latitude": ,
  "longitude":
},
"bounding boxes": [],
"info": []
Name Type Description
name String Name of the POI
geoposition Geo Coordinate Location of the POI
bounding boxes Bounding box Array of bounding boxes (box 1 or box 2)
info Array of POI Info

Each POI info object can have the following attributes:

  • ADDR COUNTRY CODE
  • ADDR COUNTRY NAME
  • ADDR STATE NAME
  • ADDR STATE CODE
  • ADDR PROVINCE NAME
  • ADDR COUNTY NAME
  • ADDR CITY NAME
  • ADDR DISTRICT NAME
  • ADDR POSTAL CODE
  • ADDR TOWNSHIP NAME
  • ADDR NEIGHBORHOOD NAME
  • ADDR STREET NAME
  • ADDR HOUSE NUMBER
  • ADDR CONTINENT NAME
  • ADDR TYPE NAME
  • ADDR POPULATION
  • ADDR BUILDING NAME
  • ADDR BUILDING FLOOR
  • ADDR BUILDING ROOM
  • ADDR BUILDING ZONE
  • PLACE NAME
  • PLACE PRE NAME
  • PLACE POST NAME
  • PLACE TYPE
  • PLACE CATEGORY
  • PLACE CATEGORY ID
  • PLACE DESCRIPTION
  • PLACE PHONE NUMBER
  • PLACE URL
  • PLACE ID
  • PLACE PREMIUM URL ID
  • PLACE PREMIUM NODE ID
  • PLACE ADVERTISEMENT STRING
  • TZ OFFSET MINUTES
  • OTHER DATA
  • PLACE ICON ID
  • LOCATION TYPE
  • LOCATION META
  • LOCATION TEXT
  • ADDR AREA ID
Common fields
Field Name Type Description
Bounding Box left Float Location of the left coordinate in the tile
top Float Location of the top coordinate in the tile
width Float Width of the bounding box
height Float Height of the bounding box
Geo coordinate latitude Float ( 6 decimals ) Latitude of the geo coordinate
longitude Float ( 6 decimals ) Longitude of the geo coordinate
City Center Info type String Type of city between National Capital, Provincial Capital and Other
name String Official name of the city
alternative names Array of arrays Alternative names of the city, each array containing the language code as String and the name as String
country code String Three letter country code following ISO
position Geo coordinate Location of the city center
population Integer Population of the city
Tile Coordinate x Integer Coordinate x of the tile coordinate
y Integer Coordinate y of the tile coordinate

Two examples are provided in this section, both using mgen=2, to illustrate the format described above. For additional information about how to use the mgen parameter, see the Examples topic.

This example shows a parameter in Berlin and the request looks like:
https://2.base.maps.cit.api.here.com/maptile/2.1/
  maptile/newest/normal.day/9/275/167/256/png8
  ?app_id={YOUR_APP_ID}
  &app_code={YOUR_APP_CODE}
  &metadata=metaonly
  &mgen=2
The response looks like:
{ "metadata" : {
"street labels":[  ],
"labels":[{ "name": "1", "type":"ROADSIGN", "bounding boxes": [ { "box 1":[ 94.62, 239.56, 18, 12 ] } ], "region": "DEU", "category": 1, "route name": "B1", "route level": 3, "uri": "http://image.maps.api.here.com/mia/1.6/roadsign?category=1&region=DEU&label=B1&route_level=3&app_id=%7BYOUR_APP_ID&app_code=%7BYOUR_APP_CODE%7D" },
{ "name": "158", "type":"ROADSIGN", "bounding boxes": [ { "box 1":[ 166.38, 129.27, 22, 12 ] } ], "region": "DEU", "category": 1, "route name": "B158", "route level": 3, "uri": "http://image.maps.api.here.com/mia/1.6/roadsign?category=1&region=DEU&label=B158&route_level=3&app_id=%7BYOUR_APP_ID&app_code=%7BYOUR_APP_CODE%7D" },
{ "name": "114", "type":"ROADSIGN", "bounding boxes": [ { "box 1":[ 13.38, 158.60, 23, 16 ] } ], "region": "DEU", "category": 0, "route name": "A114", "route level": 2, "uri": "http://image.maps.api.here.com/mia/1.6/roadsign?category=0&region=DEU&label=A114&route_level=2&app_id=%7BYOUR_APP_ID&app_code=%7BYOUR_APP_CODE%7D" },
{ "name": "11", "type":"ROADSIGN", "bounding boxes": [ { "box 1":[ 61.50, 166.63, 22, 16 ] } ], "region": "DEU", "category": 0, "route name": "A11", "route level": 2, "uri": "http://image.maps.api.here.com/mia/1.6/roadsign?category=0&region=DEU&label=A11&route_level=2&app_id=%7BYOUR_APP_ID&app_code=%7BYOUR_APP_CODE%7D" },
{ "name": "2", "type":"ROADSIGN", "bounding boxes": [ { "box 1":[ 36.62, 188.59, 18, 12 ] } ], "region": "DEU", "category": 1, "route name": "B2", "route level": 3, "uri": "http://image.maps.api.here.com/mia/1.6/roadsign?category=1&region=DEU&label=B2&route_level=3&app_id=%7BYOUR_APP_ID&app_code=%7BYOUR_APP_CODE%7D" },
{ "name": "109", "type":"ROADSIGN", "bounding boxes": [ { "box 1":[ 49.88, 28.25, 22, 12 ] } ], "region": "DEU", "category": 1, "route name": "B109", "route level": 3, "uri": "http://image.maps.api.here.com/mia/1.6/roadsign?category=1&region=DEU&label=B109&route_level=3&app_id=%7BYOUR_APP_ID&app_code=%7BYOUR_APP_CODE%7D" }],
"city center labels":[{"name": "Berlin", "box 2":[ 9, 218, 49.45, 20.50 ], "box 1":[ 4, 234, 5, 5 ], "city center info": {"type":"NATIONAL CAPITAL", "name": "Berlin", "alternative names":[["ARA", "برلين"], ["BAQ", "Berlin"], ["BUL", "Берлин"], ["BUX", "Berlin"], ["CAT", "Berlín"], ["CHI", "柏林"], ["CHT", "柏林"], ["CZE", "Berlín"], ["CZX", "Berlin"], ["DAN", "Berlin"], ["DUT", "Berlijn"], ["ENG", "Berlin"], ["EST", "Berliin"], ["ESX", "Berliin"], ["FIN", "Berliini"], ["FRE", "Berlin"], ["GER", "Berlin"], ["GRE", "Βερολίνο"], ["GRX", "Verolino"], ["HIN", "बर्लिन"], ["HIX", "Barlin"], ["HUN", "Berlin"], ["HUX", "Berlin"], ["ICE", "Berlín"], ["IND", "Berlin"], ["ITA", "Berlino"], ["JPN", "ベルリン"], ["JPX", "Berurin"], ["KOR", "베를린"], ["KOX", "Be Reul Rin"], ["LAV", "Berlīne"], ["LAX", "Berline"], ["LIT", "Berlynas"], ["LIX", "Berlynas"], ["MAY", "Berlin"], ["NOR", "Berlin"], ["POL", "Berlin"], ["POR", "Berlim"], ["POX", "Berlin"], ["PYN", "Bo Lin"], ["RMX", "Berlin"], ["RUM", "Berlin"], ["RUS", "Берлин"], ["RUX", "Berlin"], ["SCR", "Berlin"], ["SLO", "Berlín"], ["SLX", "Berlin"], ["SPA", "Berlín"], ["SRX", "Berlin"], ["SWE", "Berlin"], ["THA", "เบอร์ลิน"], ["TUR", "Berlin"], ["TUX", "Berlin"], ["UKR", "Берлін"], ["UKX", "Berlin"]], "country code": "DEU", "position": {"latitude":52.514648, "longitude":13.375854}, "population": 3442675 } },
{"name": "Eberswalde", "box 2":[ 167, 36, 58.22, 11.75 ], "box 1":[ 165, 45, 2, 2 ], "city center info": {"type":"OTHER", "name": "Eberswalde", "alternative names":[], "country code": "DEU", "position": {"latitude":52.833252, "longitude":13.815308}, "population": 41175 } },
{"name": "Bernau bei Berlin", "box 2":[ 83, 117, 55.08, 22.75 ], "box 1":[ 81, 137, 2, 2 ], "city center info": {"type":"OTHER", "name": "Bernau bei Berlin", "alternative names":[], "country code": "DEU", "position": {"latitude":52.679443, "longitude":13.584595}, "population": 36154 } },
{"name": "Strausberg", "box 2":[ 191, 192, 51.91, 10.50 ], "box 1":[ 189, 200, 2, 2 ], "city center info": {"type":"OTHER", "name": "Strausberg", "alternative names":[], "country code": "DEU", "position": {"latitude":52.575073, "longitude":13.881226}, "population": 26221 } },
{"name": "Wandlitz", "box 2":[ 43, 83, 40.47, 10.50 ], "box 1":[ 41, 91, 2, 2 ], "city center info": {"type":"OTHER", "name": "Wandlitz", "alternative names":[], "country code": "DEU", "position": {"latitude":52.756348, "longitude":13.474731}, "population": 21530 } },
{"name": "Neuenhagen bei Berlin", "box 2":[ 121, 211, 58.64, 20.50 ], "box 1":[ 119, 229, 2, 2 ], "city center info": {"type":"OTHER", "name": "Neuenhagen bei Berlin", "alternative names":[], "country code": "DEU", "position": {"latitude":52.525635, "longitude":13.688965}, "population": 16755 } },
{"name": "Ahrensfelde", "box 2":[ 81, 192, 56.22, 10.50 ], "box 1":[ 79, 200, 2, 2 ], "city center info": {"type":"OTHER", "name": "Ahrensfelde", "alternative names":[], "country code": "DEU", "position": {"latitude":52.575073, "longitude":13.579102}, "population": 13114 } },
{"name": "Bad Freienwalde (Oder)", "box 2":[ 165.17, 56, 75.83, 20.50 ], "box 1":[ 241, 74, 2, 2 ], "city center info": {"type":"OTHER", "name": "Bad Freienwalde (Oder)", "alternative names":[], "country code": "DEU", "position": {"latitude":52.783813, "longitude":14.024048}, "population": 12964 } },
{"name": "Werneuchen", "box 2":[ 137, 159, 57.83, 10.50 ], "box 1":[ 135, 167, 2, 2 ], "city center info": {"type":"OTHER", "name": "Werneuchen", "alternative names":[], "country code": "DEU", "position": {"latitude":52.630005, "longitude":13.732910}, "population": 7943 } },
{"name": "Biesenthal", "box 2":[ 105, 76, 49.03, 10.50 ], "box 1":[ 103, 84, 2, 2 ], "city center info": {"type":"OTHER", "name": "Biesenthal", "alternative names":[], "country code": "DEU", "position": {"latitude":52.767334, "longitude":13.645020}, "population": 5563 } },
{"name": "Rehfelde", "box 2":[ 207, 218, 42.12, 10.50 ], "box 1":[ 205, 226, 2, 2 ], "city center info": {"type":"OTHER", "name": "Rehfelde", "alternative names":[], "country code": "DEU", "position": {"latitude":52.531128, "longitude":13.925171}, "population": 4462 } },
{"name": "Liebenwalde", "box 2":[ 15, 13, 57.72, 10.50 ], "box 1":[ 13, 21, 2, 2 ], "city center info": {"type":"OTHER", "name": "Liebenwalde", "alternative names":[], "country code": "DEU", "position": {"latitude":52.871704, "longitude":13.397827}, "population": 4390 } },
{"name": "Chorin", "box 2":[ 189, 0, 31.52, 10.50 ], "box 1":[ 187, 2, 2, 2 ], "city center info": {"type":"OTHER", "name": "Chorin", "alternative names":[], "country code": "DEU", "position": {"latitude":52.904663, "longitude":13.875732}, "population": 2430 } },
{"name": "Oderberg", "box 2":[ 203.75, 17, 45.25, 10.50 ], "box 1":[ 249, 25, 2, 2 ], "city center info": {"type":"OTHER", "name": "Oderberg", "alternative names":[], "country code": "DEU", "position": {"latitude":52.866211, "longitude":14.046021}, "population": 2229 } },
{"name": "Britz", "box 2":[ 139.81, 4, 23.19, 10.50 ], "box 1":[ 163, 12, 2, 2 ], "city center info": {"type":"OTHER", "name": "Britz", "alternative names":[], "country code": "DEU", "position": {"latitude":52.888184, "longitude":13.809814}, "population": 2201 } },
{"name": "Rüdnitz", "box 2":[ 99, 103, 36.39, 10.50 ], "box 1":[ 97, 111, 2, 2 ], "city center info": {"type":"OTHER", "name": "Rüdnitz", "alternative names":[], "country code": "DEU", "position": {"latitude":52.723389, "longitude":13.628540}, "population": 1839 } },
{"name": "Marienwerder", "box 2":[ 89, 30, 63.73, 10.50 ], "box 1":[ 87, 38, 2, 2 ], "city center info": {"type":"OTHER", "name": "Marienwerder", "alternative names":[], "country code": "DEU", "position": {"latitude":52.844238, "longitude":13.601074}, "population": 1731 } },
{"name": "Prötzel", "box 2":[ 210.95, 152, 34.09, 10.50 ], "box 1":[ 227, 164, 2, 2 ], "city center info": {"type":"OTHER", "name": "Prötzel", "alternative names":[], "country code": "DEU", "position": {"latitude":52.635498, "longitude":13.985596}, "population": 1143 } }],
"buildings":[  ],
"transit stops":[  ],
"POIs":[  ]
}
}
This other example contains a metadata response for a close-up of a location in Berlin including street labels. The request looks like:
https://2.base.maps.cit.api.here.com
/maptile/2.1/maptile/newest/normal.day/13/4402/2685/256/png8
?app_id={YOUR_APP_ID}
&app_code={YOUR_APP_CODE}
&metadata=metaonly
&mgen=2
And the response looks like:
{ "metadata" : {
"street labels":[ { "name":"Hansastraße", "font size":"11", "vertices": [ 163.53, 118.07, 175.55, 102.83, 178.97, 98.52, 183, 93.89, 187.21, 90.07, 190.71, 87, 194.13, 84.78, 210.95, 75.05 ] },
{ "name":"Weißenseer Weg", "font size":"11", "vertices": [ 147.10, 240.99, 172.97, 288.05, 176.50, 297.99, 182.69, 319.32 ] } ],
"labels":[{ "name": "Volkspark Prenzlauer Berg", "type":"TEXT", "bounding boxes": [ { "box 2":[ 64.67, 243, 55.03, 37.75 ] } ] },
{ "name": "Weißenseepark", "type":"TEXT", "bounding boxes": [ { "box 2":[ 55.70, 78.21, 77.97, 11.75 ] } ] },
{ "name": "Sportforum Hohenschönhausen", "type":"TEXT", "bounding boxes": [ { "box 1":[ 167.44, 215.11, 11, 11 ] } ] },
{ "name": "Sportkomplex Buschallee", "type":"TEXT", "bounding boxes": [ { "box 1":[ 237.81, 60.93, 11, 11 ] } ] },
{ "name": "Sportforum Hohenschönhausen", "type":"TEXT", "bounding boxes": [ { "box 2":[ 123.16, 190.11, 99.55, 23.75 ] } ] },
{ "name": "Sportkomplex Buschallee", "type":"TEXT", "bounding boxes": [ { "box 2":[ 207.53, 35.93, 71.56, 23.75 ] } ] }],
"city center labels":[{"name": "Alt-Hohenschönhausen", "box 1":[ 248.95, 133.43, 126.09, 29.50 ], "city center info": {"type":"OTHER", "name": "Alt-Hohenschönhausen", "alternative names":[], "country code": "DEU", "position": {"latitude":52.547607, "longitude":13.500824}, "population": 0 } },
{"name": "Weißensee", "box 1":[ 84.66, 8.86, 70.67, 15.50 ], "city center info": {"type":"OTHER", "name": "Weißensee", "alternative names":[], "country code": "DEU", "position": {"latitude":52.561340, "longitude":13.467865}, "population": 0 } }],
"buildings":[  ],
"transit stops":[  ],
"POIs":[  ]
}
}