<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Exemples_Openlayers_%28ol_package%29</id>
	<title>Exemples Openlayers (ol package) - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Exemples_Openlayers_%28ol_package%29"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Exemples_Openlayers_(ol_package)&amp;action=history"/>
	<updated>2026-04-20T11:33:27Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Exemples_Openlayers_(ol_package)&amp;diff=259357&amp;oldid=prev</id>
		<title>Joan: /* Smoothing lines using Chaikins algorithm */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Exemples_Openlayers_(ol_package)&amp;diff=259357&amp;oldid=prev"/>
		<updated>2020-04-26T21:37:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Smoothing lines using Chaikins algorithm&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
=Instal·lació=&lt;br /&gt;
Per a la instal·lació d'un projecte Openlayers amb node i el paquet '''ol''', veure el projecte de:&lt;br /&gt;
[[Openlayers:_ol_package._Exemple_Casa_de_Papel]]&lt;br /&gt;
Per anar ràpids:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/joan/projectes/OSM/&lt;br /&gt;
mkdir exemples-ol&lt;br /&gt;
cd exemples-ol&lt;br /&gt;
PS1=&amp;quot;$ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ npm init (deixar les opcions per defecte)&lt;br /&gt;
$ npm install ol&lt;br /&gt;
$ npm install --save-dev parcel-bundler&lt;br /&gt;
&lt;br /&gt;
$ npm install --save-dev parcel (instal·lació local)&lt;br /&gt;
$ npm run build&lt;br /&gt;
$ npm start&lt;br /&gt;
&lt;br /&gt;
*http://localhost:1234 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En el package.json tenim:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;quot;scripts&amp;quot;: {&lt;br /&gt;
    &amp;quot;start&amp;quot;: &amp;quot;parcel index.html&amp;quot;,&lt;br /&gt;
    &amp;quot;build&amp;quot;: &amp;quot;parcel build --experimental-scope-hoisting --public-url . index.html&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I per tant per fer els diferents projectes només cal tenir un html en la carpeta arrel i el corresponent javascript. Per ex: ''index_bing.html'' i ''index_bing.js'', i canviar la referència en el ''package.json''. Per veure el funcionament només cal fer ''npm start'', no cal fer el ''build''.&lt;br /&gt;
=Geolocation=&lt;br /&gt;
*https://openlayers.org/en/latest/examples/geolocation.html&lt;br /&gt;
Es tracta de demostrar la capacitat de trobar quina és la meva posició geogràfica. S'utiltiza la API de ''geolocation'', que té el mètode ''setTracking()''.&lt;br /&gt;
&lt;br /&gt;
'''index.html''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Geolocation&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;!-- The line below is only needed for old environments like Internet Explorer and Android 4.x --&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch,requestAnimationFrame,Element.prototype.classList,URL&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      .map {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        height:400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot; class=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;info&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;label for=&amp;quot;track&amp;quot;&amp;gt;&lt;br /&gt;
      track position&lt;br /&gt;
      &amp;lt;input id=&amp;quot;track&amp;quot; type=&amp;quot;checkbox&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      position accuracy : &amp;lt;code id=&amp;quot;accuracy&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
      altitude : &amp;lt;code id=&amp;quot;altitude&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
      altitude accuracy : &amp;lt;code id=&amp;quot;altitudeAccuracy&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
      heading : &amp;lt;code id=&amp;quot;heading&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
      speed : &amp;lt;code id=&amp;quot;speed&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;index.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''index.js''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import 'ol/ol.css';&lt;br /&gt;
import Feature from 'ol/Feature';&lt;br /&gt;
import Geolocation from 'ol/Geolocation';&lt;br /&gt;
import Map from 'ol/Map';&lt;br /&gt;
import View from 'ol/View';&lt;br /&gt;
import Point from 'ol/geom/Point';&lt;br /&gt;
import {Tile as TileLayer, Vector as VectorLayer} from 'ol/layer';&lt;br /&gt;
import {OSM, Vector as VectorSource} from 'ol/source';&lt;br /&gt;
import {Circle as CircleStyle, Fill, Stroke, Style} from 'ol/style';&lt;br /&gt;
&lt;br /&gt;
var view = new View({&lt;br /&gt;
  center: [0, 0],&lt;br /&gt;
  zoom: 2&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var map = new Map({&lt;br /&gt;
  layers: [&lt;br /&gt;
    new TileLayer({&lt;br /&gt;
      source: new OSM()&lt;br /&gt;
    })&lt;br /&gt;
  ],&lt;br /&gt;
  target: 'map',&lt;br /&gt;
  view: view&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var geolocation = new Geolocation({&lt;br /&gt;
  // enableHighAccuracy must be set to true to have the heading value.&lt;br /&gt;
  trackingOptions: {&lt;br /&gt;
    enableHighAccuracy: true&lt;br /&gt;
  },&lt;br /&gt;
  projection: view.getProjection()&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function el(id) {&lt;br /&gt;
  return document.getElementById(id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
el('track').addEventListener('change', function() {&lt;br /&gt;
  geolocation.setTracking(this.checked);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// update the HTML page when the position changes.&lt;br /&gt;
geolocation.on('change', function() {&lt;br /&gt;
  el('accuracy').innerText = geolocation.getAccuracy() + ' [m]';&lt;br /&gt;
  el('altitude').innerText = geolocation.getAltitude() + ' [m]';&lt;br /&gt;
  el('altitudeAccuracy').innerText = geolocation.getAltitudeAccuracy() + ' [m]';&lt;br /&gt;
  el('heading').innerText = geolocation.getHeading() + ' [rad]';&lt;br /&gt;
  el('speed').innerText = geolocation.getSpeed() + ' [m/s]';&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// handle geolocation error.&lt;br /&gt;
geolocation.on('error', function(error) {&lt;br /&gt;
  var info = document.getElementById('info');&lt;br /&gt;
  info.innerHTML = error.message;&lt;br /&gt;
  info.style.display = '';&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var accuracyFeature = new Feature();&lt;br /&gt;
geolocation.on('change:accuracyGeometry', function() {&lt;br /&gt;
  accuracyFeature.setGeometry(geolocation.getAccuracyGeometry());&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var positionFeature = new Feature();&lt;br /&gt;
positionFeature.setStyle(new Style({&lt;br /&gt;
  image: new CircleStyle({&lt;br /&gt;
    radius: 6,&lt;br /&gt;
    fill: new Fill({&lt;br /&gt;
      color: '#3399CC'&lt;br /&gt;
    }),&lt;br /&gt;
    stroke: new Stroke({&lt;br /&gt;
      color: '#fff',&lt;br /&gt;
      width: 2&lt;br /&gt;
    })&lt;br /&gt;
  })&lt;br /&gt;
}));&lt;br /&gt;
&lt;br /&gt;
geolocation.on('change:position', function() {&lt;br /&gt;
  var coordinates = geolocation.getPosition();&lt;br /&gt;
  positionFeature.setGeometry(coordinates ?&lt;br /&gt;
    new Point(coordinates) : null);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
new VectorLayer({&lt;br /&gt;
  map: map,&lt;br /&gt;
  source: new VectorSource({&lt;br /&gt;
    features: [accuracyFeature, positionFeature]&lt;br /&gt;
  })&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Bing maps=&lt;br /&gt;
[[Fitxer:Baga xalet.png | thumbnail]]&lt;br /&gt;
*https://openlayers.org/en/latest/examples/bing-maps.html&lt;br /&gt;
&lt;br /&gt;
*https://es.wikipedia.org/wiki/Bing_Maps&lt;br /&gt;
Seria l'equivalent a Google Maps per a Microsoft. A Windows 10 es diu ''Windows Maps'''. Les imatges aèries s'actualitzen amb freqüència.&lt;br /&gt;
&lt;br /&gt;
Per utilitzar els mapes de Bing (visió satèl·lit) necessito una key. Per obtenir la clau/key de desenvolupament he de registrar-me al '''Bing Maps Dev Center''':&lt;br /&gt;
*https://www.microsoft.com/en-us/maps&lt;br /&gt;
*https://www.bingmapsportal.com/&lt;br /&gt;
&lt;br /&gt;
Anem a l'apartat keys, i fem un Create key per a l'aplicació de prova que estem fent.&lt;br /&gt;
*Application name: openlayers-example&lt;br /&gt;
*url: blanc&lt;br /&gt;
*type: basic&lt;br /&gt;
*application type: dev/test&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Key: ******&lt;br /&gt;
Application Url:&lt;br /&gt;
Key type: Basic / Dev/Test&lt;br /&gt;
Created date: 04/20/2020&lt;br /&gt;
Expiration date: None&lt;br /&gt;
Key Status: Enabled&lt;br /&gt;
Security Enabled: No&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veig que en l'aplicació d'exemple Londres és a les coordenades:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
center: [-6655.5402445057125, 6709968.258934638],&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sistema de coordenades: Bing and Google are both in WGS84 Web Mercator (Auxiliary Sphere) WKID 102100 or 3857&lt;br /&gt;
&lt;br /&gt;
Per convertir a les coordenades UTM de Bagà (42.25437,1.85840) he de fer el mateix que vaig fer a ''La Casa de Papel'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
import {fromLonLat} from 'ol/proj';&lt;br /&gt;
...&lt;br /&gt;
center: fromLonLat([1.85840,42.25437]),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Smoothing lines using Chaikins algorithm=&lt;br /&gt;
*https://openlayers.org/en/latest/examples/chaikin.html&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ npm instal chaikin-smooth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, abril 2020&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>