• JavaScript
  • HTML
                  
                  
/**
 * Shows the postcode layer provided by Platform Data Extension REST API
 * https://developer.here.com/platform-extensions/documentation/platform-data/topics/introduction.html
 *
 * @param  {H.Map} map      A HERE Map instance within the application
 */
function showPostcodes(map, bubble){
  var service = platform.getPlatformDataService();

  style = new H.map.SpatialStyle();
  // create tile provider and layer that displays postcode boundaries
  var boundariesProvider = new H.service.extension.platformData.TileProvider(service,
  {
    layerId: 'PSTLCB_GEN', level: 12
  }, {
      resultType: H.service.extension.platformData.TileProvider.ResultType.POLYLINE,
      styleCallback: function(data) {return style}
  });
  var boundaries = new H.map.layer.TileLayer(boundariesProvider);
  map.addLayer(boundaries);

  // create tile provider and layer that displays postcode centroids
  var centroidsProvider = new H.service.extension.platformData.TileProvider(service,
  {
    layerId: 'PSTLCB_MP', level: 12
  }, {
      resultType: H.service.extension.platformData.TileProvider.ResultType.MARKER
  });
  var centroids = new H.map.layer.MarkerTileLayer(centroidsProvider);
  map.addLayer(centroids);

  // add event listener that shows infobubble with basic information
  // about the postcode
  centroidsProvider.addEventListener('tap', function(ev) {
    var marker = ev.target;
    bubble.setPosition(marker.getGeometry());
    var str = 'Postal code: ' + marker.getData().getCell('POSTAL_CODE') + '
' + 'Country code: ' + marker.getData().getCell('ISO_COUNTRY_CODE') + '
' bubble.setContent(str); bubble.open(); }); } /** * Boilerplate map initialization code starts below: */ //Step 1: initialize communication with the platform // In your own code, replace variable window.apikey with your own apikey var platform = new H.service.Platform({ apikey: window.apikey }); var defaultLayers = platform.createDefaultLayers(); //Step 2: initialize a map - not specificing a location will give a whole world view. var map = new H.Map(document.getElementById('map'), defaultLayers.vector.normal.map, { pixelRatio: window.devicePixelRatio || 1 }); // add a resize listener to make sure that the map occupies the whole container window.addEventListener('resize', () => map.getViewPort().resize()); map.setCenter({lat:52.5159, lng:13.3777}); map.setZoom(13); //Step 3: make the map interactive // MapEvents enables the event system // Behavior implements default interactions for pan/zoom (also on mobile touch environments) var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map)); // Create the default UI components var ui = H.ui.UI.createDefault(map, defaultLayers); // create info bubble that is used to display the postcode data bubble = new H.ui.InfoBubble(map.getCenter(), { content: '' }); bubble.close(); ui.addBubble(bubble); // Now use the map as required... showPostcodes(map, bubble);
                  
                  
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes">
    <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
    
    <title>Map with postcodes from the Advanced Data Sets</title>
    <link rel="stylesheet" type="text/css" href="https://js.api.here.com/v3/3.1/mapsjs-ui.css" />
    <link rel="stylesheet" type="text/css" href="demo.css" />
    <link rel="stylesheet" type="text/css" href="styles.css" />
    <link rel="stylesheet" type="text/css" href="../template.css" />
    <script type="text/javascript" src='../test-credentials.js'></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-service.js"></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js"></script>
  <script type="text/javascript" src='../js-examples-rendering-helpers/iframe-height.js'></script></head>
  <body id="markers-on-the-map">

    <div class="page-header">
        <h1>Map with postcodes from the Advanced Data Sets</h1>
        <p>Display a map with the postcode boundaries overlay</p>
    </div>
    <p>
        This example displays a movable map initially centered on the <b>Brandenburg Gate</b> in 
        the centre of Berlin <i>(52.5159°N, 13.3777°E)</i> with the postcodes overlay provided by the 
        <a href="https://developer.here.com/documentation/platform-data/topics/what-is.html" target="_blank">Fleet Telematics Advanced Data Sets REST API</a>. 
        It's possible to display additional information about the postcode area by clicking on the marker.
    </p>
    <div id="map"></div>
    <h3>Code</h3>
    <p>
        The example uses <code>H.service.extension.platformData.TileProvider</code> class to fetch data 
        from the Fleet Telematics Advanced Data Sets service. Two providers are configured with the desired geometry 
        types (<code>H.service.extension.platformData.TileProvider.ResultType.POLYLINE</code> 
        for postcode borders and <code>H.service.extension.platformData.TileProvider.ResultType.MARKER</code> for postcode 
        centroids). The result is displayed on the map as two additional layers using an instance of the <code>H.map.layer.TileLayer</code>
         and <code>H.map.layer.MarkerTileLayer</code> correspondingly.
    </p>
    <script type="text/javascript" src='demo.js'></script>
  </body>
</html>