<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>http://gis.inf.elte.hu/giswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ilyesenikoe</id>
	<title>GIS Wiki - Szerkesztő közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="http://gis.inf.elte.hu/giswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ilyesenikoe"/>
	<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Ilyesenikoe"/>
	<updated>2026-06-04T05:49:27Z</updated>
	<subtitle>Szerkesztő közreműködései</subtitle>
	<generator>MediaWiki 1.31.7</generator>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=176</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=176"/>
		<updated>2016-05-10T11:25:58Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Források */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.)&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala:  [http://openlayers.org/ http://openlayers.org/]&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – [https://www.youtube.com/watch?v=U3ByMIIsA_Y  OpenLayers 3]&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=174</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=174"/>
		<updated>2016-05-10T11:23:45Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: Ilyesenikoe átnevezte a(z) Open Layers 3 lapot a következő névre: OpenLayers 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.)&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Open_Layers_3&amp;diff=175</id>
		<title>Open Layers 3</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Open_Layers_3&amp;diff=175"/>
		<updated>2016-05-10T11:23:45Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: Ilyesenikoe átnevezte a(z) Open Layers 3 lapot a következő névre: OpenLayers 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#ÁTIRÁNYÍTÁS [[OpenLayers 3]]&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=172</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=172"/>
		<updated>2016-05-10T11:22:49Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: Ilyesenikoe átnevezte a(z) GIS Wiki:Open Layers 3 lapot a következő névre: Open Layers 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.)&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:Open_Layers_3&amp;diff=173</id>
		<title>GIS Wiki:Open Layers 3</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:Open_Layers_3&amp;diff=173"/>
		<updated>2016-05-10T11:22:49Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: Ilyesenikoe átnevezte a(z) GIS Wiki:Open Layers 3 lapot a következő névre: Open Layers 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#ÁTIRÁNYÍTÁS [[Open Layers 3]]&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=170</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=170"/>
		<updated>2016-05-10T11:22:20Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: Ilyesenikoe átnevezte a(z) Szerkesztő:Ilyesenikoe lapot a következő névre: GIS Wiki:Open Layers 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.)&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Szerkeszt%C5%91:Ilyesenikoe&amp;diff=171</id>
		<title>Szerkesztő:Ilyesenikoe</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Szerkeszt%C5%91:Ilyesenikoe&amp;diff=171"/>
		<updated>2016-05-10T11:22:20Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: Ilyesenikoe átnevezte a(z) Szerkesztő:Ilyesenikoe lapot a következő névre: GIS Wiki:Open Layers 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#ÁTIRÁNYÍTÁS [[GIS Wiki:Open Layers 3]]&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=169</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=169"/>
		<updated>2016-05-10T11:21:21Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.)&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=168</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=168"/>
		<updated>2016-05-10T11:20:36Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.)&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=167</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=167"/>
		<updated>2016-05-10T11:20:12Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;nowiki&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=166</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=166"/>
		<updated>2016-05-10T11:19:39Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=165</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=165"/>
		<updated>2016-05-10T11:18:24Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=164</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=164"/>
		<updated>2016-05-10T11:12:31Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Exports lehetőségei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=163</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=163"/>
		<updated>2016-05-10T11:11:50Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Exports lehetőségei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&lt;br /&gt;
        height: 400px;&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/head&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=162</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=162"/>
		<updated>2016-05-10T11:10:16Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Exports lehetőségei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=161</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=161"/>
		<updated>2016-05-10T11:09:37Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Exports lehetőségei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;info ol Parsing dependencies&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=160</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=160"/>
		<updated>2016-05-10T11:08:21Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Összefoglaló példa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=159</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=159"/>
		<updated>2016-05-10T11:07:05Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=158</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=158"/>
		<updated>2016-05-10T11:06:36Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;&amp;gt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=157</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=157"/>
		<updated>2016-05-10T11:06:10Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;&amp;gt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=156</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=156"/>
		<updated>2016-05-10T11:05:09Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=155</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=155"/>
		<updated>2016-05-10T11:04:23Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;&amp;lt;nowiki /&amp;gt;/div&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=154</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=154"/>
		<updated>2016-05-10T11:02:30Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;&amp;lt;nowiki /&amp;gt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=153</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=153"/>
		<updated>2016-05-10T11:00:52Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Exports lehetőségei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=152</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=152"/>
		<updated>2016-05-10T10:59:38Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Exports lehetőségei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=151</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=151"/>
		<updated>2016-05-10T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Exports lehetőségei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/code&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=150</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=150"/>
		<updated>2016-05-10T10:57:47Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Exports lehetőségei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=149</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=149"/>
		<updated>2016-05-10T09:12:32Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: Eltávolította a lap teljes tartalmát&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=148</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=148"/>
		<updated>2016-05-10T09:12:11Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: Új oldal, tartalma: „ Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben í…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=147</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=147"/>
		<updated>2016-05-10T09:08:36Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Térkép */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=146</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=146"/>
		<updated>2016-05-10T09:08:11Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Define lehetőségei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=145</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=145"/>
		<updated>2016-05-10T09:06:53Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geo adatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 engedéllyel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
     &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=144</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=144"/>
		<updated>2016-05-10T08:58:37Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
=== Főbb funkcionalitások ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
=== Felépítés ===&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
=== Teljes build, testre-szabott build ===&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
     &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=143</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=143"/>
		<updated>2016-05-10T08:56:43Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
     &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Saját kód és OL3 kód együttes fordítása ==&lt;br /&gt;
&lt;br /&gt;
Egy alternatíva testre-szabott build-ek készítésére a saját kód OpenLayers 3-mal együtt történő fordítása a Closure fordító segítségével. Ennek a módszernek előnye az, hogy a Closure fordító kiszűri azokat a kódokat, melyeket az alkalmazás nem használ, és ehhez nem szükséges egy „exports” lista írása és karbantartása. Ugyanakkor lehetővé teszi olyan OpenLayers 3 függvények és objektumok használatát, melyek nem részei az OpenLayers 3 API-nak. Ez kissé kockázatos is lehet, de szerencsére a fordító szól, ha olyan függvényeket és objektumokat használnánk, melyek már nem az OpenLayers 3 API részei. (A módszerről részletesebben: [http://openlayers.org/en/v3.15.1/doc/tutorials/closure.html itt] olvasható.)&lt;br /&gt;
&lt;br /&gt;
== Eltérő koordináta rendszerek esete ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 képes megjeleníteni raszteres adatot WMS, WMTS, statikus kép típusú és sok más forrásból a szervertől kapott koordináta rendszertől eltérően. A koordináták transzformálása a web böngészőben történik. A nézet minden Proj4js támogató koordináta referencia rendszerben lehetséges, és előzetesen inkompatibilis rétegek ma már kombinálhatóak. Az alábbi példa során látható, hogy a forrás és a nézet koordináta rendszere eltérő, az átszámítás megtörténik viszont automatikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var map = new ol.Map({&lt;br /&gt;
  target: &amp;#039;map&amp;#039;,&lt;br /&gt;
  view: new ol.View({&lt;br /&gt;
    projection: &amp;#039;EPSG:3857&amp;#039;, //HERE IS THE VIEW PROJECTION&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }),&lt;br /&gt;
  layers: [&lt;br /&gt;
    new ol.layer.Tile({&lt;br /&gt;
      source: new ol.source.TileWMS({&lt;br /&gt;
        projection: &amp;#039;EPSG:4326&amp;#039;, //HERE IS THE DATA SOURCE PROJECTION&lt;br /&gt;
        url: &amp;#039;http://demo.boundlessgeo.com/geoserver/wms&amp;#039;,&lt;br /&gt;
        params: {&lt;br /&gt;
          &amp;#039;LAYERS&amp;#039;: &amp;#039;ne:NE1_HR_LC_SR_W_DR&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Érdekes és látványos példák ==&lt;br /&gt;
&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/animation.html Animációk térképen (View Animation)]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/box-selection.html Ország, országok kijelölése (Box Selection) ]&lt;br /&gt;
*	 [http://openlayers.org/en/v3.15.1/examples/earthquake-clusters.html Földrengések és mértékének megjelenítése (Eartquake Clusters)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/export-pdf.html Exportálás pdf-be] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/flight-animation.html Repülő animáció (Flight Animation)] &lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/kml-timezones.html Időzónák KML-lel (Timezones in KML)]&lt;br /&gt;
*	[http://openlayers.org/en/v3.15.1/examples/measure.html Terület felmérés (Measure)] &lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* Open Layers 3 hivatalos oldala: http://openlayers.org/&lt;br /&gt;
* FOSSGIS Konferencia - 2015 Münster- Andreas Hocevar, Bart van den Eijnden, Marc Jansen előadása – OpenLayers 3 : https://www.youtube.com/watch?v=U3ByMIIsA_Y&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=142</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=142"/>
		<updated>2016-05-10T08:43:59Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Define lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A konfigurációs állományban a define használata a Clusre-hoz kötődik, mely engedi olyan konstansok definiálását, melyek fordítási időben beállíthatóak. A fentebbi példa négy goog tulajdonságot állít be a Closure library számára. Az OpenLayers 3 kód rendelkezik definiált értékekkel is, melyek beállíthatóak.&lt;br /&gt;
Néhányat ezek közül hamisra (false) állítva azt érjük el, hogy azok a kódrészletek melyek ezekhez a beállításokhoz kötődnek „halottak” lesznek, vagyis sosem lesznek végrehajtva. Mivel a Closure fordító előrehaladottabb módja eltávolítja a halott kódokat, az előrehaladottabb fordítóval létrehozott kód jóval kisebb méretű lesz.&lt;br /&gt;
Észrevehető, hogy az előbbi folyamat során készült build állomány látványosan kisebb, mint a teljes build, de még ennél kisebbre is szorítható. Ez azért van, mert alapból mindhárom interpreter és minden réteg típus bele van vonva. Mivel csak egy interpreterre volt szükségünk, és csak a csempe rétegre, a többit ki is zárhatjuk a tulajdonság listában hamisra állítva őket. A következő kóddal kell kiegészíteni a konfigurációs állomány define részét, és újra kell futtatni a build szkriptet – majd újra láthatjuk, hogy kisebb lett a build mérete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
     &amp;quot;ol.ENABLE_DOM=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_WEBGL=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_PROJ4JS=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_IMAGE=false&amp;quot;,&lt;br /&gt;
      &amp;quot;ol.ENABLE_VECTOR=false&amp;quot;,&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Externs lehetőségei====&lt;br /&gt;
&lt;br /&gt;
Az externs alatt olyan külsős dolgok nevei szerepelnek, melyek használva vannak a fordított kódban. A fordító include-olja az externs mappába mindazokat a külsős állományokat, melyeket a könyvtár valamely részében használni fog. Például, ha használjuk a Bing Maps-et, akkor be kell include-olni az konfigurációs állomány externs részénél.&lt;br /&gt;
Az oli.js és az olx.js külső állományok az OpenLayers 3 API-hoz. Pédául az olx.js külső definíciókat tartalmaz az OpenLayers 3 konstruktor lehetőségeihez. Ezt a két állományt mindig használni érdemes extern-ként testre-szabott build esetén. &lt;br /&gt;
&lt;br /&gt;
====Egyéb lehetőségek====&lt;br /&gt;
&lt;br /&gt;
Vannak egyébb fordítási lehetőségek a konfigurációs állományban. Például a manage_closure_dependencies mindig használandó. Minden más fordítási opció is beállítható itt, a closure-util-ban látható az összes, listázott formában.&lt;br /&gt;
Több információ a build szkriptekről, és a tulajdonságokról, melyeket a konfigurációs állományokban állítani lehet [https://github.com/openlayers/ol3/blob/master/tasks/readme.md itt] található.&lt;br /&gt;
&lt;br /&gt;
===Kód karbantartás===&lt;br /&gt;
&lt;br /&gt;
A kód karbantartása érdekében, ha a Node csomag által telepítjük az OpenLayer-st, akkor az npm használható a legújabb verzióra frissítéshez. Ha a Github repo volt klónozva, nem biztos, hogy elég a pull a legújabb verzióra, mert néhány  használt csomag, mint például a fordító, lehet, hogy kíván upgrade-et is. Ezt érdemes npm install paranccsal kiváltani, nem pedig npm update-tel.&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=141</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=141"/>
		<updated>2016-05-10T08:34:51Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Exports lehetőségei====&lt;br /&gt;
&lt;br /&gt;
A legszámottevőbb része ennek a konfigurációs állománynak az „exports” tömb. Ez a tömb deklarálja azokat a függvényeket/konstruktorokat, melyeket a JavaScript kódban használni lehet majd. Például az előbbi konfigurációs állomány alkalmas az előző fejezetben bemutatott javascript esetén. (Alap komponensek/Összefoglaló példa)&lt;br /&gt;
Most már minden elő van készítve a OpenLayers 3 build –hez. A következő parancsok következnek.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd node_modules/openlayers&lt;br /&gt;
$ node tasks/build.js build/ol-custom.json build/ol-custom.js&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A build felvehet egy kis időt, de végül a console-on a következő jelenik meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
info ol Parsing dependencies&lt;br /&gt;
info ol Compiling 364 sources&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a parancsnak a nyomán létre kellett jöjjön az ol-custom.js állomány a node_module/openlayers/build mappában. Ellenőrizhető és megnyitható. Tesztként használhatjuk a következő HTML állományt, hogy lássuk, a testre-szabott build-ünk az elvártaknak megfelelően működik.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OpenLayers 3 example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;node_modules/openlayers/css/ol.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      #map {&lt;br /&gt;
        width: 600px;&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;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;node_modules/openlayers/build/ol-custom.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    var map = new ol.Map({&lt;br /&gt;
      target: &amp;#039;map&amp;#039;,&lt;br /&gt;
      layers: [&lt;br /&gt;
        new ol.layer.Tile({&lt;br /&gt;
          source: new ol.source.OSM()&lt;br /&gt;
        })&lt;br /&gt;
      ],&lt;br /&gt;
      view: new ol.View({&lt;br /&gt;
        center: [0, 0],&lt;br /&gt;
        zoom: 4&lt;br /&gt;
      })&lt;br /&gt;
    });&lt;br /&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;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=140</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=140"/>
		<updated>2016-05-10T08:30:24Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurációs állomány készítése  ===&lt;br /&gt;
&lt;br /&gt;
A következő lépés egy build konfigurációs állomány létrehozása. Ennek formátuma JSON kell legyen. Egy példa build konfigurációs állományra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exports&amp;quot;: [&lt;br /&gt;
    &amp;quot;ol.Map&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.View&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.control.defaults&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.layer.Tile&amp;quot;,&lt;br /&gt;
    &amp;quot;ol.source.OSM&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;compile&amp;quot;: {&lt;br /&gt;
    &amp;quot;externs&amp;quot;: [&lt;br /&gt;
      &amp;quot;externs/bingmaps.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/closure-compiler.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/geojson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/oli.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/olx.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/proj4js.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/tilejson.js&amp;quot;,&lt;br /&gt;
      &amp;quot;externs/topojson.js&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;define&amp;quot;: [&lt;br /&gt;
      &amp;quot;goog.DEBUG=false&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;extra_annotation_name&amp;quot;: [&lt;br /&gt;
      &amp;quot;api&amp;quot;, &amp;quot;observable&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;compilation_level&amp;quot;: &amp;quot;ADVANCED&amp;quot;,&lt;br /&gt;
    &amp;quot;manage_closure_dependencies&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Például egy ilyen tartalommal rendelkező állományt ol-custom.json névvel le lehet menteni a node_modulse/openlayers/build mappába.&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=139</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=139"/>
		<updated>2016-05-10T08:26:48Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testre-szabott build-ek készítése ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 fordítói eszközök használják a Node-ot és a Java-t, tehát ezek fel kell legyenek telepítve a fejlesztő gépén. A node –version, java –version parancsok segítségével ellenőrizhető, hogy a Java és a Node fel van-e telepítve, a fejlesztői útmutató (developer guide) a minimum verziót is rögzíti.&lt;br /&gt;
Következő lépésként le kell tölteni az OpenLayers 3-at, hiszen a testre-szabott build-hez szükség van a forrás állományokra és sajátos build szkriptekre. Ezek beszerzése több módon lehetséges: az ol3 repository klónozásával, vagy valamelyik OL3 közzététel archiv csomagjának letöltésével. Letölthető az openLayres Node csomagja is az NPM (Node Package Manager) segítségével. A következőkben ezt a módszert mutatjuk be:&lt;br /&gt;
&lt;br /&gt;
* 1.	Létrehozunk egy új mappát:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2.	Letöltünk egy OpenLayers 3 disztribúciót az NPM használatával:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez mindig az OpenLayers 3 legfrissebb stabil verzióját tölti le, és a node_modules alá telepíti. Ezt követően ellenőrizhető az „openlayers” mappa jelenléte a node_modules listázásával. A node_modules/openlayers/node_modules&lt;br /&gt;
mappának például tartalmaznia kell a closure-utilt is, hiszen az OL3 rá épül.&lt;br /&gt;
&lt;br /&gt;
Ezen műveleteket követően mindenünk biztosítva van a testre-szabott build elkészítéséhez.&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=138</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=138"/>
		<updated>2016-05-09T14:16:32Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=137</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=137"/>
		<updated>2016-05-09T14:15:00Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=136</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=136"/>
		<updated>2016-05-09T14:13:02Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nézet ===&lt;br /&gt;
&lt;br /&gt;
Az ol.Map nem felelős a középpont(center), nagyítás(zoom) mértékének számontartásáért. Ezt a nézet (view) típusú elem tudja biztosítani.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
map.setView(new ol.View({&lt;br /&gt;
    center: [0, 0],&lt;br /&gt;
    zoom: 2&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A nézet elem rendelkezik a vetületről (projection) is. Meghatározza a középpont koordináta rendszerét, és a lépték mértékét. Ha nincsen külön megadva, akkor az alapból beállított vetület a  Spherical Mercator (EPSG:3857), és a lépték mértékegysége a méter. &lt;br /&gt;
A nagyítás mértéke szorosan összefügg a felbontás nagyságával. Három tulajdonság rögzíti a fontos paramétereket. A maxZoom a rendelkezésre álló nagyítási szintek számát jelöli, alapbeállításban 28. A maxResolution a legnagyobb felbontást jelenti, a 0. nagyítási szint esetén ennyi egység van pixelenként. A további nagyítási szintek úgy állnak elő, hogy az előző szint maxResolution értéke a zoomFactor értékkel lesz osztva. (Alapbeállítás a zoomFactor esetében a 2.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forrás ===&lt;br /&gt;
&lt;br /&gt;
Hogy távoli adatot tudjunk biztosítani a térképrétegek számára, az OpenLayers 3 az ol.source.Source alosztályokat kínálja. Segítségükkel különböző ingyenes és kereskedelmi térképszolgáltatókat tudunk elérni, mint OpenStreetMap, Bing (térkép csempe szolgáltatások), WMS, WMTS (OBC források), GeoJSON, KML (vektoradatok).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A réteg(Layer) egy source elem által biztosított adatok megjelenítéséért felelős. Az OpenLayers 3 három fő layer típust kínál: ol.layer.Tile, ol.layer.Image, ol.layer.Vector.&lt;br /&gt;
* ol.layer.Tile: olyan réteg forrásokhoz kell rendelni, melyek előre generáltak, rácsban lévő csempés képek, nagyítási mérték szerint rendezve a bizonyos felbontásnak megfelelően.&lt;br /&gt;
* ol.layer.Image: szerver által generalizát képekhez, melyek tetszőleges bővítésre, felbontásra nyitottak.&lt;br /&gt;
* ol.layer.Vector: olyan vektor adatokhoz, melyek kliens oldalon vannak generalizálva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Összefoglaló példa ===&lt;br /&gt;
&lt;br /&gt;
Összefoglalva a példa a következőképpen nézne ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  new ol.Map({&lt;br /&gt;
    layers: [&lt;br /&gt;
      new ol.layer.Tile({source: new ol.source.OSM()})&lt;br /&gt;
    ],&lt;br /&gt;
    view: new ol.View({&lt;br /&gt;
      center: [0, 0],&lt;br /&gt;
      zoom: 2&lt;br /&gt;
    }),&lt;br /&gt;
    target: &amp;#039;map&amp;#039;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=135</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=135"/>
		<updated>2016-05-09T14:03:12Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;br /&gt;
&lt;br /&gt;
== Alap komponensek ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép ===&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers3 fő komponense a térkép (ol.Map). Egy target típusú elem zárja körül (pl. egy div elem). A térkép minden tulajdonsága beállítható már létrehozása idején, de beállító metódusok is rendelkezésre állnak. (pl. setTarget()).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;map&amp;quot; style=&amp;quot;width: 100%, height: 400px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  var map = new ol.Map({target: &amp;#039;map&amp;#039;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=134</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=134"/>
		<updated>2016-05-09T13:53:23Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;br /&gt;
&lt;br /&gt;
Osztály névtereknek, mint pl. az ol.layer van egy alap (base) osztály típusuk, mint például ol.layer.Layer. Ezek nagyjából absztrakt osztályok, melyekből a más osztályok örökölnek. &lt;br /&gt;
A forrás állományok hasonlóan vannak rendezve, minden névtér számára egy külön mappa. Neveik kisbetűsek, és az alosztályok ismétlik a örökölt osztály nevét is, mint pl. ol.layer.vectorlayers.js.&lt;br /&gt;
Az OL3 azt a konvenciót követi, hogy a privát tulajdonságok és metódusok, vagyis amelyek nem részei az API-nak, alul-vonásban végződnek. Általában a példány típusú tulajdonságok privátok, és elérésük erre célzott függvényekkel lehetséges. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teljes build, testre-szabott build ==&lt;br /&gt;
&lt;br /&gt;
Azt a fordítás, mely minden exportálható nevet tartalmaz, teljes build-nek (full build) nevezik. Egy befogadó verzió ebből elérhető, mely minden alkalmazás számára használható.&lt;br /&gt;
Closure fordítóval az exportálások fordítási időben meghatározhatóak, így saját fordítások (build-ek) könnyedén hozhatóak létre, melyek az adott weboldalhoz, alkalmazáshoz illőek. A testre-szabott build (custom build) csak azokat a tulajdonságokat, metódusokat exportálja, melyeket az adott weblap vagy alkalmazás valóban használni fog. Mivel a teljes build (full build) nagyon nagy méretű, és valószínűleg egyre nagyobb méretűvé fog válni amikor új lehetőségeket kerülnek az API-ba, nagyon ajánlott testre-szabott build-et létrehozni a weblapok számára.&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=133</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=133"/>
		<updated>2016-05-09T13:49:21Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Az OL3 nagy mértékben épül a Google Closure eszköztárára, nagy mértékben él a Closure könyvtár (Closure Library) nyújtotta segítséggel – például a DOM vagy az esemény kezelés résznél. Ez lehetővé teszi, hogy a fejlesztők a térképészeti funkciókra koncentrálhassanak, tudva, hogy az alá épült szoftver megbízható, jól tesztelt, böngésző szinten egyezményesített. A Closure Library sajátos tervezésének előnye, hogy a Closure fordító (Clusure Compiler) optimalizálni tudja, ráadásul olyan mértékben tömörítve, hogy az messzemenően meghaladja az jelenlegi kínálatokat. Az OL3-nak is nagy előnye származik ebből.&lt;br /&gt;
A Closure Compiler használata egyben azt is jelenti, hogy a tulajdonságok és a metódusok át vannak nevezve az előzőekhez képest. A hosszú, jelentést megnevező nevek többsége rövidebbre lett cserélve – ezért nem igazán hatékonyan használhatóak az alkalmazásokban, melyek a könyvtárat használják. A megoldást az a módszer nyújtja, hogy kell explicit módon exportálni őket. Ez azt jelenti, hogy az exportált nevek (vagyis azok, melyek nincsenek átnevezve), képezik tulajdonképpen a publikus API-ját a könyvtárnak. Ezek az exportálható tulajdonságok, metódusok vannak megjelölve a forrásban, és dokumentálva vannak az „API docs”-ban. Ez a nyilvánosan támogatott API-ja a könyvtárnak.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objektumok és névterek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OL3 a Closure könyvtárhoz hasonló felépítésű. A legfelső szintet az ol névtér képezi (alapértelmezetten, var ol = {}). Alábbi szinteken a következők vannak:&lt;br /&gt;
*	Alábbi névterek, mint az ol.layer; kisbetűvel kezdődik a nevük&lt;br /&gt;
*	Egyszerű objektumok, melyek statikus tulajdonságokat és metódusokat használnak, mint pl. ol.animation; ezek is kisbetűvel kezdődnek.&lt;br /&gt;
*	Típusok, melyek nagybetűvel kezdődnek. Ezek nagyjából „osztályok”, ami itt azt jelenti, hogy konstruktor függvény van prototípusos öröklődéssel, mint az ol.Map vagy ol.layer.Vector (Vector osztály a layer névtérben). Ugyanakkor vannak más, egyszerű típusok, mint pl. ol.Extent, amely egy tömb.&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=132</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=132"/>
		<updated>2016-05-09T13:40:08Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: /* Open Layers 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Az OpenLayers egy olyan JavaScipt programcsomag, mely lehetővé teszi geoadatok böngészőben történő megjelenítését. Maga a programcsomag is JavaScriptben íródott, és nyílt forráskódú, BSD2 licensszel rendelkezik.&lt;br /&gt;
&lt;br /&gt;
== Főbb funkcionalitások ==&lt;br /&gt;
&lt;br /&gt;
Az OpenLayers 3 (OL3) alapvetően az OpenLayers webes térkép megjelenítő, kezelő csomag újratervezése. A második verzióját is széles kőrben használták, de mivel az korábbi Javascript elemeken alapult, most már újra korszerűsítésre volt igény. Az OL3 alapoktól újra volt építve modern tervezési minták alkalmazásával.&lt;br /&gt;
&lt;br /&gt;
A harmadik kiadás arra irányult, hogy lehetővé tegye a második verzió által támogatott lehető legtöbb funkcionalitást, széles körben támogatva különböző kereskedelmi és ingyenes forrásokat, és a legismertebb vektor adat formátumokat. Ahogyan a második verzióban, az adat bármilyen vetületben lehet. Ugyanakkor a harmadik kiadás hozzáad néhány új funkcionalitást, mint például a könnyű forgathatóságot, valamint a térképek animálását. &lt;br /&gt;
A jelenlegi könyvtár 3 interpretert (renderer) foglal magába: Canvas, DOM, és WebGL. Mindhárom támogatja úgy a raszter adatokat csempe/kép szerverektől, illetve vektor adatokat; a WebGL csak pont vektorokat támogat (Point vectors), és nem támogat címkéket. Természetesen csak azon böngészők esetén támogatják a Canvast, melyekben van Canvas interpreter. A WebGL esetében is hasonlóan, csak azon eszközök és böngészők esetében használható, melyek támogatják a WebGL-t. Az Internet Explorer 9 előtt verziók egyáltalán nem kapnak támogatást. &lt;br /&gt;
&lt;br /&gt;
A könyvtár alkalmas desktop/laptop használat esetén, úgy mint mobil eszköz esetén is. &lt;br /&gt;
Úgy van megtervezve az alkalmazás, hogy a főbb új irányzatokkal bővíthető legyen a következő kiadást. (pl. 3D térképek megjelenítése, WebGL használata nagyméretű vektoradatok megjelenítéséhez.)&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=131</id>
		<title>GIS Wiki:Rólunk</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GIS_Wiki:R%C3%B3lunk&amp;diff=131"/>
		<updated>2016-05-09T10:50:02Z</updated>

		<summary type="html">&lt;p&gt;Ilyesenikoe: Új oldal, tartalma: „ == Open Layers 3 ==  Próba a lap létrehozásához.”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Open Layers 3 ==&lt;br /&gt;
&lt;br /&gt;
Próba a lap létrehozásához.&lt;/div&gt;</summary>
		<author><name>Ilyesenikoe</name></author>
		
	</entry>
</feed>