Fix and simplify geojson-vt example
This commit is contained in:
+16
-22
@@ -6,7 +6,7 @@ import VectorTileSource from '../src/ol/source/VectorTile.js';
|
|||||||
import {Tile as TileLayer, VectorTile as VectorTileLayer} from '../src/ol/layer.js';
|
import {Tile as TileLayer, VectorTile as VectorTileLayer} from '../src/ol/layer.js';
|
||||||
import Projection from '../src/ol/proj/Projection.js';
|
import Projection from '../src/ol/proj/Projection.js';
|
||||||
|
|
||||||
|
// Converts geojson-vt data to GeoJSON
|
||||||
const replacer = function(key, value) {
|
const replacer = function(key, value) {
|
||||||
if (value.geometry) {
|
if (value.geometry) {
|
||||||
let type;
|
let type;
|
||||||
@@ -46,11 +46,6 @@ const replacer = function(key, value) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const tilePixels = new Projection({
|
|
||||||
code: 'TILE_PIXELS',
|
|
||||||
units: 'tile-pixels'
|
|
||||||
});
|
|
||||||
|
|
||||||
const map = new Map({
|
const map = new Map({
|
||||||
layers: [
|
layers: [
|
||||||
new TileLayer({
|
new TileLayer({
|
||||||
@@ -73,23 +68,22 @@ fetch(url).then(function(response) {
|
|||||||
debug: 1
|
debug: 1
|
||||||
});
|
});
|
||||||
const vectorSource = new VectorTileSource({
|
const vectorSource = new VectorTileSource({
|
||||||
format: new GeoJSON(),
|
format: new GeoJSON({
|
||||||
tileLoadFunction: function(tile) {
|
// Data returned from geojson-vt is in tile pixel units
|
||||||
const format = tile.getFormat();
|
dataProjection: new Projection({
|
||||||
const tileCoord = tile.getTileCoord();
|
code: 'TILE_PIXELS',
|
||||||
|
units: 'tile-pixels',
|
||||||
|
extent: [0, 0, 4096, 4096]
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
tileUrlFunction: function(tileCoord) {
|
||||||
const data = tileIndex.getTile(tileCoord[0], tileCoord[1], tileCoord[2]);
|
const data = tileIndex.getTile(tileCoord[0], tileCoord[1], tileCoord[2]);
|
||||||
|
const geojson = JSON.stringify({
|
||||||
const features = format.readFeatures(
|
type: 'FeatureCollection',
|
||||||
JSON.stringify({
|
features: data ? data.features : []
|
||||||
type: 'FeatureCollection',
|
}, replacer);
|
||||||
features: data ? data.features : []
|
return 'data:application/json;charset=UTF-8,' + geojson;
|
||||||
}, replacer));
|
}
|
||||||
tile.setLoader(function() {
|
|
||||||
tile.setFeatures(features);
|
|
||||||
tile.setProjection(tilePixels);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
url: 'data:' // arbitrary url, we don't use it in the tileLoadFunction
|
|
||||||
});
|
});
|
||||||
const vectorLayer = new VectorTileLayer({
|
const vectorLayer = new VectorTileLayer({
|
||||||
source: vectorSource
|
source: vectorSource
|
||||||
|
|||||||
Reference in New Issue
Block a user