Update links to external resources
This commit is contained in:
@@ -4,7 +4,7 @@ Thanks for your interest in contributing to OpenLayers. Please see the project'
|
|||||||
|
|
||||||
## Asking Questions
|
## Asking Questions
|
||||||
|
|
||||||
Please ask questions about using the library on [Stack Overflow using the tag 'openlayers'](http://stackoverflow.com/questions/tagged/openlayers).
|
Please ask questions about using the library on [Stack Overflow using the tag 'openlayers'](https://stackoverflow.com/questions/tagged/openlayers).
|
||||||
|
|
||||||
When you want to get involved and discuss new features or changes, please use [the mailing list](https://groups.google.com/forum/#!forum/openlayers-dev).
|
When you want to get involved and discuss new features or changes, please use [the mailing list](https://groups.google.com/forum/#!forum/openlayers-dev).
|
||||||
|
|
||||||
@@ -68,12 +68,12 @@ easily-understandable chunks. Any individual commit should not add more than
|
|||||||
one new class or one new function. Do not submit commits that change thousands
|
one new class or one new function. Do not submit commits that change thousands
|
||||||
of lines or that contain more than one distinct logical change. Trivial
|
of lines or that contain more than one distinct logical change. Trivial
|
||||||
commits, e.g. to fix lint errors, should be merged into the commit that
|
commits, e.g. to fix lint errors, should be merged into the commit that
|
||||||
introduced the error. See the [Atomic Commit Convention on Wikipedia](http://en.wikipedia.org/wiki/Atomic_commit#Atomic_Commit_Convention) for more detail.
|
introduced the error. See the [Atomic Commit Convention on Wikipedia](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_Commit_Convention) for more detail.
|
||||||
|
|
||||||
`git apply --patch` and `git rebase` can help you create a clean commit
|
`git apply --patch` and `git rebase` can help you create a clean commit
|
||||||
history.
|
history.
|
||||||
[Reviewboard.org](http://www.reviewboard.org/docs/codebase/dev/git/clean-commits/)
|
[Reviewboard.org](https://www.reviewboard.org/docs/codebase/dev/git/clean-commits/)
|
||||||
and [Pro GIT](http://git-scm.com/book/en/Git-Tools-Rewriting-History) have
|
and [Pro GIT](https://git-scm.com/book/en/Git-Tools-Rewriting-History) have
|
||||||
explain how to use them.
|
explain how to use them.
|
||||||
|
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ explain how to use them.
|
|||||||
|
|
||||||
Commit messages should be short, begin with a verb in the imperative, and
|
Commit messages should be short, begin with a verb in the imperative, and
|
||||||
contain no trailing punctuation. We follow
|
contain no trailing punctuation. We follow
|
||||||
http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
||||||
for the formatting of commit messages.
|
for the formatting of commit messages.
|
||||||
|
|
||||||
Git commit message should look like:
|
Git commit message should look like:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ You will obviously start by
|
|||||||
The minimum requirements are:
|
The minimum requirements are:
|
||||||
|
|
||||||
* Git
|
* Git
|
||||||
* [Node.js](http://nodejs.org/) (version 8 and above)
|
* [Node.js](https://nodejs.org/) (version 8 and above)
|
||||||
|
|
||||||
The executables `git` and `node` should be in your `PATH`.
|
The executables `git` and `node` should be in your `PATH`.
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ TypeScript users may want to use a [third-party types package](https://github.co
|
|||||||
|
|
||||||
## Supported Browsers
|
## Supported Browsers
|
||||||
|
|
||||||
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/). This includes Chrome, Firefox, Safari and Edge.
|
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](https://262.ecma-international.org/5.1/). This includes Chrome, Firefox, Safari and Edge.
|
||||||
|
|
||||||
For older browsers and platforms (Internet Explorer, Android 4.x, iOS v12 and older, Safari v12 and older), polyfills may be needed for the following browser features:
|
For older browsers and platforms (Internet Explorer, Android 4.x, iOS v12 and older, Safari v12 and older), polyfills may be needed for the following browser features:
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ Please see our guide on [contributing](CONTRIBUTING.md) if you're interested in
|
|||||||
|
|
||||||
## Community
|
## Community
|
||||||
|
|
||||||
- Need help? Find it on [Stack Overflow using the tag 'openlayers'](http://stackoverflow.com/questions/tagged/openlayers)
|
- Need help? Find it on [Stack Overflow using the tag 'openlayers'](https://stackoverflow.com/questions/tagged/openlayers)
|
||||||
- Follow [@openlayers](https://twitter.com/openlayers) on Twitter
|
- Follow [@openlayers](https://twitter.com/openlayers) on Twitter
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* Modified from JSDoc's plugins/markdown and lib/jsdoc/util/markdown modules
|
* Modified from JSDoc's plugins/markdown and lib/jsdoc/util/markdown modules
|
||||||
* (see https://github.com/jsdoc3/jsdoc/), which are licensed under the Apache 2
|
* (see https://github.com/jsdoc3/jsdoc/), which are licensed under the Apache 2
|
||||||
* license (see http://www.apache.org/licenses/LICENSE-2.0).
|
* license (see https://www.apache.org/licenses/LICENSE-2.0).
|
||||||
*
|
*
|
||||||
* This version does not protect http(s) urls from being turned into links, and
|
* This version does not protect http(s) urls from being turned into links, and
|
||||||
* works around an issue with `~` characters in module paths by escaping them.
|
* works around an issue with `~` characters in module paths by escaping them.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# API Documentation
|
# API Documentation
|
||||||
|
|
||||||
This directory contains configuration (`conf.json`), static content (`index.md`), template (`template/`) and plugins (`plugins/`) for the [JSDoc3](http://usejsdoc.org/) API generator.
|
This directory contains configuration (`conf.json`), static content (`index.md`), template (`template/`) and plugins (`plugins/`) for the [JSDoc3](https://jsdoc.app/) API generator.
|
||||||
|
|
||||||
## Documenting the source code
|
## Documenting the source code
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
This template is based on the [Jaguar](https://github.com/davidshimjs/jaguarjs/tree/master/docs/templates/jaguar) template. [JaguarJS](https://github.com/davidshimjs/jaguarjs) is licensed under the [LGPL license](https://github.com/davidshimjs/jaguarjs/tree/master/LICENSE).
|
This template is based on the [Jaguar](https://github.com/davidshimjs/jaguarjs/tree/master/docs/templates/jaguar) template. [JaguarJS](https://github.com/davidshimjs/jaguarjs) is licensed under the [LGPL license](https://github.com/davidshimjs/jaguarjs/tree/master/LICENSE).
|
||||||
|
|
||||||
The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://documentcloud.github.com/underscore/#template).
|
The default template for JSDoc 3 uses: [the Taffy Database library](https://taffydb.com/) and the [Underscore Template library](https://underscorejs.org/#template).
|
||||||
|
|||||||
@@ -322,7 +322,7 @@ function buildNav(members) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Object} taffyData See <http://taffydb.com/>.
|
* @param {Object} taffyData See {@link https://taffydb.com/}.
|
||||||
* @param {Object} opts Options.
|
* @param {Object} opts Options.
|
||||||
* @param {Object} tutorials Tutorials.
|
* @param {Object} tutorials Tutorials.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ layout: doc.hbs
|
|||||||
|
|
||||||
Certain questions arise more often than others when users ask for help. This
|
Certain questions arise more often than others when users ask for help. This
|
||||||
document tries to list some of the common questions that frequently get asked,
|
document tries to list some of the common questions that frequently get asked,
|
||||||
e.g. on [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers).
|
e.g. on [Stack Overflow](https://stackoverflow.com/questions/tagged/openlayers).
|
||||||
|
|
||||||
If you think a question (and naturally its answer) should be added here, feel
|
If you think a question (and naturally its answer) should be added here, feel
|
||||||
free to ping us or to send a pull request enhancing this document.
|
free to ping us or to send a pull request enhancing this document.
|
||||||
@@ -198,8 +198,8 @@ for English, `en`, as a mnemonic: East before North.
|
|||||||
So you want to center your map on a certain place on the earth and obviously you
|
So you want to center your map on a certain place on the earth and obviously you
|
||||||
need to have its coordinates for this. Let's assume you want your map centered
|
need to have its coordinates for this. Let's assume you want your map centered
|
||||||
on Schladming, a beautiful place in Austria. Head over to the wikipedia
|
on Schladming, a beautiful place in Austria. Head over to the wikipedia
|
||||||
page for [Schladming](http://en.wikipedia.org/wiki/Schladming). In the top-right
|
page for [Schladming](https://en.wikipedia.org/wiki/Schladming). In the top-right
|
||||||
corner there is a link to [GeoHack](http://tools.wmflabs.org/geohack/geohack.php?pagename=Schladming¶ms=47_23_39_N_13_41_21_E_type:city(4565)_region:AT-6),
|
corner there is a link to [GeoHack](https://geohack.toolforge.org/geohack.php?pagename=Schladming¶ms=47_23_39_N_13_41_21_E_type:city(4565)_region:AT-6),
|
||||||
which effectively tells you the coordinates are:
|
which effectively tells you the coordinates are:
|
||||||
|
|
||||||
WGS84:
|
WGS84:
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ We have put together a document that lists [Frequently Asked Questions (FAQ)](fa
|
|||||||
|
|
||||||
# More questions?
|
# More questions?
|
||||||
|
|
||||||
If you cannot find an answer in the documentation or the FAQ, you can search [Stack Overflow](http://stackoverflow.com/questions/tagged/openlayers). If you cannot find an answer there, ask a new question there, using the tag 'openlayers'.
|
If you cannot find an answer in the documentation or the FAQ, you can search [Stack Overflow](https://stackoverflow.com/questions/tagged/openlayers). If you cannot find an answer there, ask a new question there, using the tag 'openlayers'.
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ The first part is to include the JavaScript library. For the purpose of this tut
|
|||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
```
|
```
|
||||||
|
|
||||||
The map in the application is contained in a [`<div>` HTML element](http://en.wikipedia.org/wiki/Span_and_div). Through this `<div>` the map properties like width, height and border can be controlled through CSS. Here's the CSS element used to make the map 400 pixels high and as wide as the browser window.
|
The map in the application is contained in a [`<div>` HTML element](https://en.wikipedia.org/wiki/Span_and_div). Through this `<div>` the map properties like width, height and border can be controlled through CSS. Here's the CSS element used to make the map 400 pixels high and as wide as the browser window.
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ OpenLayers is available as [`ol` npm package](https://npmjs.com/package/ol), whi
|
|||||||
|
|
||||||
By default, OpenLayers uses a performance optimized Canvas renderer.
|
By default, OpenLayers uses a performance optimized Canvas renderer.
|
||||||
|
|
||||||
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](http://polyfill.io), the application bundle needs to be transpiled (e.g. using [Babel](https://babeljs.io)) and bundled with polyfills for `fetch`, `requestAnimationFrame`, `Element.prototype.classList`, `URL`, `TextDecoder` and `Number.isInteger`.
|
OpenLayers runs on all modern browsers that support [HTML5](https://html.spec.whatwg.org/multipage/) and [ECMAScript 5](https://262.ecma-international.org/5.1/). This includes Chrome, Firefox, Safari and Edge. For older browsers and platforms like Internet Explorer (down to version 9) and Android 4.x, [polyfills](https://polyfill.io/), the application bundle needs to be transpiled (e.g. using [Babel](https://babeljs.io/)) and bundled with polyfills for `fetch`, `requestAnimationFrame`, `Element.prototype.classList`, `URL`, `TextDecoder` and `Number.isInteger`.
|
||||||
|
|
||||||
The library is intended for use on both desktop/laptop and mobile devices, and supports pointer and touch interactions.
|
The library is intended for use on both desktop/laptop and mobile devices, and supports pointer and touch interactions.
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ var map = new Map({
|
|||||||
new TileLayer({
|
new TileLayer({
|
||||||
source: new TileWMS({
|
source: new TileWMS({
|
||||||
projection: 'EPSG:4326', //HERE IS THE DATA SOURCE PROJECTION
|
projection: 'EPSG:4326', //HERE IS THE DATA SOURCE PROJECTION
|
||||||
url: 'http://demo.boundlessgeo.com/geoserver/wms',
|
url: 'https://ahocevar.com/geoserver/wms',
|
||||||
params: {
|
params: {
|
||||||
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
|
'LAYERS': 'ne:NE1_HR_LC_SR_W_DR'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ title: Animated GIF
|
|||||||
shortdesc: Example of using an animated GIF as an icon.
|
shortdesc: Example of using an animated GIF as an icon.
|
||||||
docs: >
|
docs: >
|
||||||
Example of using an animated GIF as an icon.
|
Example of using an animated GIF as an icon.
|
||||||
Animation is achieved using the <a href="http://themadcreator.github.io/gifler/" target="_blank">Gifler</a> library.
|
Animation is achieved using the <a href="https://themadcreator.github.io/gifler/" target="_blank">Gifler</a> library.
|
||||||
tags: "animation, vector, style, icon, gif"
|
tags: "animation, vector, style, icon, gif"
|
||||||
resources:
|
resources:
|
||||||
- https://unpkg.com/gifler@0.1.0/gifler.min.js
|
- https://unpkg.com/gifler@0.1.0/gifler.min.js
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ docs: >
|
|||||||
tags: "bing, bing-maps"
|
tags: "bing, bing-maps"
|
||||||
cloak:
|
cloak:
|
||||||
- key: ApTJzdkyN1DdFKkRAE6QIDtzihNaf6IWJsT-nQ_2eMoO4PN__0Tzhl2-WgJtXFSp
|
- key: ApTJzdkyN1DdFKkRAE6QIDtzihNaf6IWJsT-nQ_2eMoO4PN__0Tzhl2-WgJtXFSp
|
||||||
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
|
value: Your Bing Maps Key from https://www.bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<select id="layer-select">
|
<select id="layer-select">
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ docs: >
|
|||||||
animate flights. A great circle arc between two airports is calculated using
|
animate flights. A great circle arc between two airports is calculated using
|
||||||
<a href="https://github.com/springmeyer/arc.js">arc.js</a> and then the flight
|
<a href="https://github.com/springmeyer/arc.js">arc.js</a> and then the flight
|
||||||
paths are animated with <b>postrender</b>. The flight data is provided by
|
paths are animated with <b>postrender</b>. The flight data is provided by
|
||||||
<a href="http://openflights.org/data.html">OpenFlights</a> (a simplified data
|
<a href="https://openflights.org/data.html">OpenFlights</a> (a simplified data
|
||||||
set from the <a href="https://www.mapbox.com/mapbox.js/example/v1.0.0/animating-flight-paths/">
|
set from the <a href="https://docs.mapbox.com/mapbox.js/example/v1.0.0/animating-flight-paths/">
|
||||||
Mapbox.js documentation</a> is used).
|
Mapbox.js documentation</a> is used).
|
||||||
tags: "animation, vector, feature, flights, arc"
|
tags: "animation, vector, feature, flights, arc"
|
||||||
resources:
|
resources:
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ const flightsSource = new VectorSource({
|
|||||||
wrapX: false,
|
wrapX: false,
|
||||||
attributions:
|
attributions:
|
||||||
'Flight data by ' +
|
'Flight data by ' +
|
||||||
'<a href="http://openflights.org/data.html">OpenFlights</a>,',
|
'<a href="https://openflights.org/data.html">OpenFlights</a>,',
|
||||||
loader: function () {
|
loader: function () {
|
||||||
const url = 'data/openflights/flights.json';
|
const url = 'data/openflights/flights.json';
|
||||||
fetch(url)
|
fetch(url)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ title: Full Screen Drag, Rotate, and Zoom
|
|||||||
shortdesc: Example of drag rotate and zoom control with full screen effect.
|
shortdesc: Example of drag rotate and zoom control with full screen effect.
|
||||||
docs: >
|
docs: >
|
||||||
<p>Hold down <code>Shift+Drag</code> to rotate and zoom. Click the button in the top right corner to go full screen. Then do the <code>Shift+Drag</code> thing again.</p>
|
<p>Hold down <code>Shift+Drag</code> to rotate and zoom. Click the button in the top right corner to go full screen. Then do the <code>Shift+Drag</code> thing again.</p>
|
||||||
<p>If there is no button on the map, your browser does not support the <a href="http://caniuse.com/#feat=fullscreen">Full Screen API</a>.</p>
|
<p>If there is no button on the map, your browser does not support the <a href="https://caniuse.com/fullscreen">Full Screen API</a>.</p>
|
||||||
tags: "full-screen, drag, rotate, zoom, xyz, maptiler"
|
tags: "full-screen, drag, rotate, zoom, xyz, maptiler"
|
||||||
cloak:
|
cloak:
|
||||||
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
|
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ title: Full Screen Control with extended source element
|
|||||||
shortdesc: Example of a full screen control with a source option definition.
|
shortdesc: Example of a full screen control with a source option definition.
|
||||||
docs: >
|
docs: >
|
||||||
<p>Click the control in the top right corner to go full screen. Click it again to exit full screen.</p>
|
<p>Click the control in the top right corner to go full screen. Click it again to exit full screen.</p>
|
||||||
<p>If there is no button on the map, your browser does not support the <a href="http://caniuse.com/#feat=fullscreen">Full Screen API</a>.</p>
|
<p>If there is no button on the map, your browser does not support the <a href="https://caniuse.com/fullscreen">Full Screen API</a>.</p>
|
||||||
tags: "full-screen, source, fullScreenSource, osm, osm-maps"
|
tags: "full-screen, source, fullScreenSource, osm, osm-maps"
|
||||||
---
|
---
|
||||||
<div id="fullscreen" class="fullscreen">
|
<div id="fullscreen" class="fullscreen">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ title: Full Screen Control
|
|||||||
shortdesc: Example of a full screen control.
|
shortdesc: Example of a full screen control.
|
||||||
docs: >
|
docs: >
|
||||||
<p>Click the control in the top right corner to go full screen. Click it again to exit full screen.</p>
|
<p>Click the control in the top right corner to go full screen. Click it again to exit full screen.</p>
|
||||||
<p>If there is no button on the map, your browser does not support the <a href="http://caniuse.com/#feat=fullscreen">Full Screen API</a>.</p>
|
<p>If there is no button on the map, your browser does not support the <a href="https://caniuse.com/fullscreen">Full Screen API</a>.</p>
|
||||||
tags: "full-screen, xyz, maptiler"
|
tags: "full-screen, xyz, maptiler"
|
||||||
cloak:
|
cloak:
|
||||||
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
|
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ for (i = 0, ii = hereLayers.length; i < ii; ++i) {
|
|||||||
'Map Tiles © ' +
|
'Map Tiles © ' +
|
||||||
new Date().getFullYear() +
|
new Date().getFullYear() +
|
||||||
' ' +
|
' ' +
|
||||||
'<a href="http://developer.here.com" target="_blank">HERE</a>',
|
'<a href="https://developer.here.com/" target="_blank">HERE</a>',
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ docs: >
|
|||||||
tags: "complex-geometry, closest-feature, igc, opencyclemap"
|
tags: "complex-geometry, closest-feature, igc, opencyclemap"
|
||||||
cloak:
|
cloak:
|
||||||
- key: 0e6fc415256d4fbb9b5166a718591d71
|
- key: 0e6fc415256d4fbb9b5166a718591d71
|
||||||
value: Your API key from http://www.thunderforest.com/docs/apikeys/ here
|
value: Your API key from https://www.thunderforest.com/docs/apikeys/ here
|
||||||
|
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ layout: example.html
|
|||||||
title: Localized OpenStreetMap
|
title: Localized OpenStreetMap
|
||||||
shortdesc: Example of a localized OpenStreetMap map with a custom tile server and a custom attribution.
|
shortdesc: Example of a localized OpenStreetMap map with a custom tile server and a custom attribution.
|
||||||
docs: >
|
docs: >
|
||||||
<p>The base layer is <a href="https://www.opencyclemap.org/">OpenCycleMap</a> with an overlay from <a href="http://www.openseamap.org/">OpenSeaMap</a>.
|
<p>The base layer is <a href="https://www.opencyclemap.org/">OpenCycleMap</a> with an overlay from <a href="https://www.openseamap.org/">OpenSeaMap</a>.
|
||||||
tags: "localized-openstreetmap, openseamap, openstreetmap"
|
tags: "localized-openstreetmap, openseamap, openstreetmap"
|
||||||
cloak:
|
cloak:
|
||||||
- key: 0e6fc415256d4fbb9b5166a718591d71
|
- key: 0e6fc415256d4fbb9b5166a718591d71
|
||||||
value: Your API key from http://www.thunderforest.com/docs/apikeys/ here
|
value: Your API key from https://www.thunderforest.com/docs/apikeys/ here
|
||||||
|
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const openCycleMapLayer = new TileLayer({
|
|||||||
const openSeaMapLayer = new TileLayer({
|
const openSeaMapLayer = new TileLayer({
|
||||||
source: new OSM({
|
source: new OSM({
|
||||||
attributions: [
|
attributions: [
|
||||||
'All maps © <a href="http://www.openseamap.org/">OpenSeaMap</a>',
|
'All maps © <a href="https://www.openseamap.org/">OpenSeaMap</a>',
|
||||||
ATTRIBUTION,
|
ATTRIBUTION,
|
||||||
],
|
],
|
||||||
opaque: false,
|
opaque: false,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ shortdesc: Example of a full screen map.
|
|||||||
tags: "fullscreen, geolocation, mobile"
|
tags: "fullscreen, geolocation, mobile"
|
||||||
cloak:
|
cloak:
|
||||||
- key: ApTJzdkyN1DdFKkRAE6QIDtzihNaf6IWJsT-nQ_2eMoO4PN__0Tzhl2-WgJtXFSp
|
- key: ApTJzdkyN1DdFKkRAE6QIDtzihNaf6IWJsT-nQ_2eMoO4PN__0Tzhl2-WgJtXFSp
|
||||||
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
|
value: Your Bing Maps Key from https://www.bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ resources:
|
|||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
<div style="display: none;">
|
<div style="display: none;">
|
||||||
<!-- Clickable label for Vienna -->
|
<!-- Clickable label for Vienna -->
|
||||||
<a class="overlay" id="vienna" target="_blank" href="http://en.wikipedia.org/wiki/Vienna">Vienna</a>
|
<a class="overlay" id="vienna" target="_blank" href="https://en.wikipedia.org/wiki/Vienna">Vienna</a>
|
||||||
<div id="marker" title="Marker"></div>
|
<div id="marker" title="Marker"></div>
|
||||||
<!-- Popup -->
|
<!-- Popup -->
|
||||||
<div id="popup" title="Welcome to OpenLayers"></div>
|
<div id="popup" title="Welcome to OpenLayers"></div>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ docs: >
|
|||||||
tags: "overview, overviewmap"
|
tags: "overview, overviewmap"
|
||||||
cloak:
|
cloak:
|
||||||
- key: 0e6fc415256d4fbb9b5166a718591d71
|
- key: 0e6fc415256d4fbb9b5166a718591d71
|
||||||
value: Your API key from http://www.thunderforest.com/docs/apikeys/ here
|
value: Your API key from https://www.thunderforest.com/docs/apikeys/ here
|
||||||
|
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ docs: >
|
|||||||
In this example the <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history"
|
In this example the <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history"
|
||||||
target="_blank">HTML 5 History API</a> is used to update the browser URL
|
target="_blank">HTML 5 History API</a> is used to update the browser URL
|
||||||
with the current zoom-level, center and rotation when the map is moved.
|
with the current zoom-level, center and rotation when the map is moved.
|
||||||
Note that the History API is not supported in <a href="http://caniuse.com/#feat=history"
|
Note that the History API is not supported in <a href="https://caniuse.com/history"
|
||||||
target="_blank">all browsers</a>, one might consider to use a <a
|
target="_blank">all browsers</a>, one might consider to use a <a
|
||||||
href="https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#html5-history-api-pushstate-replacestate-popstate"
|
href="https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#html5-history-api-pushstate-replacestate-popstate"
|
||||||
target="_blank">a polyfill</a>.
|
target="_blank">a polyfill</a>.
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ docs: >
|
|||||||
tags: "preload, bing"
|
tags: "preload, bing"
|
||||||
cloak:
|
cloak:
|
||||||
- key: ApTJzdkyN1DdFKkRAE6QIDtzihNaf6IWJsT-nQ_2eMoO4PN__0Tzhl2-WgJtXFSp
|
- key: ApTJzdkyN1DdFKkRAE6QIDtzihNaf6IWJsT-nQ_2eMoO4PN__0Tzhl2-WgJtXFSp
|
||||||
value: Your Bing Maps Key from http://www.bingmapsportal.com/ here
|
value: Your Bing Maps Key from https://www.bingmapsportal.com/ here
|
||||||
---
|
---
|
||||||
<div id="map1" class="map"></div>
|
<div id="map1" class="map"></div>
|
||||||
<div id="map2" class="map"></div>
|
<div id="map2" class="map"></div>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ docs: >
|
|||||||
<p>
|
<p>
|
||||||
In this case, a single tiled source of imagery is used as input.
|
In this case, a single tiled source of imagery is used as input.
|
||||||
For each pixel, the Vegetation Greenness Index
|
For each pixel, the Vegetation Greenness Index
|
||||||
(<a href="http://www.tandfonline.com/doi/abs/10.1080/10106040108542184#.Vb90ITBViko">VGI</a>)
|
(<a href="https://www.tandfonline.com/doi/abs/10.1080/10106040108542184#.Vb90ITBViko">VGI</a>)
|
||||||
is calculated from the input pixels. A second operation colors
|
is calculated from the input pixels. A second operation colors
|
||||||
those pixels based on a threshold value (values above the
|
those pixels based on a threshold value (values above the
|
||||||
threshold are green and those below are transparent).
|
threshold are green and those below are transparent).
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Code examples
|
# Code examples
|
||||||
|
|
||||||
The `.html` files in this folder are built by applying the templates in the `templates` folder. Examples have [YAML front-matter](http://www.metalsmith.io) headers with the following properties:
|
The `.html` files in this folder are built by applying the templates in the `templates` folder. Examples have [YAML front-matter](https://metalsmith.io/) headers with the following properties:
|
||||||
|
|
||||||
* layout: The template from the `templates` directory to use for this example
|
* layout: The template from the `templates` directory to use for this example
|
||||||
* title: The title of the example
|
* title: The title of the example
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// Styles for the mapbox-streets-v6 vector tile data set. Loosely based on
|
// Styles for the mapbox-streets-v6 vector tile data set. Loosely based on
|
||||||
// http://a.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6.json
|
// https://docs.mapbox.com/vector-tiles/reference/mapbox-streets-v6/
|
||||||
|
|
||||||
function createMapboxStreetsV6Style(Style, Fill, Stroke, Icon, Text) {
|
function createMapboxStreetsV6Style(Style, Fill, Stroke, Icon, Text) {
|
||||||
var fill = new Fill({color: ''});
|
var fill = new Fill({color: ''});
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ title: Static Image
|
|||||||
shortdesc: Example of a static image layer.
|
shortdesc: Example of a static image layer.
|
||||||
docs: >
|
docs: >
|
||||||
<p>
|
<p>
|
||||||
This example uses a <a href="http://xkcd.com/256/">static image</a>
|
This example uses a <a href="https://xkcd.com/256/">static image</a>
|
||||||
as a layer source. The map view is configured with a custom
|
as a layer source. The map view is configured with a custom
|
||||||
projection that translates image coordinates directly into map
|
projection that translates image coordinates directly into map
|
||||||
coordinates.
|
coordinates.
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ const map = new Map({
|
|||||||
layers: [
|
layers: [
|
||||||
new ImageLayer({
|
new ImageLayer({
|
||||||
source: new Static({
|
source: new Static({
|
||||||
attributions: '© <a href="http://xkcd.com/license.html">xkcd</a>',
|
attributions: '© <a href="https://xkcd.com/license.html">xkcd</a>',
|
||||||
url: 'https://imgs.xkcd.com/comics/online_communities.png',
|
url: 'https://imgs.xkcd.com/comics/online_communities.png',
|
||||||
projection: projection,
|
projection: projection,
|
||||||
imageExtent: extent,
|
imageExtent: extent,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ layout: example.html
|
|||||||
title: Tissot Indicatrix
|
title: Tissot Indicatrix
|
||||||
shortdesc: Draw Tissot's indicatrices on maps.
|
shortdesc: Draw Tissot's indicatrices on maps.
|
||||||
docs: >
|
docs: >
|
||||||
Example of [Tissot indicatrix](http://en.wikipedia.org/wiki/Tissot's_indicatrix) maps. The map on the top is an `EPSG:4326` map. The one on the bottom is `EPSG:3857`.
|
Example of [Tissot indicatrix](https://en.wikipedia.org/wiki/Tissot's_indicatrix) maps. The map on the top is an `EPSG:4326` map. The one on the bottom is `EPSG:3857`.
|
||||||
tags: "tissot, circle"
|
tags: "tissot, circle"
|
||||||
---
|
---
|
||||||
<h4>EPSG:4326</h4>
|
<h4>EPSG:4326</h4>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ layout: example.html
|
|||||||
title: turf.js
|
title: turf.js
|
||||||
shortdesc: Example on how to use turf.js with OpenLayers.
|
shortdesc: Example on how to use turf.js with OpenLayers.
|
||||||
docs: >
|
docs: >
|
||||||
Example showing the integration of <a href="http://turfjs.org">turf.js</a>
|
Example showing the integration of <a href="https://turfjs.org/">turf.js</a>
|
||||||
with OpenLayers. The turf.js function <code>along</code> is used to
|
with OpenLayers. The turf.js function <code>along</code> is used to
|
||||||
display a marker every 200 meters along a street.
|
display a marker every 200 meters along a street.
|
||||||
tags: "vector, turfjs, along, distance"
|
tags: "vector, turfjs, along, distance"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ title: UTFGrid
|
|||||||
shortdesc: This example shows how to read data from a UTFGrid source.
|
shortdesc: This example shows how to read data from a UTFGrid source.
|
||||||
docs: >
|
docs: >
|
||||||
<p>Point to a country to see its name and flag.</p>
|
<p>Point to a country to see its name and flag.</p>
|
||||||
Tiles made with <a href="http://tilemill.com">TileMill</a>. Hosting on <a href="mapbox.com">mapbox.com</a> or with open-source <a href="https://github.com/klokantech/tileserver-php/">TileServer</a>.
|
Tiles made with <a href="https://tilemill-project.github.io/tilemill/">TileMill</a>. Hosting on <a href="https://www.mapbox.com/">mapbox.com</a> or with open-source <a href="https://github.com/maptiler/tileserver-php">TileServer</a>.
|
||||||
tags: "utfgrid, tilejson"
|
tags: "utfgrid, tilejson"
|
||||||
cloak:
|
cloak:
|
||||||
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
|
- key: pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiY2pzbmg0Nmk5MGF5NzQzbzRnbDNoeHJrbiJ9.7_-_gL8ur7ZtEiNwRfCy7Q
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ String.prototype.trunc =
|
|||||||
return this.length > n ? this.substr(0, n - 1) + '...' : this.substr(0);
|
return this.length > n ? this.substr(0, n - 1) + '...' : this.substr(0);
|
||||||
};
|
};
|
||||||
|
|
||||||
// http://stackoverflow.com/questions/14484787/wrap-text-in-javascript
|
// https://stackoverflow.com/questions/14484787/wrap-text-in-javascript
|
||||||
function stringDivider(str, width, spaceReplacer) {
|
function stringDivider(str, width, spaceReplacer) {
|
||||||
if (str.length > width) {
|
if (str.length > width) {
|
||||||
let p = width;
|
let p = width;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ layout: example.html
|
|||||||
title: OSM XML
|
title: OSM XML
|
||||||
shortdesc: Example of using the OSM XML source.
|
shortdesc: Example of using the OSM XML source.
|
||||||
docs: >
|
docs: >
|
||||||
OSM XML vector data is loaded dynamically from a the [Overpass API](http://overpass-api.de) using a bbox strategy. Note that panning and zooming will eventually lead to "Too many requests" errors from the Overpass API.
|
OSM XML vector data is loaded dynamically from a the [Overpass API](https://overpass-api.de/) using a bbox strategy. Note that panning and zooming will eventually lead to "Too many requests" errors from the Overpass API.
|
||||||
tags: "vector, osmxml, loading, server, strategy, bbox, maptiler"
|
tags: "vector, osmxml, loading, server, strategy, bbox, maptiler"
|
||||||
cloak:
|
cloak:
|
||||||
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
|
- key: get_your_own_D6rA4zTHduk6KOKTXzGB
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ layout: example.html
|
|||||||
title: WMTS Tile Transitions
|
title: WMTS Tile Transitions
|
||||||
shortdesc: Example of smooth tile transitions when changing the dimension of a WMTS layer.
|
shortdesc: Example of smooth tile transitions when changing the dimension of a WMTS layer.
|
||||||
docs: >
|
docs: >
|
||||||
Demonstrates smooth reloading of layers when changing a dimension continuously. The demonstration layer is a global sea-level computation (flooding computation from <a href="http://scalgo.com">SCALGO</a>, underlying data from <a href="https://cgiarcsi.community/data/srtm-90m-digital-elevation-database-v4-1">CGIAR-CSI SRTM</a>) where cells that are flooded if the sea-level rises to more than <em>x</em> m are colored blue. The user selects the sea-level dimension using a slider.
|
Demonstrates smooth reloading of layers when changing a dimension continuously. The demonstration layer is a global sea-level computation (flooding computation from <a href="https://scalgo.com/">SCALGO</a>, underlying data from <a href="https://cgiarcsi.community/data/srtm-90m-digital-elevation-database-v4-1">CGIAR-CSI SRTM</a>) where cells that are flooded if the sea-level rises to more than <em>x</em> m are colored blue. The user selects the sea-level dimension using a slider.
|
||||||
tags: "wmts, parameter, transition"
|
tags: "wmts, parameter, transition"
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ const ign_source = new WMTS({
|
|||||||
tileGrid: tileGrid,
|
tileGrid: tileGrid,
|
||||||
style: 'normal',
|
style: 'normal',
|
||||||
attributions:
|
attributions:
|
||||||
'<a href="http://www.ign.fr" target="_blank">' +
|
'<a href="https://www.ign.fr/" target="_blank">' +
|
||||||
'<img src="https://wxs.ign.fr/static/logos/IGN/IGN.gif" title="Institut national de l\'' +
|
'<img src="https://wxs.ign.fr/static/logos/IGN/IGN.gif" title="Institut national de l\'' +
|
||||||
'information géographique et forestière" alt="IGN"></a>',
|
'information géographique et forestière" alt="IGN"></a>',
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ docs: >
|
|||||||
tags: "xyz"
|
tags: "xyz"
|
||||||
cloak:
|
cloak:
|
||||||
- key: 0e6fc415256d4fbb9b5166a718591d71
|
- key: 0e6fc415256d4fbb9b5166a718591d71
|
||||||
value: Your API key from http://www.thunderforest.com/docs/apikeys/ here
|
value: Your API key from https://www.thunderforest.com/docs/apikeys/ here
|
||||||
|
|
||||||
---
|
---
|
||||||
<div id="map" class="map"></div>
|
<div id="map" class="map"></div>
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class GeolocationError extends BaseEvent {
|
|||||||
* @property {boolean} [tracking=false] Start Tracking right after
|
* @property {boolean} [tracking=false] Start Tracking right after
|
||||||
* instantiation.
|
* instantiation.
|
||||||
* @property {PositionOptions} [trackingOptions] Tracking options.
|
* @property {PositionOptions} [trackingOptions] Tracking options.
|
||||||
* See http://www.w3.org/TR/geolocation-API/#position_options_interface.
|
* See https://www.w3.org/TR/geolocation-API/#position_options_interface.
|
||||||
* @property {import("./proj.js").ProjectionLike} [projection] The projection the position
|
* @property {import("./proj.js").ProjectionLike} [projection] The projection the position
|
||||||
* is reported in.
|
* is reported in.
|
||||||
*/
|
*/
|
||||||
@@ -64,7 +64,7 @@ class GeolocationError extends BaseEvent {
|
|||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
* Helper class for providing HTML5 Geolocation capabilities.
|
* Helper class for providing HTML5 Geolocation capabilities.
|
||||||
* The [Geolocation API](http://www.w3.org/TR/geolocation-API/)
|
* The [Geolocation API](https://www.w3.org/TR/geolocation-API/)
|
||||||
* is used to locate a user's position.
|
* is used to locate a user's position.
|
||||||
*
|
*
|
||||||
* To get notified of position changes, register a listener for the generic
|
* To get notified of position changes, register a listener for the generic
|
||||||
@@ -324,10 +324,10 @@ class Geolocation extends BaseObject {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the tracking options.
|
* Get the tracking options.
|
||||||
* See http://www.w3.org/TR/geolocation-API/#position-options.
|
* See https://www.w3.org/TR/geolocation-API/#position-options.
|
||||||
* @return {PositionOptions|undefined} PositionOptions as defined by
|
* @return {PositionOptions|undefined} PositionOptions as defined by
|
||||||
* the [HTML5 Geolocation spec
|
* the [HTML5 Geolocation spec
|
||||||
* ](http://www.w3.org/TR/geolocation-API/#position_options_interface).
|
* ](https://www.w3.org/TR/geolocation-API/#position_options_interface).
|
||||||
* @observable
|
* @observable
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ const FullScreenEventType = {
|
|||||||
* element introduced using this parameter will be displayed in full screen.
|
* element introduced using this parameter will be displayed in full screen.
|
||||||
*
|
*
|
||||||
* When in full screen mode, a close button is shown to exit full screen mode.
|
* When in full screen mode, a close button is shown to exit full screen mode.
|
||||||
* The [Fullscreen API](http://www.w3.org/TR/fullscreen/) is used to
|
* The [Fullscreen API](https://www.w3.org/TR/fullscreen/) is used to
|
||||||
* toggle the map in full screen mode.
|
* toggle the map in full screen mode.
|
||||||
*
|
*
|
||||||
* @fires FullScreenEventType#enterfullscreen
|
* @fires FullScreenEventType#enterfullscreen
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ export const CLASS_CONTROL = 'ol-control';
|
|||||||
export const CLASS_COLLAPSED = 'ol-collapsed';
|
export const CLASS_COLLAPSED = 'ol-collapsed';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* From http://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font
|
* From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font
|
||||||
* @type {RegExp}
|
* @type {RegExp}
|
||||||
*/
|
*/
|
||||||
const fontRegEx = new RegExp(
|
const fontRegEx = new RegExp(
|
||||||
|
|||||||
@@ -248,7 +248,7 @@ export const mouseOnly = function (mapBrowserEvent) {
|
|||||||
const pointerEvent = /** @type {import("../MapBrowserEvent").default} */ (mapBrowserEvent)
|
const pointerEvent = /** @type {import("../MapBrowserEvent").default} */ (mapBrowserEvent)
|
||||||
.originalEvent;
|
.originalEvent;
|
||||||
assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event
|
assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event
|
||||||
// see http://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType
|
// see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType
|
||||||
return pointerEvent.pointerType == 'mouse';
|
return pointerEvent.pointerType == 'mouse';
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -263,7 +263,7 @@ export const touchOnly = function (mapBrowserEvent) {
|
|||||||
const pointerEvt = /** @type {import("../MapBrowserEvent").default} */ (mapBrowserEvent)
|
const pointerEvt = /** @type {import("../MapBrowserEvent").default} */ (mapBrowserEvent)
|
||||||
.originalEvent;
|
.originalEvent;
|
||||||
assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event
|
assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event
|
||||||
// see http://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType
|
// see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType
|
||||||
return pointerEvt.pointerType === 'touch';
|
return pointerEvt.pointerType === 'touch';
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -278,14 +278,14 @@ export const penOnly = function (mapBrowserEvent) {
|
|||||||
const pointerEvt = /** @type {import("../MapBrowserEvent").default} */ (mapBrowserEvent)
|
const pointerEvt = /** @type {import("../MapBrowserEvent").default} */ (mapBrowserEvent)
|
||||||
.originalEvent;
|
.originalEvent;
|
||||||
assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event
|
assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event
|
||||||
// see http://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType
|
// see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType
|
||||||
return pointerEvt.pointerType === 'pen';
|
return pointerEvt.pointerType === 'pen';
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return `true` if the event originates from a primary pointer in
|
* Return `true` if the event originates from a primary pointer in
|
||||||
* contact with the surface or if the left mouse button is pressed.
|
* contact with the surface or if the left mouse button is pressed.
|
||||||
* See http://www.w3.org/TR/pointerevents/#button-states.
|
* See https://www.w3.org/TR/pointerevents/#button-states.
|
||||||
*
|
*
|
||||||
* @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.
|
* @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.
|
||||||
* @return {boolean} True if the event originates from a primary pointer.
|
* @return {boolean} True if the event originates from a primary pointer.
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ const PARSERS = makeStructureNS(NAMESPACE_URIS, {
|
|||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
* Feature format for reading data in the
|
* Feature format for reading data in the
|
||||||
* [OSMXML format](http://wiki.openstreetmap.org/wiki/OSM_XML).
|
* [OSMXML format](https://wiki.openstreetmap.org/wiki/OSM_XML).
|
||||||
*
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ In the above there are many common operations, like setting the property of the
|
|||||||
|
|
||||||
### Putting it all together
|
### Putting it all together
|
||||||
|
|
||||||
With the above, you should be able to read through the [source code to `ol/format/GPX`](https://github.com/openlayers/openlayers/blob/main/src/ol/format/gpxformat.js) and get a feel for how it works. Start from the bottom of the file and work upwards. It's also useful to have [an example GPX file](http://www.topografix.com/fells_loop.gpx) and [the GPX specification](http://www.topografix.com/GPX/1/1/) to hand.
|
With the above, you should be able to read through the [source code to `ol/format/GPX`](https://github.com/openlayers/openlayers/blob/main/src/ol/format/gpxformat.js) and get a feel for how it works. Start from the bottom of the file and work upwards. It's also useful to have [an example GPX file](https://openlayers.org/en/latest/examples/data/fells_loop.gpx) and [the GPX specification](https://www.topografix.com/GPX/1/1/) to hand.
|
||||||
|
|
||||||
### Handling errors
|
### Handling errors
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ export function linearRingContainsXY(
|
|||||||
x,
|
x,
|
||||||
y
|
y
|
||||||
) {
|
) {
|
||||||
// http://geomalgorithms.com/a03-_inclusion.html
|
// https://geomalgorithms.com/a03-_inclusion.html
|
||||||
// Copyright 2000 softSurfer, 2012 Dan Sunday
|
// Copyright 2000 softSurfer, 2012 Dan Sunday
|
||||||
// This code may be freely used and modified for any purpose
|
// This code may be freely used and modified for any purpose
|
||||||
// providing that this copyright notice is included with it.
|
// providing that this copyright notice is included with it.
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ import {coordinates as reverseCoordinates} from './reverse.js';
|
|||||||
* @return {boolean} Is clockwise.
|
* @return {boolean} Is clockwise.
|
||||||
*/
|
*/
|
||||||
export function linearRingIsClockwise(flatCoordinates, offset, end, stride) {
|
export function linearRingIsClockwise(flatCoordinates, offset, end, stride) {
|
||||||
// http://tinyurl.com/clockwise-method
|
// https://stackoverflow.com/q/1165647/clockwise-method#1165943
|
||||||
// https://github.com/OSGeo/gdal/blob/trunk/gdal/ogr/ogrlinearring.cpp
|
// https://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogrlinearring.cpp
|
||||||
let edge = 0;
|
let edge = 0;
|
||||||
let x1 = flatCoordinates[end - stride];
|
let x1 = flatCoordinates[end - stride];
|
||||||
let y1 = flatCoordinates[end - stride + 1];
|
let y1 = flatCoordinates[end - stride + 1];
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ const TOS_ATTRIBUTION =
|
|||||||
* @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least the number of tiles in the viewport.
|
* @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least the number of tiles in the viewport.
|
||||||
* @property {boolean} [hidpi=false] If `true` hidpi tiles will be requested.
|
* @property {boolean} [hidpi=false] If `true` hidpi tiles will be requested.
|
||||||
* @property {string} [culture='en-us'] Culture code.
|
* @property {string} [culture='en-us'] Culture code.
|
||||||
* @property {string} key Bing Maps API key. Get yours at http://www.bingmapsportal.com/.
|
* @property {string} key Bing Maps API key. Get yours at https://www.bingmapsportal.com/.
|
||||||
* @property {string} imagerySet Type of imagery.
|
* @property {string} imagerySet Type of imagery.
|
||||||
* @property {boolean} [imageSmoothing=true] Enable image smoothing.
|
* @property {boolean} [imageSmoothing=true] Enable image smoothing.
|
||||||
* @property {number} [maxZoom=21] Max zoom. Default is what's advertized by the BingMaps service.
|
* @property {number} [maxZoom=21] Max zoom. Default is what's advertized by the BingMaps service.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import {containsExtent, getHeight, getWidth} from '../extent.js';
|
|||||||
* defaults will be used for any fields not specified. `FORMAT` is `PNG32` by default. `F` is
|
* defaults will be used for any fields not specified. `FORMAT` is `PNG32` by default. `F` is
|
||||||
* `IMAGE` by default. `TRANSPARENT` is `true` by default. `BBOX`, `SIZE`, `BBOXSR`, and `IMAGESR`
|
* `IMAGE` by default. `TRANSPARENT` is `true` by default. `BBOX`, `SIZE`, `BBOXSR`, and `IMAGESR`
|
||||||
* will be set dynamically. Set `LAYERS` to override the default service layer visibility. See
|
* will be set dynamically. Set `LAYERS` to override the default service layer visibility. See
|
||||||
* {@link http://resources.arcgis.com/en/help/arcgis-rest-api/index.html#/Export_Map/02r3000000v7000000/}
|
* {@link https://developers.arcgis.com/rest/services-reference/export-map.htm}
|
||||||
* for further reference.
|
* for further reference.
|
||||||
* @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.
|
* @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.
|
||||||
* @property {number} [ratio=1.5] Ratio. `1` means image requests are the size of the map viewport,
|
* @property {number} [ratio=1.5] Ratio. `1` means image requests are the size of the map viewport,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import {hash as tileCoordHash} from '../tilecoord.js';
|
|||||||
* default. `TRANSPARENT` is `true` by default. `BBOX`, `SIZE`, `BBOXSR`,
|
* default. `TRANSPARENT` is `true` by default. `BBOX`, `SIZE`, `BBOXSR`,
|
||||||
* and `IMAGESR` will be set dynamically. Set `LAYERS` to
|
* and `IMAGESR` will be set dynamically. Set `LAYERS` to
|
||||||
* override the default service layer visibility. See
|
* override the default service layer visibility. See
|
||||||
* http://resources.arcgis.com/en/help/arcgis-rest-api/index.html#/Export_Map/02r3000000v7000000/
|
* https://developers.arcgis.com/rest/services-reference/export-map.htm
|
||||||
* for further reference.
|
* for further reference.
|
||||||
* @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requesting
|
* @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requesting
|
||||||
* the image from the remote server.
|
* the image from the remote server.
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import {hash as tileCoordHash} from '../tilecoord.js';
|
|||||||
* ignored. If you control the WMS service it is recommended to address
|
* ignored. If you control the WMS service it is recommended to address
|
||||||
* "artifacts at tile edges" issues by properly configuring the WMS service. For
|
* "artifacts at tile edges" issues by properly configuring the WMS service. For
|
||||||
* example, MapServer has a `tile_map_edge_buffer` configuration parameter for
|
* example, MapServer has a `tile_map_edge_buffer` configuration parameter for
|
||||||
* this. See http://mapserver.org/output/tile_mode.html.
|
* this. See https://mapserver.org/output/tile_mode.html.
|
||||||
* @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requesting
|
* @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requesting
|
||||||
* the image from the remote server.
|
* the image from the remote server.
|
||||||
* @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.
|
* @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ export const DROP = Infinity;
|
|||||||
* The implementation is inspired from the Closure Library's Heap class and
|
* The implementation is inspired from the Closure Library's Heap class and
|
||||||
* Python's heapq module.
|
* Python's heapq module.
|
||||||
*
|
*
|
||||||
* See http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html
|
* See https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js
|
||||||
* and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.
|
* and https://hg.python.org/cpython/file/2.7/Lib/heapq.py.
|
||||||
*
|
*
|
||||||
* @template T
|
* @template T
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ This will run tests in Chrome. If you do not have Chrome installed, you can run
|
|||||||
|
|
||||||
npm test -- --browsers Firefox
|
npm test -- --browsers Firefox
|
||||||
|
|
||||||
To run tests in other browsers, you need to install [additional Karma launchers](http://karma-runner.github.io/1.0/config/browsers.html).
|
To run tests in other browsers, you need to install [additional Karma launchers](https://karma-runner.github.io/1.0/config/browsers.html).
|
||||||
|
|
||||||
To run the tests continuously:
|
To run the tests continuously:
|
||||||
|
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ describe('ol.proj', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('transform from 4326 to 3857 (Alastaira)', function () {
|
describe('transform from 4326 to 3857 (Alastaira)', function () {
|
||||||
// http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/
|
// https://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/
|
||||||
|
|
||||||
it('returns expected value using ol.proj.transform', function () {
|
it('returns expected value using ol.proj.transform', function () {
|
||||||
const point = transform(
|
const point = transform(
|
||||||
@@ -297,7 +297,7 @@ describe('ol.proj', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('transform from 3857 to 4326 (Alastaira)', function () {
|
describe('transform from 3857 to 4326 (Alastaira)', function () {
|
||||||
// http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/
|
// https://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/
|
||||||
|
|
||||||
it('returns expected value using ol.proj.transform', function () {
|
it('returns expected value using ol.proj.transform', function () {
|
||||||
const point = transform(
|
const point = transform(
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ describe('ol/proj/epsg3857', function () {
|
|||||||
|
|
||||||
describe('getPointResolution', function () {
|
describe('getPointResolution', function () {
|
||||||
it('returns the correct point scale at the equator', function () {
|
it('returns the correct point scale at the equator', function () {
|
||||||
// @see http://msdn.microsoft.com/en-us/library/aa940990.aspx
|
// @see https://docs.microsoft.com/en-us/bingmaps/articles/understanding-scale-and-resolution
|
||||||
const epsg3857 = getProjection('EPSG:3857');
|
const epsg3857 = getProjection('EPSG:3857');
|
||||||
const resolution = 19.11;
|
const resolution = 19.11;
|
||||||
const point = [0, 0];
|
const point = [0, 0];
|
||||||
@@ -68,7 +68,7 @@ describe('ol/proj/epsg3857', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns the correct point scale at the latitude of Toronto', function () {
|
it('returns the correct point scale at the latitude of Toronto', function () {
|
||||||
// @see http://msdn.microsoft.com/en-us/library/aa940990.aspx
|
// @see https://docs.microsoft.com/en-us/bingmaps/articles/understanding-scale-and-resolution
|
||||||
const epsg3857 = getProjection('EPSG:3857');
|
const epsg3857 = getProjection('EPSG:3857');
|
||||||
const epsg4326 = getProjection('EPSG:4326');
|
const epsg4326 = getProjection('EPSG:4326');
|
||||||
const resolution = 19.11;
|
const resolution = 19.11;
|
||||||
@@ -80,7 +80,7 @@ describe('ol/proj/epsg3857', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns the correct point scale at various latitudes', function () {
|
it('returns the correct point scale at various latitudes', function () {
|
||||||
// @see http://msdn.microsoft.com/en-us/library/aa940990.aspx
|
// @see https://docs.microsoft.com/en-us/bingmaps/articles/understanding-scale-and-resolution
|
||||||
const epsg3857 = getProjection('EPSG:3857');
|
const epsg3857 = getProjection('EPSG:3857');
|
||||||
const epsg4326 = getProjection('EPSG:4326');
|
const epsg4326 = getProjection('EPSG:4326');
|
||||||
const resolution = 19.11;
|
const resolution = 19.11;
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ describe('ol.structs.RBush', function () {
|
|||||||
|
|
||||||
it('can remove objects in random order', function () {
|
it('can remove objects in random order', function () {
|
||||||
let i, ii, j;
|
let i, ii, j;
|
||||||
// http://en.wikipedia.org/wiki/Random_permutation
|
// https://en.wikipedia.org/wiki/Random_permutation
|
||||||
const indexes = [];
|
const indexes = [];
|
||||||
for (i = 0, ii = objs.length; i < ii; ++i) {
|
for (i = 0, ii = objs.length; i < ii; ++i) {
|
||||||
j = Math.floor(Math.random() * (i + 1));
|
j = Math.floor(Math.random() * (i + 1));
|
||||||
|
|||||||
@@ -674,7 +674,7 @@ describe('ol.tilegrid.TileGrid', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns the correct resolution at the equator', function () {
|
it('returns the correct resolution at the equator', function () {
|
||||||
// @see http://msdn.microsoft.com/en-us/library/aa940990.aspx
|
// @see https://docs.microsoft.com/en-us/bingmaps/articles/understanding-scale-and-resolution
|
||||||
expect(tileGrid.getResolution(0)).to.roughlyEqual(156543.04, 1e-2);
|
expect(tileGrid.getResolution(0)).to.roughlyEqual(156543.04, 1e-2);
|
||||||
expect(tileGrid.getResolution(1)).to.roughlyEqual(78271.52, 1e-2);
|
expect(tileGrid.getResolution(1)).to.roughlyEqual(78271.52, 1e-2);
|
||||||
expect(tileGrid.getResolution(2)).to.roughlyEqual(39135.76, 1e-2);
|
expect(tileGrid.getResolution(2)).to.roughlyEqual(39135.76, 1e-2);
|
||||||
|
|||||||
@@ -260,7 +260,7 @@
|
|||||||
// we do not care about the difference between an empty string and
|
// we do not care about the difference between an empty string and
|
||||||
// null for namespaceURI some tests will fail in IE9 otherwise
|
// null for namespaceURI some tests will fail in IE9 otherwise
|
||||||
// see also
|
// see also
|
||||||
// http://msdn.microsoft.com/en-us/library/ff460650(v=vs.85).aspx
|
// https://docs.microsoft.com/en-us/openspecs/ie_standards/ms-dom2c/d6ad7f24-25f4-4ab0-a36b-32ddc08f413c
|
||||||
if (
|
if (
|
||||||
(node1Attr[name].namespaceURI || null) !==
|
(node1Attr[name].namespaceURI || null) !==
|
||||||
(node2Attr[name].namespaceURI || null)
|
(node2Attr[name].namespaceURI || null)
|
||||||
|
|||||||
Reference in New Issue
Block a user