Use view projection tile grid in tile loadingstrategy
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
---
|
||||
layout: example.html
|
||||
title: WFS
|
||||
shortdesc: Example of using WFS with a Tile strategy.
|
||||
docs: >
|
||||
This example loads new features from GeoServer WFS with a tile based loading strategy.
|
||||
Calling the <code>useGeographic</code> function in the <code>'ol/proj'</code> module
|
||||
makes it so the map view uses geographic coordinates (even if the view projection is
|
||||
not geographic).
|
||||
tags: "vector, WFS, tile, strategy, loading, server, maptiler"
|
||||
cloak:
|
||||
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
|
||||
value: Get your own API key at https://www.maptiler.com/cloud/
|
||||
experimental: true
|
||||
---
|
||||
<div id="map" class="map"></div>
|
||||
@@ -0,0 +1,60 @@
|
||||
import GeoJSON from '../src/ol/format/GeoJSON.js';
|
||||
import Map from '../src/ol/Map.js';
|
||||
import VectorSource from '../src/ol/source/Vector.js';
|
||||
import View from '../src/ol/View.js';
|
||||
import XYZ from '../src/ol/source/XYZ.js';
|
||||
import {Stroke, Style} from '../src/ol/style.js';
|
||||
import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js';
|
||||
import {createXYZ} from '../src/ol/tilegrid.js';
|
||||
import {tile} from '../src/ol/loadingstrategy.js';
|
||||
import {useGeographic} from '../src/ol/proj.js';
|
||||
|
||||
useGeographic();
|
||||
|
||||
const vectorSource = new VectorSource({
|
||||
format: new GeoJSON(),
|
||||
url: function (extent) {
|
||||
return (
|
||||
'https://ahocevar.com/geoserver/wfs?service=WFS&' +
|
||||
'version=1.1.0&request=GetFeature&typename=osm:water_areas&' +
|
||||
'outputFormat=application/json&srsname=EPSG:4326&' +
|
||||
'bbox=' +
|
||||
extent.join(',') +
|
||||
',EPSG:4326'
|
||||
);
|
||||
},
|
||||
strategy: tile(createXYZ({tileSize: 512})),
|
||||
});
|
||||
|
||||
const vector = new VectorLayer({
|
||||
source: vectorSource,
|
||||
style: new Style({
|
||||
stroke: new Stroke({
|
||||
color: 'rgba(0, 0, 255, 1.0)',
|
||||
width: 2,
|
||||
}),
|
||||
}),
|
||||
});
|
||||
|
||||
const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB';
|
||||
const attributions =
|
||||
'<a href="https://www.maptiler.com/copyright/" target="_blank">© MapTiler</a> ' +
|
||||
'<a href="https://www.openstreetmap.org/copyright" target="_blank">© OpenStreetMap contributors</a>';
|
||||
|
||||
const raster = new TileLayer({
|
||||
source: new XYZ({
|
||||
attributions: attributions,
|
||||
url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key,
|
||||
maxZoom: 20,
|
||||
}),
|
||||
});
|
||||
|
||||
const map = new Map({
|
||||
layers: [raster, vector],
|
||||
target: document.getElementById('map'),
|
||||
view: new View({
|
||||
center: [-80.0298, 43.4578],
|
||||
maxZoom: 19,
|
||||
zoom: 12,
|
||||
}),
|
||||
});
|
||||
Reference in New Issue
Block a user