Book Image

OpenLayers 3: Beginner's Guide

By : Thomas Gratier, Paul Spencer, Erik Hazzard
Book Image

OpenLayers 3: Beginner's Guide

By: Thomas Gratier, Paul Spencer, Erik Hazzard

Overview of this book

<p>This book is a practical, hands-on guide that provides you with all the information you need to get started with mapping using the OpenLayers 3 library.</p> <p>The book starts off by showing you how to create a simple map. Through the course of the book, we will review each component needed to make a map in OpenLayers 3, and you will end up with a full-fledged web map application. You will learn the key role of each OpenLayers 3 component in making a map, and important mapping principles such as projections and layers. You will create your own data files and connect to backend servers for mapping. A key part of this book will also be dedicated to building a mapping application for mobile devices and its specific components.</p>
Table of Contents (22 chapters)
OpenLayers 3 Beginner's Guide
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Index

Time for action – working with the TileVector source


The use of a tile grid removes the need to implement a loader function; so, there is less work involved in setting it up. Let's see how easy it is to use the TileVector source:

  1. Starting from the previous example, add the following after the serverVector layer is defined:

    var tiledSource = new ol.source.TileVector({
      format: new ol.format.TopoJSON({
        defaultProjection: 'EPSG:4326'
      }),
      projection: 'EPSG:3857',
      tileGrid: new ol.tilegrid.XYZ({
        maxZoom: 19
      }),
      url: 'http://{a-c}.tile.openstreetmap.us/vectiles-water-areas/{z}/{x}/{y}.topojson'
    });
  2. Now, add create a vector layer using this source:

    var tiledVector = new ol.layer.vector({
      source: tiledSource,
      style: vectorStyle
    });
  3. And finally, change the map to load the tiledVector layer instead of the serverVector layer:

    var map = new ol.Map({
      renderer: 'canvas',
      target: 'map',
      layers: [tiledRaster, tiledVector],
      view: view
    });
  4. Load this in your browser and you should see...