1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| import MVT from 'ol/format/MVT.js'; import Map from 'ol/Map.js'; import TileGrid from 'ol/tilegrid/TileGrid.js'; import VectorTileLayer from 'ol/layer/VectorTile.js'; import VectorTileSource from 'ol/source/VectorTile.js'; import View from 'ol/View.js'; import {Fill, Icon, Stroke, Style, Text} from 'ol/style.js'; import {get as getProjection} from 'ol/proj.js';
const key = 'Your Mapbox access token from https://mapbox.com/ here';
const resolutions = []; for (let i = 0; i <= 8; ++i) { resolutions.push(156543.03392804097 / Math.pow(2, i * 2)); }
function tileUrlFunction(tileCoord) { return ( 'https://{a-d}.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6/' + '{z}/{x}/{y}.vector.pbf?access_token=' + key ) .replace('{z}', String(tileCoord[0] * 2 - 1)) .replace('{x}', String(tileCoord[1])) .replace('{y}', String(tileCoord[2])) .replace( '{a-d}', 'abcd'.substr(((tileCoord[1] << tileCoord[0]) + tileCoord[2]) % 4, 1) ); }
const map = new Map({ layers: [ new VectorTileLayer({ source: new VectorTileSource({ attributions: '© <a href="https://www.mapbox.com/map-feedback/">Mapbox</a> ' + '© <a href="https://www.openstreetmap.org/copyright">' + 'OpenStreetMap contributors</a>', format: new MVT(), tileGrid: new TileGrid({ extent: getProjection('EPSG:3857').getExtent(), resolutions: resolutions, tileSize: 512, }), tileUrlFunction: tileUrlFunction, }), style: createMapboxStreetsV6Style(Style, Fill, Stroke, Icon, Text), }), ], target: 'map', view: new View({ center: [0, 0], minZoom: 1, zoom: 2, }), });
|