<?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=Mate</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=Mate"/>
	<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/Mate"/>
	<updated>2026-05-09T08:41:56Z</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=Mapbox&amp;diff=574</id>
		<title>Mapbox</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Mapbox&amp;diff=574"/>
		<updated>2017-05-28T17:20:13Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Fájl:Mapbox-logo-color.png|center|300px|alt=Mapbox logo|Mapbox logo]]&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Mapbox&amp;#039;&amp;#039;&amp;#039; térképszolgáltatóknak kínál megoldásokat, illetve emellett térképek tervezéséhez és karbantartásához készít eszközöket. Ezek többnyire OpenStreetMap adatokat használnak. A Mapbox elkötelezett a nyílt megoldások mellett, de nem csak használja az adatokat, hanem többek között a Mapnik nyílt forrású térképrenderelő megoldás kódjának fő hozzájárulója is.&lt;br /&gt;
&lt;br /&gt;
== Mapbox, mint cég ==&lt;br /&gt;
&lt;br /&gt;
=== Történelem ===&lt;br /&gt;
&lt;br /&gt;
A cég startupként indult 2010-ben, Washingtonban. Dolgozóinak száma 2017-re elérte a 180 főt (az első negyedév végére 199 fő). Főként dizájnerek, szoftver fejlesztők és térképészek. Mára több, mint 5000 üzleti és 200000 ingyenes ügyfelük és felhasználójuk van. Olyan cégek valamint szervezetek használják a termékeiket, mint a Foursquare, Evernote, Pinterest, Github, The Weather Channel, Guardian, Financial Times, CNN, Greenpeace, National Geographic. Hisznek az open-source fejlesztésekben, ezért jelenleg 440-nél is több publikus repójuk van a GitHubon.&lt;br /&gt;
&lt;br /&gt;
=== Munkásság ===&lt;br /&gt;
&lt;br /&gt;
Egy olyan eljáráson dolgoznak, amivel a műholdképek minősége feljavítható. Ha most bárki megnyitja a Google Maps vagy a Bing Maps térképeit, átkapcsol műholdas nézetbe, akkor azt veheti észre, hogy az egész Földön mindenhol világos van, mindenhol nyár van és nincsenek felhők. Ha elkezdünk visszaközelíteni, akkor kiderül, hogy sokszor nagy kontraszteltérés van egymás mellett lévő sávok közt, feltűnnek felhők, a színek össze-vissza változnak és sok esetben a képek rossz minőségűek. Ez annak köszönhető, hogy ezek a térképek ezernyi kis darabból vannak összerakva. Előfordul, hogy az egymás melletti képek teljesen más forrásból származnak, más technológiával készültek, illetve időben akár évekre van egymástól két szomszédos darab. A Mapbox azt tűzte ki célul, hogy felszámolja az ilyen hibákat, megszabadulva a zavaró felhőktől és grafikai egyenetlenségektől. &lt;br /&gt;
Ennek megvalósításához az alapanyag a NASA Lance-Modis rendszerének műholdjáról származik. A Mapbox ezekből az adatokból ragadta ki a 2011. január 1. és 2012. december 31. közt készült két évnyi anyagokat. Ez 339 ezer darab 16 megapixeles képet jelent, ami több mint 5687 milliárd pixel összességében. A projekt célja, ezt a pixelmennyiséget lefésülni 5 milliárd pixelnyire, amiből összeáll egy részletes, de egységes glóbusz.&lt;br /&gt;
&lt;br /&gt;
=== Külön tájékoztató oldal a logójukról és a nevükről ===&lt;br /&gt;
&lt;br /&gt;
A cég precízen figyel a nevüket és logójukat érintő pontosságra. Épp ezért egy külön oldal hoztak létre ezek helyes használatáról. A szemléletesség kedvéért összeszedtek néhány korábban előjött, helytelen példát is.&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/about/press/brand-guidelines A Mapbox tájékoztató oldala a helyes logó- és névhasználatról]&lt;br /&gt;
&lt;br /&gt;
== Árazás ==&lt;br /&gt;
&lt;br /&gt;
A Mapbox jelenleg háromféle csomagban nyújtja a termékeit és szolgáltatásait. Ezek épp úgy lefedik a kisebb igényű, hobbicélú felhasználókat, mint a komoly ipari igényű céges felhasználókat.&lt;br /&gt;
&lt;br /&gt;
=== Csomagok összehasonlítása ===&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_pricing01.png|frame|center|link=https://www.mapbox.com/pricing/|alt=Mapbox csomagok árazása|A Mapbox csomagok árazása]]&lt;br /&gt;
&lt;br /&gt;
== Fejlődéstörténet ==&lt;br /&gt;
&lt;br /&gt;
A Mapbox a fejlődését tekintve az alábbiak szerint különíthető el részekre/modulokra/termékekre (időrendben felsorolva, illetve a legfontosabb tulajdonságaikkal):&lt;br /&gt;
&lt;br /&gt;
* [https://www.mapbox.com/blog/mapbox-js-with-leaflet/ Mapbox.js (JavaScript, előgenerált raszteres csempék, Leaflet kompatibilitás)]&lt;br /&gt;
* [https://www.mapbox.com/blog/mapbox-gl/ Mapbox GL (vektoros, OpenGL alapú, kliensoldali renderelés)]&lt;br /&gt;
* [https://www.mapbox.com/blog/mapbox-gl-js/ Mapbox GL JS (JavaScript, WebGL, kliensoldali renderelés)]&lt;br /&gt;
&lt;br /&gt;
Mivel a Mapbox.js és a Mapbox GL JS is JavaScript alapú megoldás, ezért fontos lehet a kettő közti átjárhatóság. Ez azt jelenti, hogy ugyan nem automatikusan, de manuálisan a régebbi Mapbox.js projektek átalakíthatóak az újabb Mapbox GL JS alapú működésre. Ehhez a konverzióhoz az alábbi link nyújt hivatalos segítséget:&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/blog/mapbox-js-to-gl-js/ Converting a project from Mapbox.js to Mapbox GL JS]&lt;br /&gt;
&lt;br /&gt;
== Példák (Mapbox.js) ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép (kezdő szint) ===&lt;br /&gt;
==== Minimális példa egy térkép megjelenítésére ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/simple_map.html A simple map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- A simple map --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initialize a map in an HTML element with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;A simple map&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
		.setView([47.47, 19.06], 15);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Világtérkép folytonosságának kikapcsolása ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/disable_world_wrapping.html Disable world wrapping]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable world wrapping --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Instead of loading tiles beyond -180 and 180, only show one copy of the world. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable world wrapping&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
		// These options apply to the tile layer in the map.&lt;br /&gt;
		tileLayer: {&lt;br /&gt;
			// This map option disables world wrapping. by default, it is false.&lt;br /&gt;
			continuousWorld: false,&lt;br /&gt;
			// This option disables loading tiles outside of the world bounds.&lt;br /&gt;
			noWrap: true&lt;br /&gt;
		}&lt;br /&gt;
	}).setView([40, 0], 2);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Változtatható alapréteg ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/toggling_baselayers.html Toggling baselayers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling baselayers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling between three different baselayers. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Toggling baselayers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
  var map = L.mapbox.map(&amp;#039;map&amp;#039;, null, {&lt;br /&gt;
      maxZoom: 18&lt;br /&gt;
  }).setView([22.76, -25.84], 3);&lt;br /&gt;
&lt;br /&gt;
  var layers = {&lt;br /&gt;
      Streets: L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;),&lt;br /&gt;
      Outdoors: L.mapbox.tileLayer(&amp;#039;mapbox.outdoors&amp;#039;),&lt;br /&gt;
      Satellite: L.mapbox.tileLayer(&amp;#039;mapbox.satellite&amp;#039;)&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  layers.Streets.addTo(map);&lt;br /&gt;
  L.control.layers(layers).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Térkép nagyításának és mozgatásának letiltása ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/disable_zooming_and_panning.html Disable zooming and panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable zooming and panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to disable zooming and panning with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable zooming and panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
  zoomControl: false&lt;br /&gt;
}).setView([41.0252, 28.9950], 11);&lt;br /&gt;
&lt;br /&gt;
// Disable drag and zoom handlers.&lt;br /&gt;
map.dragging.disable();&lt;br /&gt;
map.touchZoom.disable();&lt;br /&gt;
map.doubleClickZoom.disable();&lt;br /&gt;
map.scrollWheelZoom.disable();&lt;br /&gt;
map.keyboard.disable();&lt;br /&gt;
&lt;br /&gt;
// Disable tap handler, if present.&lt;br /&gt;
if (map.tap) map.tap.disable();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Megnézhető térképterület leszűkítése határokkal ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/using_maxbounds_to_restrict_map_panning.html Using maxBounds to restrict map panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using maxBounds to restrict map panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Preventing users from leaving an area on the map --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Using maxBounds to restrict map panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
// Construct a bounding box for this map that the user cannot&lt;br /&gt;
// move out of&lt;br /&gt;
var southWest = L.latLng(46.47, 17.06),&lt;br /&gt;
    northEast = L.latLng(48.47, 21.06),&lt;br /&gt;
    bounds = L.latLngBounds(southWest, northEast);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // set that bounding box as maxBounds to restrict moving the map&lt;br /&gt;
    // see full maxBounds documentation:&lt;br /&gt;
    // http://leafletjs.com/reference.html#map-maxbounds&lt;br /&gt;
    maxBounds: bounds,&lt;br /&gt;
    maxZoom: 19,&lt;br /&gt;
    minZoom: 10&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// zoom the map to that bounding box&lt;br /&gt;
map.fitBounds(bounds);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dupla kattintásra nagyítás az adott területre középre helyezve + aránymérték ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/double_click_to_zoom_+_scale_control.html Double click to zoom]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Double click to zoom --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listen for a double click event from a user and zoom in on the map. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Double click to zoom&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // Disable default double-click behavior.&lt;br /&gt;
    doubleClickZoom: false&lt;br /&gt;
})&lt;br /&gt;
.setView([46.695, 11.470], 4)&lt;br /&gt;
.on(&amp;#039;dblclick&amp;#039;, function(e) {&lt;br /&gt;
    // Zoom exactly to each double-clicked point&lt;br /&gt;
    map.setView(e.latlng, map.getZoom() + 1);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// L.control.scale() is included in Leaflet see&lt;br /&gt;
// https://www.mapbox.com/mapbox.js/api/v3.0.1/l-control-scale/&lt;br /&gt;
L.control.scale().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Töltésjelző megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/show_loading_screen.html Show loading screen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show loading screen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use events to show when features are loading and loaded by displaying and hiding a loading message --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show loading screen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * This is a very simple version of a &amp;#039;loading screen&amp;#039;: there are much&lt;br /&gt;
 * fancier ones you can use instead, like&lt;br /&gt;
 * http://codepen.io/collection/HtAne/&lt;br /&gt;
 */&lt;br /&gt;
#loader {&lt;br /&gt;
    position:absolute; top:0; bottom:0; width:100%;&lt;br /&gt;
    background:rgba(255, 255, 255, 1);&lt;br /&gt;
    transition:background 1s ease-out;&lt;br /&gt;
    -webkit-transition:background 1s ease-out;&lt;br /&gt;
}&lt;br /&gt;
#loader.done {&lt;br /&gt;
    background:rgba(255, 255, 255, 0);&lt;br /&gt;
}&lt;br /&gt;
#loader.hide {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
#loader .message {&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    left:50%;&lt;br /&gt;
    top:50%;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;loader&amp;#039;&amp;gt;&amp;lt;span class=&amp;#039;message&amp;#039;&amp;gt;loading&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var loader = document.getElementById(&amp;#039;loader&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 13);&lt;br /&gt;
&lt;br /&gt;
// Add a tile layer with a loading animation&lt;br /&gt;
&lt;br /&gt;
// start the loading screen&lt;br /&gt;
startLoading();&lt;br /&gt;
L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addTo(map) // add your tiles to the map&lt;br /&gt;
    .on(&amp;#039;load&amp;#039;, finishedLoading); // when the tiles load, remove the screen&lt;br /&gt;
&lt;br /&gt;
function startLoading() {&lt;br /&gt;
    loader.className = &amp;#039;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function finishedLoading() {&lt;br /&gt;
    // first, toggle the class &amp;#039;done&amp;#039;, which makes the loading screen&lt;br /&gt;
    // fade out&lt;br /&gt;
    loader.className = &amp;#039;done&amp;#039;;&lt;br /&gt;
    setTimeout(function() {&lt;br /&gt;
        // then, after a half-second, add the class &amp;#039;hide&amp;#039;, which hides&lt;br /&gt;
        // it completely and ensures that the user can interact with the&lt;br /&gt;
        // map again.&lt;br /&gt;
        loader.className = &amp;#039;hide&amp;#039;;&lt;br /&gt;
    }, 500);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jelölők a térképen ===&lt;br /&gt;
&lt;br /&gt;
==== Egyszerű jelölő ikonnal ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_without_geojson.html Marker without GeoJSON]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker without GeoJSON --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use L.mapbox.marker.icon to create a simple marker without GeoJSON. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Icon examples: https://www.mapbox.com/maki-icons/ --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker without GeoJSON&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 16);&lt;br /&gt;
&lt;br /&gt;
// L.marker is a low-level marker constructor in Leaflet.&lt;br /&gt;
L.marker([47.47, 19.06], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;roadblock&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;#fa0&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
L.marker([47.4725, 19.0625], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;college&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;64BA49&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő koordinátáinak megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/display_latitude_and_longitude_on_marker_movement.html Display latitude and longitude on marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display latitude and longitude on marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Drag the marker to a new location on a map to view it&amp;#039;s coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Display latitude and longitude on marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var coordinates = document.getElementById(&amp;#039;coordinates&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    }),&lt;br /&gt;
    draggable: true&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// every time the marker is dragged, update the coordinates container&lt;br /&gt;
marker.on(&amp;#039;dragend&amp;#039;, ondragend);&lt;br /&gt;
&lt;br /&gt;
// Set the initial marker coordinate on load.&lt;br /&gt;
ondragend();&lt;br /&gt;
&lt;br /&gt;
function ondragend() {&lt;br /&gt;
    var m = marker.getLatLng();&lt;br /&gt;
    coordinates.innerHTML = &amp;#039;Latitude: &amp;#039; + m.lat + &amp;#039;&amp;lt;br /&amp;gt;Longitude: &amp;#039; + m.lng;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőtől való távolság ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/distance_between_two_markers.html Distance between two markers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Distance between two markers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Calculate the distance between two points in meters using distanceTo. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Distance between two markers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-distance {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;distance&amp;#039; class=&amp;#039;ui-distance&amp;#039;&amp;gt;Click to place a marker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// Start with a fixed marker.&lt;br /&gt;
var fixedMarker = L.marker(new L.LatLng(47.4725, 19.0625), {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;ff8888&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).bindPopup(&amp;#039;ELTE Déli tömb&amp;#039;).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Store the fixedMarker coordinates in a variable.&lt;br /&gt;
var fc = fixedMarker.getLatLng();&lt;br /&gt;
&lt;br /&gt;
// Create a featureLayer that will hold a marker and linestring.&lt;br /&gt;
var featureLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// When a user clicks on the map we want to&lt;br /&gt;
// create a new L.featureGroup that will contain a&lt;br /&gt;
// marker placed where the user selected the map and&lt;br /&gt;
// a linestring that draws itself between the fixedMarkers&lt;br /&gt;
// coordinates and the newly placed marker.&lt;br /&gt;
map.on(&amp;#039;click&amp;#039;, function(ev) {&lt;br /&gt;
    // ev.latlng gives us the coordinates of&lt;br /&gt;
    // the spot clicked on the map.&lt;br /&gt;
    var c = ev.latlng;&lt;br /&gt;
&lt;br /&gt;
    var geojson = {&lt;br /&gt;
      type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
      features: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [c.lng, c.lat]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }, {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;LineString&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [&lt;br /&gt;
              [fc.lng, fc.lat],&lt;br /&gt;
              [c.lng, c.lat]&lt;br /&gt;
            ]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;stroke&amp;quot;: &amp;quot;#000&amp;quot;,&lt;br /&gt;
            &amp;quot;stroke-opacity&amp;quot;: 0.5,&lt;br /&gt;
            &amp;quot;stroke-width&amp;quot;: 4&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    featureLayer.setGeoJSON(geojson);&lt;br /&gt;
&lt;br /&gt;
    // Finally, print the distance between these two points&lt;br /&gt;
    // on the screen using distanceTo().&lt;br /&gt;
    var container = document.getElementById(&amp;#039;distance&amp;#039;);&lt;br /&gt;
    container.innerHTML = (fc.distanceTo(c)).toFixed(0) + &amp;#039;m&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Navigáció jelölőket tartalmazó menüvel ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_navigation_from_a_marker_menu.html Marker navigation from a marker menu]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Marker navigation from a marker menu --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Zoom to a marker and open its tooltip when a marker menu in a list is selected. --&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker navigation from a marker menu&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .info {&lt;br /&gt;
    background:#fff;&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:260px;&lt;br /&gt;
    top:10px;&lt;br /&gt;
    right:10px;&lt;br /&gt;
    border-radius:2px;&lt;br /&gt;
    }&lt;br /&gt;
    .info .item {&lt;br /&gt;
      display:block;&lt;br /&gt;
      border-bottom:1px solid #eee;&lt;br /&gt;
      padding:10px;&lt;br /&gt;
      text-decoration:none;&lt;br /&gt;
      }&lt;br /&gt;
      .info .item small { color:#888; }&lt;br /&gt;
      .info .item:hover,&lt;br /&gt;
      .info .item.active { background:#f8f8f8; }&lt;br /&gt;
      .info .item:last-child { border-bottom:none; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039; class=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;info&amp;#039; class=&amp;#039;info&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON({&lt;br /&gt;
  type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
  features: [&lt;br /&gt;
    {&lt;br /&gt;
      type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
      geometry: {&lt;br /&gt;
          type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
          coordinates: [19.0625, 47.4725]&lt;br /&gt;
      },&lt;br /&gt;
      properties: {&lt;br /&gt;
          title: &amp;#039;ELTE Déli tömb&amp;#039;,&lt;br /&gt;
          description: &amp;#039;ELTE IK&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-id&amp;#039;: &amp;#039;marker-1&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
          type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
          geometry: {&lt;br /&gt;
              type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
              coordinates: [19.0625, 47.4745]&lt;br /&gt;
          },&lt;br /&gt;
          properties: {&lt;br /&gt;
              title: &amp;#039;ELTE Északi tömb&amp;#039;,&lt;br /&gt;
              description: &amp;#039;ELTE TTK&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
          }&lt;br /&gt;
      },&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		  geometry: {&lt;br /&gt;
			  type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
			  coordinates: [19.063425, 47.505258]&lt;br /&gt;
		  },&lt;br /&gt;
		  properties: {&lt;br /&gt;
			  title: &amp;#039;Oktogon&amp;#039;,&lt;br /&gt;
			  description: &amp;#039;Oktogon metró állomás&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-symbol&amp;#039;: &amp;#039;rail-metro&amp;#039;&lt;br /&gt;
		  }&lt;br /&gt;
		}&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var info = document.getElementById(&amp;#039;info&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// Iterate through each feature layer item, build a&lt;br /&gt;
// marker menu item and enable a click event that pans to + opens&lt;br /&gt;
// a marker that&amp;#039;s associated to the marker item.&lt;br /&gt;
myLayer.eachLayer(function(marker) {&lt;br /&gt;
  var link = info.appendChild(document.createElement(&amp;#039;a&amp;#039;));&lt;br /&gt;
  link.className = &amp;#039;item&amp;#039;;&lt;br /&gt;
  link.href = &amp;#039;#&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  // Populate content from each markers object.&lt;br /&gt;
  link.innerHTML = marker.feature.properties.title +&lt;br /&gt;
    &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;#039; + marker.feature.properties.description + &amp;#039;&amp;lt;/small&amp;gt;&amp;#039;;&lt;br /&gt;
  link.onclick = function() {&lt;br /&gt;
    if (/active/.test(this.className)) {&lt;br /&gt;
      this.className = this.className.replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
    } else {&lt;br /&gt;
      var siblings = info.getElementsByTagName(&amp;#039;a&amp;#039;);&lt;br /&gt;
      for (var i = 0; i &amp;lt; siblings.length; i++) {&lt;br /&gt;
        siblings[i].className = siblings[i].className&lt;br /&gt;
          .replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
      };&lt;br /&gt;
      this.className += &amp;#039; active&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      // When a menu item is clicked, animate the map to center&lt;br /&gt;
      // its associated marker and open its popup.&lt;br /&gt;
      map.panTo(marker.getLatLng());&lt;br /&gt;
      marker.openPopup();&lt;br /&gt;
    }&lt;br /&gt;
    return false;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Csak a környező jelölők megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_radius_search.html Marker radius search]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker radius search --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the .distanceTo function to only show markers within a range --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker radius search&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.emerald&amp;#039;)&lt;br /&gt;
    .setView([40, -95], 4);&lt;br /&gt;
&lt;br /&gt;
var RADIUS = 500000;&lt;br /&gt;
var filterCircle = L.circle(L.latLng(40, -75), RADIUS, {&lt;br /&gt;
    opacity: 1,&lt;br /&gt;
    weight: 1,&lt;br /&gt;
    fillOpacity: 0.4&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
var csvLayer = omnivore.csv(&amp;#039;./data/airports.csv&amp;#039;, null, L.mapbox.featureLayer())&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;mousemove&amp;#039;, function(e) {&lt;br /&gt;
    filterCircle.setLatLng(e.latlng);&lt;br /&gt;
    csvLayer.setFilter(function showAirport(feature) {&lt;br /&gt;
        return e.latlng.distanceTo(L.latLng(&lt;br /&gt;
                feature.geometry.coordinates[1],&lt;br /&gt;
                feature.geometry.coordinates[0])) &amp;lt; RADIUS;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő mozgatása programozottan ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_movement.html Marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Simple marker animation. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var t = 0;&lt;br /&gt;
window.setInterval(function() {&lt;br /&gt;
    // Making a lissajous curve just for fun.&lt;br /&gt;
    // Create your own animated path here.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        Math.cos(t * 0.5) * 10,&lt;br /&gt;
        Math.sin(t) * 10));&lt;br /&gt;
    t += 0.01; // Movement&lt;br /&gt;
}, 1); // Speed&lt;br /&gt;
&lt;br /&gt;
marker.addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő animálása geoJson vonalon ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/animate_a_marker_along_line.html Animate a marker along line]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Animate a marker along line --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Create a marker and animate its position along the length of a line by looking up its coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Animate a marker along line&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
// Generate a GeoJSON line. You could also load GeoJSON via AJAX&lt;br /&gt;
// or generate it some other way.&lt;br /&gt;
var geojson = { type: &amp;#039;LineString&amp;#039;, coordinates: [] };&lt;br /&gt;
var start = [0, 0];&lt;br /&gt;
var momentum = [2, 2];&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; 1000; i++) {&lt;br /&gt;
    start[0] += momentum[0];&lt;br /&gt;
    start[1] += momentum[1];&lt;br /&gt;
    if (start[1] &amp;gt; 30 || start[1] &amp;lt; -30) momentum[1] *= -1;&lt;br /&gt;
    if (start[0] &amp;gt; 90 || start[0] &amp;lt; -90) momentum[0] *= -1;&lt;br /&gt;
    geojson.coordinates.push(start.slice());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Add this generated geojson object to the map.&lt;br /&gt;
L.geoJson(geojson).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Create a counter with a value of 0.&lt;br /&gt;
var j = 0;&lt;br /&gt;
&lt;br /&gt;
// Create a marker and add it to the map.&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
  icon: L.mapbox.marker.icon({&lt;br /&gt;
    &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
  })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
tick();&lt;br /&gt;
function tick() {&lt;br /&gt;
    // Set the marker to be at the same point as one&lt;br /&gt;
    // of the segments or the line.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        geojson.coordinates[j][1],&lt;br /&gt;
        geojson.coordinates[j][0]));&lt;br /&gt;
&lt;br /&gt;
    // Move to the next point of the line&lt;br /&gt;
    // until `j` reaches the length of the array.&lt;br /&gt;
    if (++j &amp;lt; geojson.coordinates.length) setTimeout(tick, 20);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tippek, üzenetek, szövegek ===&lt;br /&gt;
&lt;br /&gt;
==== Egyedi jelölő tipp ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/custom_marker_tooltips.html Custom marker tooltips]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Custom marker tooltips --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to create a custom marker tooltip with style text or images using Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Custom marker tooltips&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.leaflet-popup-content img {&lt;br /&gt;
  max-width:100%;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geoJson = [{&lt;br /&gt;
    type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
    &amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.06, 47.47]},&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;image&amp;quot;: &amp;quot;http://hazai.kozep.bme.hu/wp-content/uploads/2013/06/00-Info-E-nyit%C3%B3.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;url&amp;quot;: &amp;quot;http://www.infopark.hu/&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        &amp;quot;city&amp;quot;: &amp;quot;Budapest - Infopark&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		&amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.063, 47.473]},&lt;br /&gt;
		&amp;quot;properties&amp;quot;: {&lt;br /&gt;
			&amp;quot;image&amp;quot;: &amp;quot;http://photos.wikimapia.org/p/00/02/45/33/03_big.jpg&amp;quot;,&lt;br /&gt;
			&amp;quot;url&amp;quot;: &amp;quot;https://www.elte.hu/&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
			&amp;quot;city&amp;quot;: &amp;quot;Budapest - ELTE Lágymányos&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
}];&lt;br /&gt;
&lt;br /&gt;
// Add custom popups to each using our custom feature properties&lt;br /&gt;
myLayer.on(&amp;#039;layeradd&amp;#039;, function(e) {&lt;br /&gt;
    var marker = e.layer,&lt;br /&gt;
        feature = marker.feature;&lt;br /&gt;
&lt;br /&gt;
    // Create custom popup content&lt;br /&gt;
    var popupContent =  &amp;#039;&amp;lt;a target=&amp;quot;_blank&amp;quot; class=&amp;quot;popup&amp;quot; href=&amp;quot;&amp;#039; + feature.properties.url + &amp;#039;&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
                            &amp;#039;&amp;lt;img src=&amp;quot;&amp;#039; + feature.properties.image + &amp;#039;&amp;quot; /&amp;gt;&amp;#039; +&lt;br /&gt;
                            feature.properties.city +&lt;br /&gt;
                        &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    // http://leafletjs.com/reference.html#popup&lt;br /&gt;
    marker.bindPopup(popupContent,{&lt;br /&gt;
        closeButton: false,&lt;br /&gt;
        minWidth: 480&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Add features to the map&lt;br /&gt;
myLayer.setGeoJSON(geoJson);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőhöz tartozó tipp megjelenítése egérrel ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/show_tooltips_on_hover.html Show tooltips on hover]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show tooltips on hover --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to show marker popups on hover with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show tooltips on hover&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geojson = {&lt;br /&gt;
    type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
    features: [{&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Bal alsó&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;small&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.05, 47.46]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Jobb felső&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#7ec9b1&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.07, 47.48]&lt;br /&gt;
        }&lt;br /&gt;
    }]&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON(geojson);&lt;br /&gt;
myLayer.on(&amp;#039;mouseover&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.openPopup();&lt;br /&gt;
});&lt;br /&gt;
myLayer.on(&amp;#039;mouseout&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.closePopup();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Helyek ===&lt;br /&gt;
&lt;br /&gt;
==== Hely keresése automatikus kiegészítéssel ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/geocoding_with_autocomplete.html Geocoding with autocomplete]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geocoding with autocomplete --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API to show real-time search suggestions. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geocoding with autocomplete&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addControl(L.mapbox.geocoderControl(&amp;#039;mapbox.places&amp;#039;, {&lt;br /&gt;
        autocomplete: true&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hely lekérdezése név alapján (Geocoderrel) ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/use_geocoder_to_set_map_position.html Use geocoder to set map position]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use geocoder to set map position --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API initially set map position on Chester, New Jersey. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Use geocoder to set map position&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geocoder = L.mapbox.geocoder(&amp;#039;mapbox.places&amp;#039;),&lt;br /&gt;
    map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;examples.map-h67hf2ic&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
geocoder.query(&amp;#039;Tab, HU&amp;#039;, showMap);&lt;br /&gt;
&lt;br /&gt;
function showMap(err, data) {&lt;br /&gt;
    // The geocoder can return an area, like a city, or a&lt;br /&gt;
    // point, like an address. Here we handle both cases,&lt;br /&gt;
    // by fitting the map bounds to an area or zooming to a point.&lt;br /&gt;
    if (data.lbounds) {&lt;br /&gt;
        map.fitBounds(data.lbounds);&lt;br /&gt;
    } else if (data.latlng) {&lt;br /&gt;
        map.setView([data.latlng[0], data.latlng[1]], 13);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Aktuális pozíció megjelenítése (megközelítőleg) ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/geolocation.html Geolocation]&lt;br /&gt;
&lt;br /&gt;
FONTOS: A Geolocation, azaz helymeghatározás használatához valid HTTPS kapcsolat szükséges.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geolocation --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Finding the user&amp;#039;s position --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geolocation&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.ui-button {&lt;br /&gt;
  background:#3887BE;&lt;br /&gt;
  color:#FFF;&lt;br /&gt;
  display:block;&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  top:50%;left:50%;&lt;br /&gt;
  width:160px;&lt;br /&gt;
  margin:-20px 0 0 -80px;&lt;br /&gt;
  z-index:100;&lt;br /&gt;
  text-align:center;&lt;br /&gt;
  padding:10px;&lt;br /&gt;
  border:1px solid rgba(0,0,0,0.4);&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
  .ui-button:hover {&lt;br /&gt;
    background:#3074a4;&lt;br /&gt;
    color:#fff;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;#039;#&amp;#039; id=&amp;#039;geolocate&amp;#039; class=&amp;#039;ui-button&amp;#039;&amp;gt;Find me&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geolocate = document.getElementById(&amp;#039;geolocate&amp;#039;);&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// This uses the HTML5 geolocation API, which is available on&lt;br /&gt;
// most mobile browsers and modern browsers, but not in Internet Explorer&lt;br /&gt;
//&lt;br /&gt;
// See this chart of compatibility for details:&lt;br /&gt;
// http://caniuse.com/#feat=geolocation&lt;br /&gt;
if (!navigator.geolocation) {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Geolocation is not available&amp;#039;;&lt;br /&gt;
} else {&lt;br /&gt;
    geolocate.onclick = function (e) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        e.stopPropagation();&lt;br /&gt;
        map.locate();&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Once we&amp;#039;ve got a position, zoom and center the map&lt;br /&gt;
// on it, and add a single marker.&lt;br /&gt;
map.on(&amp;#039;locationfound&amp;#039;, function(e) {&lt;br /&gt;
    map.fitBounds(e.bounds);&lt;br /&gt;
&lt;br /&gt;
    myLayer.setGeoJSON({&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [e.latlng.lng, e.latlng.lat]&lt;br /&gt;
        },&lt;br /&gt;
        properties: {&lt;br /&gt;
            &amp;#039;title&amp;#039;: &amp;#039;Here I am!&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#ff8888&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // And hide the geolocation button&lt;br /&gt;
    geolocate.parentNode.removeChild(geolocate);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// If the user chooses not to allow their location&lt;br /&gt;
// to be shared, display an error message.&lt;br /&gt;
map.on(&amp;#039;locationerror&amp;#039;, function() {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Position could not be found&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Útvonaltervezés (Autós, biciklis, gyalogos közlekedéssel) ===&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/directions.html Directions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Directions --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the mapbox-directions.js plugin to show results from the Mapbox Directions API --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Directions&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
#inputs,&lt;br /&gt;
#errors,&lt;br /&gt;
#directions {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 33.3333%;&lt;br /&gt;
    max-width: 300px;&lt;br /&gt;
    min-width: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#inputs {&lt;br /&gt;
    z-index: 10;&lt;br /&gt;
    top: 10px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#directions {&lt;br /&gt;
    z-index: 99;&lt;br /&gt;
    background: rgba(0,0,0,.8);&lt;br /&gt;
    top: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#errors {&lt;br /&gt;
    z-index: 8;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    border-radius: 0 0 3px 3px;&lt;br /&gt;
    background: rgba(0,0,0,.25);&lt;br /&gt;
    top: 90px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;#039;stylesheet&amp;#039; href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.css&amp;#039; type=&amp;#039;text/css&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;inputs&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;errors&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;directions&amp;#039;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;routes&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;instructions&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    zoomControl: false&lt;br /&gt;
}).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// move the attribution control out of the way&lt;br /&gt;
map.attributionControl.setPosition(&amp;#039;bottomleft&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// create the initial directions object, from which the layer&lt;br /&gt;
// and inputs will pull data.&lt;br /&gt;
var directions = L.mapbox.directions();&lt;br /&gt;
&lt;br /&gt;
var directionsLayer = L.mapbox.directions.layer(directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInputControl = L.mapbox.directions.inputControl(&amp;#039;inputs&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsErrorsControl = L.mapbox.directions.errorsControl(&amp;#039;errors&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsRoutesControl = L.mapbox.directions.routesControl(&amp;#039;routes&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInstructionsControl = L.mapbox.directions.instructionsControl(&amp;#039;instructions&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugin támogatás és a Mapbox ===&lt;br /&gt;
&lt;br /&gt;
==== Leaflet-MiniMap ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_minimap.html Leaflet-MiniMap]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet-MiniMap --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display a smaller navigable map using the Leaflet-MiniMap plugin. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet-MiniMap&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .on(&amp;#039;ready&amp;#039;, function() {&lt;br /&gt;
        new L.Control.MiniMap(L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;))&lt;br /&gt;
            .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Fullscreen ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_fullscreen.html Leaflet Fullscreen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Fullscreen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a control to enable a map to be in full screen mode. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Fullscreen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
L.control.fullscreen().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Heat ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_heat.html Leaflet Heat]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Heat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initially draw heatmap data on a map and allow a users mouse movement to draw their own. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Heat&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-heat/v0.1.3/leaflet-heat.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;./data/realworld.388.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.dark&amp;#039;)&lt;br /&gt;
        .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
    var heat = L.heatLayer(addressPoints, {maxZoom: 18}).addTo(map);&lt;br /&gt;
    var draw = false;&lt;br /&gt;
&lt;br /&gt;
    // add points on mouse move (except when interacting with the map)&lt;br /&gt;
    map.on({&lt;br /&gt;
        click:   function () { draw = !draw; },&lt;br /&gt;
        mousemove: function (e) {&lt;br /&gt;
            if (draw) {&lt;br /&gt;
                heat.addLatLng(e.latlng);&lt;br /&gt;
            }&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Markercluster ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_markercluster.html Leaflet Markercluster]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Markercluster --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Leaflet Markercluster plugin --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Markercluster&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
        .setView([-37.82, 175.215], 14);&lt;br /&gt;
&lt;br /&gt;
    var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
    for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
        var a = addressPoints[i];&lt;br /&gt;
        var title = a[2];&lt;br /&gt;
        var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
            icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
            title: title&lt;br /&gt;
        });&lt;br /&gt;
        marker.bindPopup(title);&lt;br /&gt;
        markers.addLayer(marker);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    map.addLayer(markers);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Listing markers in clusters ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/listing_markers_in_clusters.html Listing markers in clusters]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listing markers in clusters --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show a list of clustered markers by their coordinates on a map with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Listing markers in clusters&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  max-height:240px;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
  width:100px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([-37.82, 175.215], 14);;&lt;br /&gt;
&lt;br /&gt;
var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
    var a = addressPoints[i];&lt;br /&gt;
    var title = a[2];&lt;br /&gt;
    var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
        icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
        title: title&lt;br /&gt;
    });&lt;br /&gt;
    marker.bindPopup(title);&lt;br /&gt;
    markers.addLayer(marker);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.addLayer(markers);&lt;br /&gt;
&lt;br /&gt;
function onmove() {&lt;br /&gt;
    // Get the map bounds - the top-left and bottom-right locations.&lt;br /&gt;
    var inBounds = [],&lt;br /&gt;
        bounds = map.getBounds();&lt;br /&gt;
    markers.eachLayer(function(marker) {&lt;br /&gt;
        // For each marker, consider whether it is currently visible by comparing&lt;br /&gt;
        // with the current map bounds.&lt;br /&gt;
        if (bounds.contains(marker.getLatLng())) {&lt;br /&gt;
            inBounds.push(marker.options.title);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    // Display a list of markers.&lt;br /&gt;
    document.getElementById(&amp;#039;coordinates&amp;#039;).innerHTML = inBounds.join(&amp;#039;\n&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;move&amp;#039;, onmove);&lt;br /&gt;
&lt;br /&gt;
// call onmove off the bat so that the list is populated.&lt;br /&gt;
// otherwise, there will be no markers listed until the map is moved.&lt;br /&gt;
onmove();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Az újabb irányvonal: a Mapbox GL JS megvalósítása és működése a háttérben ==&lt;br /&gt;
&lt;br /&gt;
Három alapvető működési egység és feladatkör különíthető el a Mapbox működésében. Ezek a következők: &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;térkép&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;adat&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;elemzés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Térkép: Mapbox GL a rendereléshez ===&lt;br /&gt;
&lt;br /&gt;
A térkép megjelenítését a GPU végzi &amp;#039;&amp;#039;&amp;#039;Mapbox GL&amp;#039;&amp;#039;&amp;#039; segítségével. A legfontosabb jellemzői:&lt;br /&gt;
* A régi raszteres adatokkal (png csempék) szemben, itt vektoros adatok (vektoros csempék) vannak.&lt;br /&gt;
* A megjelenítéskor rugalmasan kezelhetőek a stílusok (style JSON segítségével).&lt;br /&gt;
* Kliens oldali renderelés (Open/Web GL alapon).&lt;br /&gt;
* Az adatok külön rétegek a térképen, nem képezik szerves és elválaszthatatlan részét.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_mapboxgl_03.png|frame|center|alt=Mapbox GL|Mapbox GL]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
  container: &amp;#039;map&amp;#039;,&lt;br /&gt;
  center: [47.47, 19.06],&lt;br /&gt;
  zoom: 15,&lt;br /&gt;
  style: style_object,&lt;br /&gt;
  hash: true&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/mapbox-gl-js/api Mapbox GL API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Adat: Vector Tile ===&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Vector Tile&amp;#039;&amp;#039;&amp;#039; egy nyílt szabvány webes térképek adatainak kódolásához.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_01.png|frame|center|alt=Vector Tile ábrázolása|Vector Tile ábrázolása]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_02.png|frame|center|alt=Vector Tile példa|Vector Tile példa]]&lt;br /&gt;
&lt;br /&gt;
=== Elemzés: Turf.js ===&lt;br /&gt;
&lt;br /&gt;
A térkép adatain elvégezhetünk különféle térinformatikai műveleteket és elemzéseket. Erre a célra szolgál a &amp;#039;&amp;#039;&amp;#039;Turj.js&amp;#039;&amp;#039;&amp;#039; nevű nyílt forráskódú JavaScript könyvtár, melyet a Mapbox is beépítetten használ.&lt;br /&gt;
Néhány ilyen térinformatikai művelet a Turf.js képességei közül:&lt;br /&gt;
* Méretarány, mérték, távolságmérés kezelése&lt;br /&gt;
* Transzformáció (például: buffer terület, unió, metszet és különbség képzés)&lt;br /&gt;
* Pontok, poligonok és multipoligonok kezelése&lt;br /&gt;
* Interpoláció&lt;br /&gt;
* Adat osztályozás&lt;br /&gt;
* Mértékegység konverzió&lt;br /&gt;
* Rácsok, hálózatok elemzése&lt;br /&gt;
* Aggregációs és statisztikai függvények&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_turf_03.png|frame|center|alt=Turf.js|Turf.js]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var poly1 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#0f0&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.574787, 35.594087],&lt;br /&gt;
      [-82.574787, 35.615581],&lt;br /&gt;
      [-82.545261, 35.615581],&lt;br /&gt;
      [-82.545261, 35.594087],&lt;br /&gt;
      [-82.574787, 35.594087]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
var poly2 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#00f&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.560024, 35.585153],&lt;br /&gt;
      [-82.560024, 35.602602],&lt;br /&gt;
      [-82.52964, 35.602602],&lt;br /&gt;
      [-82.52964, 35.585153],&lt;br /&gt;
      [-82.560024, 35.585153]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var union = turf.union(poly1, poly2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://turfjs.org/docs Turf.js API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Komponensek közötti kapcsolat ===&lt;br /&gt;
&lt;br /&gt;
A Mapbox, illetve annak webes Mapbox.js nevű megoldása, ezen különálló komponensek egyfajta &amp;quot;wrapper&amp;quot; megvalósítása az egyszerűbb és egységesebb kezelhetőség érdekében.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_rendereles_01.png|frame|center|alt=Megjelenítés, renderelés|Megjelenítés, renderelés]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_elemzes_01.png|frame|center|alt=Elemzés, szűrés|Elemzés, szűrés]]&lt;br /&gt;
&lt;br /&gt;
== Példák (Mapbox GL JS) ==&lt;br /&gt;
&lt;br /&gt;
=== Minimális példa egy térkép megjelenítésére ===&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/display_a_map.html Display a map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display a map --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initialize a map in an HTML element with Mapbox GL JS. --&amp;gt;&lt;br /&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;#039;utf-8&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body { margin:0; padding:0; }&lt;br /&gt;
        #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script&amp;gt;&lt;br /&gt;
		var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
	&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
mapboxgl.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
mapboxgl.accessToken = demoAccessToken;&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
    container: &amp;#039;map&amp;#039;, // container id&lt;br /&gt;
    style: &amp;#039;mapbox://styles/mapbox/streets-v9&amp;#039;, //stylesheet location&lt;br /&gt;
    center: [19.06, 47.47], // starting position&lt;br /&gt;
    zoom: 15 // starting zoom&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vector tile forrás hozzáadása a térképhez ===&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/add_a_vector_tile_source.html Add a vector tile source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a vector tile source --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a vector source to a map. --&amp;gt;&lt;br /&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;#039;utf-8&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body { margin:0; padding:0; }&lt;br /&gt;
        #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script&amp;gt;&lt;br /&gt;
		var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
	&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
mapboxgl.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
mapboxgl.accessToken = demoAccessToken;&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
    container: &amp;#039;map&amp;#039;,&lt;br /&gt;
    style: &amp;#039;mapbox://styles/mapbox/light-v9&amp;#039;,&lt;br /&gt;
    zoom: 15,&lt;br /&gt;
    center: [19.06, 47.47]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;load&amp;#039;, function () {&lt;br /&gt;
&lt;br /&gt;
    map.addLayer({&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;terrain-data&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
        &amp;quot;source&amp;quot;: {&lt;br /&gt;
            type: &amp;#039;vector&amp;#039;,&lt;br /&gt;
            url: &amp;#039;mapbox://mapbox.mapbox-terrain-v2&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;source-layer&amp;quot;: &amp;quot;contour&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: {&lt;br /&gt;
            &amp;quot;line-join&amp;quot;: &amp;quot;round&amp;quot;,&lt;br /&gt;
            &amp;quot;line-cap&amp;quot;: &amp;quot;round&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;paint&amp;quot;: {&lt;br /&gt;
            &amp;quot;line-color&amp;quot;: &amp;quot;#ff69b4&amp;quot;,&lt;br /&gt;
            &amp;quot;line-width&amp;quot;: 1&lt;br /&gt;
        }&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Külső forrásból származó vector tile hozzáadása a térképhez ===&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/add_a_third_party_vector_tile_source.html Add a third party vector tile source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a third party vector tile source --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Render a map using an external vector source of OpenStreetMap data provided by Mapzen. --&amp;gt;&lt;br /&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;#039;utf-8&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body { margin:0; padding:0; }&lt;br /&gt;
        #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script&amp;gt;&lt;br /&gt;
		var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
	&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
mapboxgl.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
mapboxgl.accessToken = demoAccessToken;&lt;br /&gt;
var simple = {&lt;br /&gt;
    &amp;quot;version&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;sources&amp;quot;: {&lt;br /&gt;
        &amp;quot;osm&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;vector&amp;quot;,&lt;br /&gt;
            &amp;quot;tiles&amp;quot;: [&amp;quot;https://tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.mvt?api_key=vector-tiles-LM25tq4&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;layers&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;background&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;background&amp;quot;,&lt;br /&gt;
            &amp;quot;paint&amp;quot;: {&lt;br /&gt;
                &amp;quot;background-color&amp;quot;: &amp;quot;#41afa5&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }, {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;water&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;fill&amp;quot;,&lt;br /&gt;
            &amp;quot;source&amp;quot;: &amp;quot;osm&amp;quot;,&lt;br /&gt;
            &amp;quot;source-layer&amp;quot;: &amp;quot;water&amp;quot;,&lt;br /&gt;
            &amp;quot;filter&amp;quot;: [&amp;quot;==&amp;quot;, &amp;quot;$type&amp;quot;, &amp;quot;Polygon&amp;quot;],&lt;br /&gt;
            &amp;quot;paint&amp;quot;: {&lt;br /&gt;
                &amp;quot;fill-color&amp;quot;: &amp;quot;#3887be&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
    container: &amp;#039;map&amp;#039;,&lt;br /&gt;
    style: simple,&lt;br /&gt;
    zoom: 1,&lt;br /&gt;
    center: [-14, 35]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
map.addControl(new mapboxgl.NavigationControl());&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználás, alkalmazás ==&lt;br /&gt;
&lt;br /&gt;
=== A Foursquare is Mapbox-ra váltott ===&lt;br /&gt;
A Foursquare 2012-ben lecserélte a Google térképszolgáltatására épülő webes felületét egy Mapbox alapú verzióra. Ezzel az újítással a felhasználók már egy színesebb, több információt tartalmazó térképpel találkozhatnak a Foursquare weboldalán. Mindezzel együtt a térképes adatok, képek szolgáltatását sem a Google Maps biztosítja, hanem a szintén népszerű OpenStreetMap. Az OpenStreetMap térképei a világ legtöbb pontján, így Magyarországon is nagyon pontosak és részletesek, és mivel nyílt rendszerről van szó, semmi sem akadályozza a folyamatos fejlődést.&lt;br /&gt;
&lt;br /&gt;
=== Mapbox és WordPress: látványos térképek WordPress oldalon kódolás nélkül ===&lt;br /&gt;
&lt;br /&gt;
==== Hivatalos bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[https://wordpress.org/plugins/mapbox Hivatalos bővítmény]&lt;br /&gt;
&lt;br /&gt;
Elavult verziójú, feltehetően nem fejlesztik tovább. &lt;br /&gt;
&lt;br /&gt;
==== Harmadik féltől származó bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Mapbox-for-wp-advanced-03.png|frame|left|Mapbox for Wordpress Advanced]]&lt;br /&gt;
&lt;br /&gt;
[https://hu.wordpress.org/plugins/mapbox-for-wp-advanced Harmadik féltől származó bővítmény]&lt;br /&gt;
&lt;br /&gt;
A Mapbox for Wordpress Advanced nevű WordPress bővítménnyel egyszerűen lehet térképeket hozzáadni egy WordPress oldalhoz. Ehhez nem kell mást tenni, mint letölteni a bővítményt az alábbi linken:&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com/download Mapbox for Wordpress Advanded letöltése]&lt;br /&gt;
&lt;br /&gt;
Majd a bővítményt feltölteni az adott WordPress oldalra és aktiválni. Ezután egy meglévő Mapbox felhasználói fiókon keresztül Mapbox Studio Classic használatával elkészíthető a kívánt térkép. Végül az elkészített térképhez tartozó Access Token-t és térkép ID-t meg kell adni a Mapbox for Wordpress Advanced bővítménynek.&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com Mapbox működés közben egy WordPress oldalon]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== További érdekességek ===&lt;br /&gt;
&lt;br /&gt;
==== Térkép a Twitter első 6 milliárd geotaggel ellátott fotója alapján ====&lt;br /&gt;
&lt;br /&gt;
Egy speciális világatlaszt készített a nagyvárosokról Eric Fischer, a Mapbox fejlesztője, aki a Twitter indulása óta megosztott összes geotaggel, vagyis földrajzi koordinátákkal ellátott több mint 6 milliárd bejegyzést használta fel hozzá. Első körben azt vizsgálta, hogy melyek azon régiók, kerületek, ahol a legsűrűbben fotóznak. &lt;br /&gt;
&lt;br /&gt;
[https://api.tiles.mapbox.com/v4/enf.c3a2de35/page.html?access_token=pk.eyJ1IjoiZW5mIiwiYSI6IkNJek92bnMifQ.xn2_Uj9RkYTGRuCGg4DXZQ#14/47.4967/19.0618 Twitteres geotaggel ellátott fotók térképe]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Locals-and-tourists-budapest-01-small.png|frame|left|Locals and Tourists - Budapest]]&lt;br /&gt;
&lt;br /&gt;
A projektet továbbgondolva Fischer megkülönböztette a képeket készítő helybelieket a turistáktól. Így létrejött a Locals and Tourists nevű projektje, melynek keretében már azt is elkülönítette, hogy a képeket helybeliek vagy turisták készíthették.&lt;br /&gt;
&lt;br /&gt;
Kék a helyi lakos, piros a turista&lt;br /&gt;
Fischer azokat a személyeket számolta helyi lakosnak, aki egy hónapnál hosszabb ideje készít földrajzi címkékkel rendelkező fotókat egy adott térségben: őket jelölte kék színnel. A pirossal kiemelt turista kategóriába azok tartoznak, akik egy hónapnál kevesebb ideig készítettek és osztottak meg egy helyszínről képeket. A sárga pontok alatt azokat kell érteni, akiknél mindez nem volt egyértelműen meghatározható.&lt;br /&gt;
&lt;br /&gt;
Budapest térképrészletére tekintve a legnépszerűbb turistacélpontok között a Hősök tere, a Városliget, a Lánchíd, és a Gellért-hegy is jól látható.&lt;br /&gt;
&lt;br /&gt;
Átdolgozott, teljesértékű interaktív világtérképre bővített verzió:&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/labs/twitter-gnip/locals/#13/47.4891/19.0476 Twitter Locals and Tourists project]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* [https://www.mapbox.com Mapbox]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Mapbox Mapbox Wiki]&lt;br /&gt;
* [https://hu.wordpress.org/ WordPress]&lt;br /&gt;
* [http://wiki.openstreetmap.org/wiki/Mapbox Openstreetmap Wiki]&lt;br /&gt;
* [https://www.google.hu/search?q=mapbox Google Mapbox]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Mapbox&amp;diff=573</id>
		<title>Mapbox</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Mapbox&amp;diff=573"/>
		<updated>2017-05-28T17:19:07Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Fájl:Mapbox-logo-color.png|center|300px|alt=Mapbox logo|Mapbox logo]]&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Mapbox&amp;#039;&amp;#039;&amp;#039; térképszolgáltatóknak kínál megoldásokat, illetve emellett térképek tervezéséhez és karbantartásához készít eszközöket. Ezek többnyire OpenStreetMap adatokat használnak. A Mapbox elkötelezett a nyílt megoldások mellett, de nem csak használja az adatokat, hanem többek között a Mapnik nyílt forrású térképrenderelő megoldás kódjának fő hozzájárulója is.&lt;br /&gt;
&lt;br /&gt;
== Mapbox, mint cég ==&lt;br /&gt;
&lt;br /&gt;
=== Történelem ===&lt;br /&gt;
&lt;br /&gt;
A cég startupként indult 2010-ben, Washingtonban. Dolgozóinak száma 2017-re elérte a 180 főt (az első negyedév végére 199 fő). Főként dizájnerek, szoftver fejlesztők és térképészek. Mára több, mint 5000 üzleti és 200000 ingyenes ügyfelük és felhasználójuk van. Olyan cégek valamint szervezetek használják a termékeiket, mint a Foursquare, Evernote, Pinterest, Github, The Weather Channel, Guardian, Financial Times, CNN, Greenpeace, National Geographic. Hisznek az open-source fejlesztésekben, ezért jelenleg 440-nél is több publikus repójuk van a GitHubon.&lt;br /&gt;
&lt;br /&gt;
=== Munkásság ===&lt;br /&gt;
&lt;br /&gt;
Egy olyan eljáráson dolgoznak, amivel a műholdképek minősége feljavítható. Ha most bárki megnyitja a Google Maps vagy a Bing Maps térképeit, átkapcsol műholdas nézetbe, akkor azt veheti észre, hogy az egész Földön mindenhol világos van, mindenhol nyár van és nincsenek felhők. Ha elkezdünk visszaközelíteni, akkor kiderül, hogy sokszor nagy kontraszteltérés van egymás mellett lévő sávok közt, feltűnnek felhők, a színek össze-vissza változnak és sok esetben a képek rossz minőségűek. Ez annak köszönhető, hogy ezek a térképek ezernyi kis darabból vannak összerakva. Előfordul, hogy az egymás melletti képek teljesen más forrásból származnak, más technológiával készültek, illetve időben akár évekre van egymástól két szomszédos darab. A Mapbox azt tűzte ki célul, hogy felszámolja az ilyen hibákat, megszabadulva a zavaró felhőktől és grafikai egyenetlenségektől. &lt;br /&gt;
Ennek megvalósításához az alapanyag a NASA Lance-Modis rendszerének műholdjáról származik. A Mapbox ezekből az adatokból ragadta ki a 2011. január 1. és 2012. december 31. közt készült két évnyi anyagokat. Ez 339 ezer darab 16 megapixeles képet jelent, ami több mint 5687 milliárd pixel összességében. A projekt célja, ezt a pixelmennyiséget lefésülni 5 milliárd pixelnyire, amiből összeáll egy részletes, de egységes glóbusz.&lt;br /&gt;
&lt;br /&gt;
=== Külön tájékoztató oldal a logójukról és a nevükről ===&lt;br /&gt;
&lt;br /&gt;
A cég precízen figyel a nevüket és logójukat érintő pontosságra. Épp ezért egy külön oldal hoztak létre ezek helyes használatáról. A szemléletesség kedvéért összeszedtek néhány korábban előjött, helytelen példát is.&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/about/press/brand-guidelines A Mapbox tájékoztató oldala a helyes logó- és névhasználatról]&lt;br /&gt;
&lt;br /&gt;
== Árazás ==&lt;br /&gt;
&lt;br /&gt;
A Mapbox jelenleg háromféle csomagban nyújtja a termékeit és szolgáltatásait. Ezek épp úgy lefedik a kisebb igényű, hobbicélú felhasználókat, mint a komoly ipari igényű céges felhasználókat.&lt;br /&gt;
&lt;br /&gt;
=== Csomagok összehasonlítása ===&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_pricing01.png|frame|center|link=https://www.mapbox.com/pricing/|alt=Mapbox csomagok árazása|A Mapbox csomagok árazása]]&lt;br /&gt;
&lt;br /&gt;
== Fejlődéstörténet ==&lt;br /&gt;
&lt;br /&gt;
A Mapbox a fejlődését tekintve az alábbiak szerint különíthető el részekre/modulokra/termékekre (időrendben felsorolva, illetve a legfontosabb tulajdonságaikkal):&lt;br /&gt;
&lt;br /&gt;
* [https://www.mapbox.com/blog/mapbox-js-with-leaflet/ Mapbox.js (JavaScript, előgenerált raszteres csempék, Leaflet kompatibilitás)]&lt;br /&gt;
* [https://www.mapbox.com/blog/mapbox-gl/ Mapbox GL (vektoros, OpenGL alapú, kliensoldali renderelés)]&lt;br /&gt;
* [https://www.mapbox.com/blog/mapbox-gl-js/ Mapbox GL JS (JavaScript, WebGL, kliensoldali renderelés)]&lt;br /&gt;
&lt;br /&gt;
Mivel a Mapbox.js és a Mapbox GL JS is JavaScript alapú megoldás, ezért fontos lehet a kettő közti átjárhatóság. Ez azt jelenti, hogy ugyan nem automatikusan, de manuálisan a régebbi Mapbox.js projektek átalakíthatóak az újabb Mapbox GL JS alapú működésre. Ehhez a konverzióhoz az alábbi link nyújt hivatalos segítséget:&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/blog/mapbox-js-to-gl-js/ Converting a project from Mapbox.js to Mapbox GL JS]&lt;br /&gt;
&lt;br /&gt;
== Példák (Mapbox.js) ==&lt;br /&gt;
&lt;br /&gt;
=== Térkép (kezdő szint) ===&lt;br /&gt;
==== Minimális példa egy térkép megjelenítésére ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/simple_map.html A simple map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- A simple map --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initialize a map in an HTML element with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;A simple map&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
		.setView([47.47, 19.06], 15);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Világtérkép folytonosságának kikapcsolása ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/disable_world_wrapping.html Disable world wrapping]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable world wrapping --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Instead of loading tiles beyond -180 and 180, only show one copy of the world. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable world wrapping&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
		// These options apply to the tile layer in the map.&lt;br /&gt;
		tileLayer: {&lt;br /&gt;
			// This map option disables world wrapping. by default, it is false.&lt;br /&gt;
			continuousWorld: false,&lt;br /&gt;
			// This option disables loading tiles outside of the world bounds.&lt;br /&gt;
			noWrap: true&lt;br /&gt;
		}&lt;br /&gt;
	}).setView([40, 0], 2);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Változtatható alapréteg ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/toggling_baselayers.html Toggling baselayers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling baselayers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling between three different baselayers. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Toggling baselayers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
  var map = L.mapbox.map(&amp;#039;map&amp;#039;, null, {&lt;br /&gt;
      maxZoom: 18&lt;br /&gt;
  }).setView([22.76, -25.84], 3);&lt;br /&gt;
&lt;br /&gt;
  var layers = {&lt;br /&gt;
      Streets: L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;),&lt;br /&gt;
      Outdoors: L.mapbox.tileLayer(&amp;#039;mapbox.outdoors&amp;#039;),&lt;br /&gt;
      Satellite: L.mapbox.tileLayer(&amp;#039;mapbox.satellite&amp;#039;)&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  layers.Streets.addTo(map);&lt;br /&gt;
  L.control.layers(layers).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Térkép nagyításának és mozgatásának letiltása ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/disable_zooming_and_panning.html Disable zooming and panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable zooming and panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to disable zooming and panning with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable zooming and panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
  zoomControl: false&lt;br /&gt;
}).setView([41.0252, 28.9950], 11);&lt;br /&gt;
&lt;br /&gt;
// Disable drag and zoom handlers.&lt;br /&gt;
map.dragging.disable();&lt;br /&gt;
map.touchZoom.disable();&lt;br /&gt;
map.doubleClickZoom.disable();&lt;br /&gt;
map.scrollWheelZoom.disable();&lt;br /&gt;
map.keyboard.disable();&lt;br /&gt;
&lt;br /&gt;
// Disable tap handler, if present.&lt;br /&gt;
if (map.tap) map.tap.disable();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Megnézhető térképterület leszűkítése határokkal ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/using_maxbounds_to_restrict_map_panning.html Using maxBounds to restrict map panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using maxBounds to restrict map panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Preventing users from leaving an area on the map --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Using maxBounds to restrict map panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
// Construct a bounding box for this map that the user cannot&lt;br /&gt;
// move out of&lt;br /&gt;
var southWest = L.latLng(46.47, 17.06),&lt;br /&gt;
    northEast = L.latLng(48.47, 21.06),&lt;br /&gt;
    bounds = L.latLngBounds(southWest, northEast);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // set that bounding box as maxBounds to restrict moving the map&lt;br /&gt;
    // see full maxBounds documentation:&lt;br /&gt;
    // http://leafletjs.com/reference.html#map-maxbounds&lt;br /&gt;
    maxBounds: bounds,&lt;br /&gt;
    maxZoom: 19,&lt;br /&gt;
    minZoom: 10&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// zoom the map to that bounding box&lt;br /&gt;
map.fitBounds(bounds);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dupla kattintásra nagyítás az adott területre középre helyezve + aránymérték ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/double_click_to_zoom_+_scale_control.html Double click to zoom]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Double click to zoom --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listen for a double click event from a user and zoom in on the map. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Double click to zoom&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // Disable default double-click behavior.&lt;br /&gt;
    doubleClickZoom: false&lt;br /&gt;
})&lt;br /&gt;
.setView([46.695, 11.470], 4)&lt;br /&gt;
.on(&amp;#039;dblclick&amp;#039;, function(e) {&lt;br /&gt;
    // Zoom exactly to each double-clicked point&lt;br /&gt;
    map.setView(e.latlng, map.getZoom() + 1);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// L.control.scale() is included in Leaflet see&lt;br /&gt;
// https://www.mapbox.com/mapbox.js/api/v3.0.1/l-control-scale/&lt;br /&gt;
L.control.scale().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Töltésjelző megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/show_loading_screen.html Show loading screen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show loading screen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use events to show when features are loading and loaded by displaying and hiding a loading message --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show loading screen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * This is a very simple version of a &amp;#039;loading screen&amp;#039;: there are much&lt;br /&gt;
 * fancier ones you can use instead, like&lt;br /&gt;
 * http://codepen.io/collection/HtAne/&lt;br /&gt;
 */&lt;br /&gt;
#loader {&lt;br /&gt;
    position:absolute; top:0; bottom:0; width:100%;&lt;br /&gt;
    background:rgba(255, 255, 255, 1);&lt;br /&gt;
    transition:background 1s ease-out;&lt;br /&gt;
    -webkit-transition:background 1s ease-out;&lt;br /&gt;
}&lt;br /&gt;
#loader.done {&lt;br /&gt;
    background:rgba(255, 255, 255, 0);&lt;br /&gt;
}&lt;br /&gt;
#loader.hide {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
#loader .message {&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    left:50%;&lt;br /&gt;
    top:50%;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;loader&amp;#039;&amp;gt;&amp;lt;span class=&amp;#039;message&amp;#039;&amp;gt;loading&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var loader = document.getElementById(&amp;#039;loader&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 13);&lt;br /&gt;
&lt;br /&gt;
// Add a tile layer with a loading animation&lt;br /&gt;
&lt;br /&gt;
// start the loading screen&lt;br /&gt;
startLoading();&lt;br /&gt;
L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addTo(map) // add your tiles to the map&lt;br /&gt;
    .on(&amp;#039;load&amp;#039;, finishedLoading); // when the tiles load, remove the screen&lt;br /&gt;
&lt;br /&gt;
function startLoading() {&lt;br /&gt;
    loader.className = &amp;#039;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function finishedLoading() {&lt;br /&gt;
    // first, toggle the class &amp;#039;done&amp;#039;, which makes the loading screen&lt;br /&gt;
    // fade out&lt;br /&gt;
    loader.className = &amp;#039;done&amp;#039;;&lt;br /&gt;
    setTimeout(function() {&lt;br /&gt;
        // then, after a half-second, add the class &amp;#039;hide&amp;#039;, which hides&lt;br /&gt;
        // it completely and ensures that the user can interact with the&lt;br /&gt;
        // map again.&lt;br /&gt;
        loader.className = &amp;#039;hide&amp;#039;;&lt;br /&gt;
    }, 500);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jelölők a térképen ===&lt;br /&gt;
&lt;br /&gt;
==== Egyszerű jelölő ikonnal ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_without_geojson.html Marker without GeoJSON]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker without GeoJSON --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use L.mapbox.marker.icon to create a simple marker without GeoJSON. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Icon examples: https://www.mapbox.com/maki-icons/ --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker without GeoJSON&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 16);&lt;br /&gt;
&lt;br /&gt;
// L.marker is a low-level marker constructor in Leaflet.&lt;br /&gt;
L.marker([47.47, 19.06], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;roadblock&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;#fa0&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
L.marker([47.4725, 19.0625], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;college&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;64BA49&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő koordinátáinak megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/display_latitude_and_longitude_on_marker_movement.html Display latitude and longitude on marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display latitude and longitude on marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Drag the marker to a new location on a map to view it&amp;#039;s coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Display latitude and longitude on marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var coordinates = document.getElementById(&amp;#039;coordinates&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    }),&lt;br /&gt;
    draggable: true&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// every time the marker is dragged, update the coordinates container&lt;br /&gt;
marker.on(&amp;#039;dragend&amp;#039;, ondragend);&lt;br /&gt;
&lt;br /&gt;
// Set the initial marker coordinate on load.&lt;br /&gt;
ondragend();&lt;br /&gt;
&lt;br /&gt;
function ondragend() {&lt;br /&gt;
    var m = marker.getLatLng();&lt;br /&gt;
    coordinates.innerHTML = &amp;#039;Latitude: &amp;#039; + m.lat + &amp;#039;&amp;lt;br /&amp;gt;Longitude: &amp;#039; + m.lng;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőtől való távolság ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/distance_between_two_markers.html Distance between two markers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Distance between two markers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Calculate the distance between two points in meters using distanceTo. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Distance between two markers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-distance {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;distance&amp;#039; class=&amp;#039;ui-distance&amp;#039;&amp;gt;Click to place a marker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// Start with a fixed marker.&lt;br /&gt;
var fixedMarker = L.marker(new L.LatLng(47.4725, 19.0625), {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;ff8888&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).bindPopup(&amp;#039;ELTE Déli tömb&amp;#039;).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Store the fixedMarker coordinates in a variable.&lt;br /&gt;
var fc = fixedMarker.getLatLng();&lt;br /&gt;
&lt;br /&gt;
// Create a featureLayer that will hold a marker and linestring.&lt;br /&gt;
var featureLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// When a user clicks on the map we want to&lt;br /&gt;
// create a new L.featureGroup that will contain a&lt;br /&gt;
// marker placed where the user selected the map and&lt;br /&gt;
// a linestring that draws itself between the fixedMarkers&lt;br /&gt;
// coordinates and the newly placed marker.&lt;br /&gt;
map.on(&amp;#039;click&amp;#039;, function(ev) {&lt;br /&gt;
    // ev.latlng gives us the coordinates of&lt;br /&gt;
    // the spot clicked on the map.&lt;br /&gt;
    var c = ev.latlng;&lt;br /&gt;
&lt;br /&gt;
    var geojson = {&lt;br /&gt;
      type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
      features: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [c.lng, c.lat]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }, {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;LineString&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [&lt;br /&gt;
              [fc.lng, fc.lat],&lt;br /&gt;
              [c.lng, c.lat]&lt;br /&gt;
            ]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;stroke&amp;quot;: &amp;quot;#000&amp;quot;,&lt;br /&gt;
            &amp;quot;stroke-opacity&amp;quot;: 0.5,&lt;br /&gt;
            &amp;quot;stroke-width&amp;quot;: 4&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    featureLayer.setGeoJSON(geojson);&lt;br /&gt;
&lt;br /&gt;
    // Finally, print the distance between these two points&lt;br /&gt;
    // on the screen using distanceTo().&lt;br /&gt;
    var container = document.getElementById(&amp;#039;distance&amp;#039;);&lt;br /&gt;
    container.innerHTML = (fc.distanceTo(c)).toFixed(0) + &amp;#039;m&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Navigáció jelölőket tartalmazó menüvel ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_navigation_from_a_marker_menu.html Marker navigation from a marker menu]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Marker navigation from a marker menu --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Zoom to a marker and open its tooltip when a marker menu in a list is selected. --&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker navigation from a marker menu&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .info {&lt;br /&gt;
    background:#fff;&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:260px;&lt;br /&gt;
    top:10px;&lt;br /&gt;
    right:10px;&lt;br /&gt;
    border-radius:2px;&lt;br /&gt;
    }&lt;br /&gt;
    .info .item {&lt;br /&gt;
      display:block;&lt;br /&gt;
      border-bottom:1px solid #eee;&lt;br /&gt;
      padding:10px;&lt;br /&gt;
      text-decoration:none;&lt;br /&gt;
      }&lt;br /&gt;
      .info .item small { color:#888; }&lt;br /&gt;
      .info .item:hover,&lt;br /&gt;
      .info .item.active { background:#f8f8f8; }&lt;br /&gt;
      .info .item:last-child { border-bottom:none; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039; class=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;info&amp;#039; class=&amp;#039;info&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON({&lt;br /&gt;
  type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
  features: [&lt;br /&gt;
    {&lt;br /&gt;
      type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
      geometry: {&lt;br /&gt;
          type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
          coordinates: [19.0625, 47.4725]&lt;br /&gt;
      },&lt;br /&gt;
      properties: {&lt;br /&gt;
          title: &amp;#039;ELTE Déli tömb&amp;#039;,&lt;br /&gt;
          description: &amp;#039;ELTE IK&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-id&amp;#039;: &amp;#039;marker-1&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
          type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
          geometry: {&lt;br /&gt;
              type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
              coordinates: [19.0625, 47.4745]&lt;br /&gt;
          },&lt;br /&gt;
          properties: {&lt;br /&gt;
              title: &amp;#039;ELTE Északi tömb&amp;#039;,&lt;br /&gt;
              description: &amp;#039;ELTE TTK&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
          }&lt;br /&gt;
      },&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		  geometry: {&lt;br /&gt;
			  type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
			  coordinates: [19.063425, 47.505258]&lt;br /&gt;
		  },&lt;br /&gt;
		  properties: {&lt;br /&gt;
			  title: &amp;#039;Oktogon&amp;#039;,&lt;br /&gt;
			  description: &amp;#039;Oktogon metró állomás&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-symbol&amp;#039;: &amp;#039;rail-metro&amp;#039;&lt;br /&gt;
		  }&lt;br /&gt;
		}&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var info = document.getElementById(&amp;#039;info&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// Iterate through each feature layer item, build a&lt;br /&gt;
// marker menu item and enable a click event that pans to + opens&lt;br /&gt;
// a marker that&amp;#039;s associated to the marker item.&lt;br /&gt;
myLayer.eachLayer(function(marker) {&lt;br /&gt;
  var link = info.appendChild(document.createElement(&amp;#039;a&amp;#039;));&lt;br /&gt;
  link.className = &amp;#039;item&amp;#039;;&lt;br /&gt;
  link.href = &amp;#039;#&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  // Populate content from each markers object.&lt;br /&gt;
  link.innerHTML = marker.feature.properties.title +&lt;br /&gt;
    &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;#039; + marker.feature.properties.description + &amp;#039;&amp;lt;/small&amp;gt;&amp;#039;;&lt;br /&gt;
  link.onclick = function() {&lt;br /&gt;
    if (/active/.test(this.className)) {&lt;br /&gt;
      this.className = this.className.replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
    } else {&lt;br /&gt;
      var siblings = info.getElementsByTagName(&amp;#039;a&amp;#039;);&lt;br /&gt;
      for (var i = 0; i &amp;lt; siblings.length; i++) {&lt;br /&gt;
        siblings[i].className = siblings[i].className&lt;br /&gt;
          .replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
      };&lt;br /&gt;
      this.className += &amp;#039; active&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      // When a menu item is clicked, animate the map to center&lt;br /&gt;
      // its associated marker and open its popup.&lt;br /&gt;
      map.panTo(marker.getLatLng());&lt;br /&gt;
      marker.openPopup();&lt;br /&gt;
    }&lt;br /&gt;
    return false;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Csak a környező jelölők megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_radius_search.html Marker radius search]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker radius search --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the .distanceTo function to only show markers within a range --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker radius search&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.emerald&amp;#039;)&lt;br /&gt;
    .setView([40, -95], 4);&lt;br /&gt;
&lt;br /&gt;
var RADIUS = 500000;&lt;br /&gt;
var filterCircle = L.circle(L.latLng(40, -75), RADIUS, {&lt;br /&gt;
    opacity: 1,&lt;br /&gt;
    weight: 1,&lt;br /&gt;
    fillOpacity: 0.4&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
var csvLayer = omnivore.csv(&amp;#039;./data/airports.csv&amp;#039;, null, L.mapbox.featureLayer())&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;mousemove&amp;#039;, function(e) {&lt;br /&gt;
    filterCircle.setLatLng(e.latlng);&lt;br /&gt;
    csvLayer.setFilter(function showAirport(feature) {&lt;br /&gt;
        return e.latlng.distanceTo(L.latLng(&lt;br /&gt;
                feature.geometry.coordinates[1],&lt;br /&gt;
                feature.geometry.coordinates[0])) &amp;lt; RADIUS;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő mozgatása programozottan ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_movement.html Marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Simple marker animation. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var t = 0;&lt;br /&gt;
window.setInterval(function() {&lt;br /&gt;
    // Making a lissajous curve just for fun.&lt;br /&gt;
    // Create your own animated path here.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        Math.cos(t * 0.5) * 10,&lt;br /&gt;
        Math.sin(t) * 10));&lt;br /&gt;
    t += 0.01; // Movement&lt;br /&gt;
}, 1); // Speed&lt;br /&gt;
&lt;br /&gt;
marker.addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő animálása geoJson vonalon ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/animate_a_marker_along_line.html Animate a marker along line]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Animate a marker along line --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Create a marker and animate its position along the length of a line by looking up its coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Animate a marker along line&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
// Generate a GeoJSON line. You could also load GeoJSON via AJAX&lt;br /&gt;
// or generate it some other way.&lt;br /&gt;
var geojson = { type: &amp;#039;LineString&amp;#039;, coordinates: [] };&lt;br /&gt;
var start = [0, 0];&lt;br /&gt;
var momentum = [2, 2];&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; 1000; i++) {&lt;br /&gt;
    start[0] += momentum[0];&lt;br /&gt;
    start[1] += momentum[1];&lt;br /&gt;
    if (start[1] &amp;gt; 30 || start[1] &amp;lt; -30) momentum[1] *= -1;&lt;br /&gt;
    if (start[0] &amp;gt; 90 || start[0] &amp;lt; -90) momentum[0] *= -1;&lt;br /&gt;
    geojson.coordinates.push(start.slice());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Add this generated geojson object to the map.&lt;br /&gt;
L.geoJson(geojson).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Create a counter with a value of 0.&lt;br /&gt;
var j = 0;&lt;br /&gt;
&lt;br /&gt;
// Create a marker and add it to the map.&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
  icon: L.mapbox.marker.icon({&lt;br /&gt;
    &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
  })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
tick();&lt;br /&gt;
function tick() {&lt;br /&gt;
    // Set the marker to be at the same point as one&lt;br /&gt;
    // of the segments or the line.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        geojson.coordinates[j][1],&lt;br /&gt;
        geojson.coordinates[j][0]));&lt;br /&gt;
&lt;br /&gt;
    // Move to the next point of the line&lt;br /&gt;
    // until `j` reaches the length of the array.&lt;br /&gt;
    if (++j &amp;lt; geojson.coordinates.length) setTimeout(tick, 20);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tippek, üzenetek, szövegek ===&lt;br /&gt;
&lt;br /&gt;
==== Egyedi jelölő tipp ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/custom_marker_tooltips.html Custom marker tooltips]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Custom marker tooltips --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to create a custom marker tooltip with style text or images using Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Custom marker tooltips&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.leaflet-popup-content img {&lt;br /&gt;
  max-width:100%;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geoJson = [{&lt;br /&gt;
    type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
    &amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.06, 47.47]},&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;image&amp;quot;: &amp;quot;http://hazai.kozep.bme.hu/wp-content/uploads/2013/06/00-Info-E-nyit%C3%B3.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;url&amp;quot;: &amp;quot;http://www.infopark.hu/&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        &amp;quot;city&amp;quot;: &amp;quot;Budapest - Infopark&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		&amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.063, 47.473]},&lt;br /&gt;
		&amp;quot;properties&amp;quot;: {&lt;br /&gt;
			&amp;quot;image&amp;quot;: &amp;quot;http://photos.wikimapia.org/p/00/02/45/33/03_big.jpg&amp;quot;,&lt;br /&gt;
			&amp;quot;url&amp;quot;: &amp;quot;https://www.elte.hu/&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
			&amp;quot;city&amp;quot;: &amp;quot;Budapest - ELTE Lágymányos&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
}];&lt;br /&gt;
&lt;br /&gt;
// Add custom popups to each using our custom feature properties&lt;br /&gt;
myLayer.on(&amp;#039;layeradd&amp;#039;, function(e) {&lt;br /&gt;
    var marker = e.layer,&lt;br /&gt;
        feature = marker.feature;&lt;br /&gt;
&lt;br /&gt;
    // Create custom popup content&lt;br /&gt;
    var popupContent =  &amp;#039;&amp;lt;a target=&amp;quot;_blank&amp;quot; class=&amp;quot;popup&amp;quot; href=&amp;quot;&amp;#039; + feature.properties.url + &amp;#039;&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
                            &amp;#039;&amp;lt;img src=&amp;quot;&amp;#039; + feature.properties.image + &amp;#039;&amp;quot; /&amp;gt;&amp;#039; +&lt;br /&gt;
                            feature.properties.city +&lt;br /&gt;
                        &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    // http://leafletjs.com/reference.html#popup&lt;br /&gt;
    marker.bindPopup(popupContent,{&lt;br /&gt;
        closeButton: false,&lt;br /&gt;
        minWidth: 480&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Add features to the map&lt;br /&gt;
myLayer.setGeoJSON(geoJson);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőhöz tartozó tipp megjelenítése egérrel ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/show_tooltips_on_hover.html Show tooltips on hover]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show tooltips on hover --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to show marker popups on hover with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show tooltips on hover&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geojson = {&lt;br /&gt;
    type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
    features: [{&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Bal alsó&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;small&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.05, 47.46]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Jobb felső&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#7ec9b1&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.07, 47.48]&lt;br /&gt;
        }&lt;br /&gt;
    }]&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON(geojson);&lt;br /&gt;
myLayer.on(&amp;#039;mouseover&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.openPopup();&lt;br /&gt;
});&lt;br /&gt;
myLayer.on(&amp;#039;mouseout&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.closePopup();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Helyek ===&lt;br /&gt;
&lt;br /&gt;
==== Hely keresése automatikus kiegészítéssel ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/geocoding_with_autocomplete.html Geocoding with autocomplete]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geocoding with autocomplete --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API to show real-time search suggestions. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geocoding with autocomplete&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addControl(L.mapbox.geocoderControl(&amp;#039;mapbox.places&amp;#039;, {&lt;br /&gt;
        autocomplete: true&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hely lekérdezése név alapján (Geocoderrel) ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/use_geocoder_to_set_map_position.html Use geocoder to set map position]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use geocoder to set map position --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API initially set map position on Chester, New Jersey. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Use geocoder to set map position&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geocoder = L.mapbox.geocoder(&amp;#039;mapbox.places&amp;#039;),&lt;br /&gt;
    map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;examples.map-h67hf2ic&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
geocoder.query(&amp;#039;Tab, HU&amp;#039;, showMap);&lt;br /&gt;
&lt;br /&gt;
function showMap(err, data) {&lt;br /&gt;
    // The geocoder can return an area, like a city, or a&lt;br /&gt;
    // point, like an address. Here we handle both cases,&lt;br /&gt;
    // by fitting the map bounds to an area or zooming to a point.&lt;br /&gt;
    if (data.lbounds) {&lt;br /&gt;
        map.fitBounds(data.lbounds);&lt;br /&gt;
    } else if (data.latlng) {&lt;br /&gt;
        map.setView([data.latlng[0], data.latlng[1]], 13);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Aktuális pozíció megjelenítése (megközelítőleg) ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/geolocation.html Geolocation]&lt;br /&gt;
&lt;br /&gt;
FONTOS: A Geolocation, azaz helymeghatározás használatához valid HTTPS kapcsolat szükséges.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geolocation --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Finding the user&amp;#039;s position --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geolocation&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.ui-button {&lt;br /&gt;
  background:#3887BE;&lt;br /&gt;
  color:#FFF;&lt;br /&gt;
  display:block;&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  top:50%;left:50%;&lt;br /&gt;
  width:160px;&lt;br /&gt;
  margin:-20px 0 0 -80px;&lt;br /&gt;
  z-index:100;&lt;br /&gt;
  text-align:center;&lt;br /&gt;
  padding:10px;&lt;br /&gt;
  border:1px solid rgba(0,0,0,0.4);&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
  .ui-button:hover {&lt;br /&gt;
    background:#3074a4;&lt;br /&gt;
    color:#fff;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;#039;#&amp;#039; id=&amp;#039;geolocate&amp;#039; class=&amp;#039;ui-button&amp;#039;&amp;gt;Find me&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geolocate = document.getElementById(&amp;#039;geolocate&amp;#039;);&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// This uses the HTML5 geolocation API, which is available on&lt;br /&gt;
// most mobile browsers and modern browsers, but not in Internet Explorer&lt;br /&gt;
//&lt;br /&gt;
// See this chart of compatibility for details:&lt;br /&gt;
// http://caniuse.com/#feat=geolocation&lt;br /&gt;
if (!navigator.geolocation) {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Geolocation is not available&amp;#039;;&lt;br /&gt;
} else {&lt;br /&gt;
    geolocate.onclick = function (e) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        e.stopPropagation();&lt;br /&gt;
        map.locate();&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Once we&amp;#039;ve got a position, zoom and center the map&lt;br /&gt;
// on it, and add a single marker.&lt;br /&gt;
map.on(&amp;#039;locationfound&amp;#039;, function(e) {&lt;br /&gt;
    map.fitBounds(e.bounds);&lt;br /&gt;
&lt;br /&gt;
    myLayer.setGeoJSON({&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [e.latlng.lng, e.latlng.lat]&lt;br /&gt;
        },&lt;br /&gt;
        properties: {&lt;br /&gt;
            &amp;#039;title&amp;#039;: &amp;#039;Here I am!&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#ff8888&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // And hide the geolocation button&lt;br /&gt;
    geolocate.parentNode.removeChild(geolocate);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// If the user chooses not to allow their location&lt;br /&gt;
// to be shared, display an error message.&lt;br /&gt;
map.on(&amp;#039;locationerror&amp;#039;, function() {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Position could not be found&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Útvonaltervezés (Autós, biciklis, gyalogos közlekedéssel) ===&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/directions.html Directions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Directions --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the mapbox-directions.js plugin to show results from the Mapbox Directions API --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Directions&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
#inputs,&lt;br /&gt;
#errors,&lt;br /&gt;
#directions {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 33.3333%;&lt;br /&gt;
    max-width: 300px;&lt;br /&gt;
    min-width: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#inputs {&lt;br /&gt;
    z-index: 10;&lt;br /&gt;
    top: 10px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#directions {&lt;br /&gt;
    z-index: 99;&lt;br /&gt;
    background: rgba(0,0,0,.8);&lt;br /&gt;
    top: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#errors {&lt;br /&gt;
    z-index: 8;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    border-radius: 0 0 3px 3px;&lt;br /&gt;
    background: rgba(0,0,0,.25);&lt;br /&gt;
    top: 90px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;#039;stylesheet&amp;#039; href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.css&amp;#039; type=&amp;#039;text/css&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;inputs&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;errors&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;directions&amp;#039;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;routes&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;instructions&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    zoomControl: false&lt;br /&gt;
}).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// move the attribution control out of the way&lt;br /&gt;
map.attributionControl.setPosition(&amp;#039;bottomleft&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// create the initial directions object, from which the layer&lt;br /&gt;
// and inputs will pull data.&lt;br /&gt;
var directions = L.mapbox.directions();&lt;br /&gt;
&lt;br /&gt;
var directionsLayer = L.mapbox.directions.layer(directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInputControl = L.mapbox.directions.inputControl(&amp;#039;inputs&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsErrorsControl = L.mapbox.directions.errorsControl(&amp;#039;errors&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsRoutesControl = L.mapbox.directions.routesControl(&amp;#039;routes&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInstructionsControl = L.mapbox.directions.instructionsControl(&amp;#039;instructions&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugin támogatás és a Mapbox ===&lt;br /&gt;
&lt;br /&gt;
==== Leaflet-MiniMap ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_minimap.html Leaflet-MiniMap]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet-MiniMap --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display a smaller navigable map using the Leaflet-MiniMap plugin. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet-MiniMap&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .on(&amp;#039;ready&amp;#039;, function() {&lt;br /&gt;
        new L.Control.MiniMap(L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;))&lt;br /&gt;
            .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Fullscreen ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_fullscreen.html Leaflet Fullscreen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Fullscreen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a control to enable a map to be in full screen mode. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Fullscreen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
L.control.fullscreen().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Heat ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_heat.html Leaflet Heat]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Heat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initially draw heatmap data on a map and allow a users mouse movement to draw their own. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Heat&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-heat/v0.1.3/leaflet-heat.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;./data/realworld.388.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.dark&amp;#039;)&lt;br /&gt;
        .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
    var heat = L.heatLayer(addressPoints, {maxZoom: 18}).addTo(map);&lt;br /&gt;
    var draw = false;&lt;br /&gt;
&lt;br /&gt;
    // add points on mouse move (except when interacting with the map)&lt;br /&gt;
    map.on({&lt;br /&gt;
        click:   function () { draw = !draw; },&lt;br /&gt;
        mousemove: function (e) {&lt;br /&gt;
            if (draw) {&lt;br /&gt;
                heat.addLatLng(e.latlng);&lt;br /&gt;
            }&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Markercluster ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/leaflet_markercluster.html Leaflet Markercluster]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Markercluster --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Leaflet Markercluster plugin --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Markercluster&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
        .setView([-37.82, 175.215], 14);&lt;br /&gt;
&lt;br /&gt;
    var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
    for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
        var a = addressPoints[i];&lt;br /&gt;
        var title = a[2];&lt;br /&gt;
        var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
            icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
            title: title&lt;br /&gt;
        });&lt;br /&gt;
        marker.bindPopup(title);&lt;br /&gt;
        markers.addLayer(marker);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    map.addLayer(markers);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Listing markers in clusters ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/listing_markers_in_clusters.html Listing markers in clusters]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listing markers in clusters --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show a list of clustered markers by their coordinates on a map with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Listing markers in clusters&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  max-height:240px;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
  width:100px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([-37.82, 175.215], 14);;&lt;br /&gt;
&lt;br /&gt;
var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
    var a = addressPoints[i];&lt;br /&gt;
    var title = a[2];&lt;br /&gt;
    var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
        icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
        title: title&lt;br /&gt;
    });&lt;br /&gt;
    marker.bindPopup(title);&lt;br /&gt;
    markers.addLayer(marker);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.addLayer(markers);&lt;br /&gt;
&lt;br /&gt;
function onmove() {&lt;br /&gt;
    // Get the map bounds - the top-left and bottom-right locations.&lt;br /&gt;
    var inBounds = [],&lt;br /&gt;
        bounds = map.getBounds();&lt;br /&gt;
    markers.eachLayer(function(marker) {&lt;br /&gt;
        // For each marker, consider whether it is currently visible by comparing&lt;br /&gt;
        // with the current map bounds.&lt;br /&gt;
        if (bounds.contains(marker.getLatLng())) {&lt;br /&gt;
            inBounds.push(marker.options.title);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    // Display a list of markers.&lt;br /&gt;
    document.getElementById(&amp;#039;coordinates&amp;#039;).innerHTML = inBounds.join(&amp;#039;\n&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;move&amp;#039;, onmove);&lt;br /&gt;
&lt;br /&gt;
// call onmove off the bat so that the list is populated.&lt;br /&gt;
// otherwise, there will be no markers listed until the map is moved.&lt;br /&gt;
onmove();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Az újabb irányvonal: a Mapbox GL JS megvalósítása és működése a háttérben ==&lt;br /&gt;
&lt;br /&gt;
Három alapvető működési egység és feladatkör különíthető el a Mapbox működésében. Ezek a következők: &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;térkép&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;adat&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;elemzés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Térkép: Mapbox GL a rendereléshez ===&lt;br /&gt;
&lt;br /&gt;
A térkép megjelenítését a GPU végzi &amp;#039;&amp;#039;&amp;#039;Mapbox GL&amp;#039;&amp;#039;&amp;#039; segítségével. A legfontosabb jellemzői:&lt;br /&gt;
* A régi raszteres adatokkal (png csempék) szemben, itt vektoros adatok (vektoros csempék) vannak.&lt;br /&gt;
* A megjelenítéskor rugalmasan kezelhetőek a stílusok (style JSON segítségével).&lt;br /&gt;
* Kliens oldali renderelés (Open/Web GL alapon).&lt;br /&gt;
* Az adatok külön rétegek a térképen, nem képezik szerves és elválaszthatatlan részét.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_mapboxgl_03.png|frame|center|alt=Mapbox GL|Mapbox GL]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
  container: &amp;#039;map&amp;#039;,&lt;br /&gt;
  center: [47.47, 19.06],&lt;br /&gt;
  zoom: 15,&lt;br /&gt;
  style: style_object,&lt;br /&gt;
  hash: true&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/mapbox-gl-js/api Mapbox GL API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Adat: Vector Tile ===&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Vector Tile&amp;#039;&amp;#039;&amp;#039; egy nyílt szabvány webes térképek adatainak kódolásához.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_01.png|frame|center|alt=Vector Tile ábrázolása|Vector Tile ábrázolása]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_02.png|frame|center|alt=Vector Tile példa|Vector Tile példa]]&lt;br /&gt;
&lt;br /&gt;
=== Elemzés: Turf.js ===&lt;br /&gt;
&lt;br /&gt;
A térkép adatain elvégezhetünk különféle térinformatikai műveleteket és elemzéseket. Erre a célra szolgál a &amp;#039;&amp;#039;&amp;#039;Turj.js&amp;#039;&amp;#039;&amp;#039; nevű nyílt forráskódú JavaScript könyvtár, melyet a Mapbox is beépítetten használ.&lt;br /&gt;
Néhány ilyen térinformatikai művelet a Turf.js képességei közül:&lt;br /&gt;
* Méretarány, mérték, távolságmérés kezelése&lt;br /&gt;
* Transzformáció (például: buffer terület, unió, metszet és különbség képzés)&lt;br /&gt;
* Pontok, poligonok és multipoligonok kezelése&lt;br /&gt;
* Interpoláció&lt;br /&gt;
* Adat osztályozás&lt;br /&gt;
* Mértékegység konverzió&lt;br /&gt;
* Rácsok, hálózatok elemzése&lt;br /&gt;
* Aggregációs és statisztikai függvények&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_turf_03.png|frame|center|alt=Turf.js|Turf.js]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var poly1 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#0f0&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.574787, 35.594087],&lt;br /&gt;
      [-82.574787, 35.615581],&lt;br /&gt;
      [-82.545261, 35.615581],&lt;br /&gt;
      [-82.545261, 35.594087],&lt;br /&gt;
      [-82.574787, 35.594087]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
var poly2 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#00f&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.560024, 35.585153],&lt;br /&gt;
      [-82.560024, 35.602602],&lt;br /&gt;
      [-82.52964, 35.602602],&lt;br /&gt;
      [-82.52964, 35.585153],&lt;br /&gt;
      [-82.560024, 35.585153]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var union = turf.union(poly1, poly2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://turfjs.org/docs Turf.js API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Komponensek közötti kapcsolat ===&lt;br /&gt;
&lt;br /&gt;
A Mapbox, illetve annak webes Mapbox.js nevű megoldása, ezen különálló komponensek egyfajta &amp;quot;wrapper&amp;quot; megvalósítása az egyszerűbb és egységesebb kezelhetőség érdekében.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_rendereles_01.png|frame|center|alt=Megjelenítés, renderelés|Megjelenítés, renderelés]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_elemzes_01.png|frame|center|alt=Elemzés, szűrés|Elemzés, szűrés]]&lt;br /&gt;
&lt;br /&gt;
== Példák (Mapbox GL JS) ==&lt;br /&gt;
&lt;br /&gt;
=== Minimális példa egy térkép megjelenítésére ===&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/display_a_map.html Display a map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display a map --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initialize a map in an HTML element with Mapbox GL JS. --&amp;gt;&lt;br /&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;#039;utf-8&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body { margin:0; padding:0; }&lt;br /&gt;
        #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script&amp;gt;&lt;br /&gt;
		var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
	&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
mapboxgl.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
mapboxgl.accessToken = demoAccessToken;&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
    container: &amp;#039;map&amp;#039;, // container id&lt;br /&gt;
    style: &amp;#039;mapbox://styles/mapbox/streets-v9&amp;#039;, //stylesheet location&lt;br /&gt;
    center: [19.06, 47.47], // starting position&lt;br /&gt;
    zoom: 15 // starting zoom&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vector tile forrás hozzáadása a térképhez ===&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/add_a_vector_tile_source.html Add a vector tile source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a vector tile source --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a vector source to a map. --&amp;gt;&lt;br /&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;#039;utf-8&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body { margin:0; padding:0; }&lt;br /&gt;
        #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script&amp;gt;&lt;br /&gt;
		var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
	&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
mapboxgl.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
mapboxgl.accessToken = demoAccessToken;&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
    container: &amp;#039;map&amp;#039;,&lt;br /&gt;
    style: &amp;#039;mapbox://styles/mapbox/light-v9&amp;#039;,&lt;br /&gt;
    zoom: 15,&lt;br /&gt;
    center: [19.06, 47.47]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;load&amp;#039;, function () {&lt;br /&gt;
&lt;br /&gt;
    map.addLayer({&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;terrain-data&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
        &amp;quot;source&amp;quot;: {&lt;br /&gt;
            type: &amp;#039;vector&amp;#039;,&lt;br /&gt;
            url: &amp;#039;mapbox://mapbox.mapbox-terrain-v2&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;source-layer&amp;quot;: &amp;quot;contour&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: {&lt;br /&gt;
            &amp;quot;line-join&amp;quot;: &amp;quot;round&amp;quot;,&lt;br /&gt;
            &amp;quot;line-cap&amp;quot;: &amp;quot;round&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;paint&amp;quot;: {&lt;br /&gt;
            &amp;quot;line-color&amp;quot;: &amp;quot;#ff69b4&amp;quot;,&lt;br /&gt;
            &amp;quot;line-width&amp;quot;: 1&lt;br /&gt;
        }&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Külső forrásból származó vector tile hozzáadása a térképhez ===&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/add_a_third_party_vector_tile_source.html Add a third party vector tile source]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a third party vector tile source --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Render a map using an external vector source of OpenStreetMap data provided by Mapzen. --&amp;gt;&lt;br /&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;#039;utf-8&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;#039;https://api.tiles.mapbox.com/mapbox-gl-js/v0.37.0/mapbox-gl.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body { margin:0; padding:0; }&lt;br /&gt;
        #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
	&amp;lt;script&amp;gt;&lt;br /&gt;
		var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
	&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
mapboxgl.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
mapboxgl.accessToken = demoAccessToken;&lt;br /&gt;
var simple = {&lt;br /&gt;
    &amp;quot;version&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;sources&amp;quot;: {&lt;br /&gt;
        &amp;quot;osm&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;vector&amp;quot;,&lt;br /&gt;
            &amp;quot;tiles&amp;quot;: [&amp;quot;https://tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.mvt?api_key=vector-tiles-LM25tq4&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;layers&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;background&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;background&amp;quot;,&lt;br /&gt;
            &amp;quot;paint&amp;quot;: {&lt;br /&gt;
                &amp;quot;background-color&amp;quot;: &amp;quot;#41afa5&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }, {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;water&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;fill&amp;quot;,&lt;br /&gt;
            &amp;quot;source&amp;quot;: &amp;quot;osm&amp;quot;,&lt;br /&gt;
            &amp;quot;source-layer&amp;quot;: &amp;quot;water&amp;quot;,&lt;br /&gt;
            &amp;quot;filter&amp;quot;: [&amp;quot;==&amp;quot;, &amp;quot;$type&amp;quot;, &amp;quot;Polygon&amp;quot;],&lt;br /&gt;
            &amp;quot;paint&amp;quot;: {&lt;br /&gt;
                &amp;quot;fill-color&amp;quot;: &amp;quot;#3887be&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
    container: &amp;#039;map&amp;#039;,&lt;br /&gt;
    style: simple,&lt;br /&gt;
    zoom: 1,&lt;br /&gt;
    center: [-14, 35]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
map.addControl(new mapboxgl.NavigationControl());&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználás, alkalmazás ==&lt;br /&gt;
&lt;br /&gt;
=== A Foursquare is Mapbox-ra váltott ===&lt;br /&gt;
A Foursquare 2012-ben lecserélte a Google térképszolgáltatására épülő webes felületét egy Mapbox alapú verzióra. Ezzel az újítással a felhasználók már egy színesebb, több információt tartalmazó térképpel találkozhatnak a Foursquare weboldalán. Mindezzel együtt a térképes adatok, képek szolgáltatását sem a Google Maps biztosítja, hanem a szintén népszerű OpenStreetMap. Az OpenStreetMap térképei a világ legtöbb pontján, így Magyarországon is nagyon pontosak és részletesek, és mivel nyílt rendszerről van szó, semmi sem akadályozza a folyamatos fejlődést.&lt;br /&gt;
&lt;br /&gt;
=== Mapbox és WordPress: látványos térképek WordPress oldalon kódolás nélkül ===&lt;br /&gt;
&lt;br /&gt;
==== Hivatalos bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[https://wordpress.org/plugins/mapbox Hivatalos bővítmény]&lt;br /&gt;
&lt;br /&gt;
Elavult verziójú, feltehetően nem fejlesztik tovább. &lt;br /&gt;
&lt;br /&gt;
==== Harmadik féltől származó bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Mapbox-for-wp-advanced-03.png|frame|left|Mapbox for Wordpress Advanced]]&lt;br /&gt;
&lt;br /&gt;
[https://hu.wordpress.org/plugins/mapbox-for-wp-advanced Harmadik féltől származó bővítmény]&lt;br /&gt;
&lt;br /&gt;
A Mapbox for Wordpress Advanced nevű WordPress bővítménnyel egyszerűen lehet térképeket hozzáadni egy WordPress oldalhoz. Ehhez nem kell mást tenni, mint letölteni a bővítményt az alábbi linken:&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com/download Mapbox for Wordpress Advanded letöltése]&lt;br /&gt;
&lt;br /&gt;
Majd a bővítményt feltölteni az adott WordPress oldalra és aktiválni. Ezután egy meglévő Mapbox felhasználói fiókon keresztül Mapbox Studio Classic használatával elkészíthető a kívánt térkép. Végül az elkészített térképhez tartozó Access Token-t és térkép ID-t meg kell adni a Mapbox for Wordpress Advanced bővítménynek.&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com Mapbox működés közben egy WordPress oldalon]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== További érdekességek ===&lt;br /&gt;
&lt;br /&gt;
==== Térkép a Twitter első 6 milliárd geotaggel ellátott fotója alapján ====&lt;br /&gt;
&lt;br /&gt;
Egy speciális világatlaszt készített a nagyvárosokról Eric Fischer, a Mapbox fejlesztője, aki a Twitter indulása óta megosztott összes geotaggel, vagyis földrajzi koordinátákkal ellátott több mint 6 milliárd bejegyzést használta fel hozzá. Első körben azt vizsgálta, hogy melyek azon régiók, kerületek, ahol a legsűrűbben fotóznak. &lt;br /&gt;
&lt;br /&gt;
[https://api.tiles.mapbox.com/v4/enf.c3a2de35/page.html?access_token=pk.eyJ1IjoiZW5mIiwiYSI6IkNJek92bnMifQ.xn2_Uj9RkYTGRuCGg4DXZQ#14/47.4967/19.0618 Twitteres geotaggel ellátott fotók térképe]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Locals-and-tourists-budapest-01-small.png|frame|left|Locals and Tourists - Budapest]]&lt;br /&gt;
&lt;br /&gt;
A projektet továbbgondolva Fischer megkülönböztette a képeket készítő helybelieket a turistáktól. Így létrejött a Locals and Tourists nevű projektje, melynek keretében már azt is elkülönítette, hogy a képeket helybeliek vagy turisták készíthették.&lt;br /&gt;
&lt;br /&gt;
Kék a helyi lakos, piros a turista&lt;br /&gt;
Fischer azokat a személyeket számolta helyi lakosnak, aki egy hónapnál hosszabb ideje készít földrajzi címkékkel rendelkező fotókat egy adott térségben: őket jelölte kék színnel. A pirossal kiemelt turista kategóriába azok tartoznak, akik egy hónapnál kevesebb ideig készítettek és osztottak meg egy helyszínről képeket. A sárga pontok alatt azokat kell érteni, akiknél mindez nem volt egyértelműen meghatározható.&lt;br /&gt;
&lt;br /&gt;
Budapest térképrészletére tekintve a legnépszerűbb turistacélpontok között a Hősök tere, a Városliget, a Lánchíd, és a Gellért-hegy is jól látható.&lt;br /&gt;
&lt;br /&gt;
Átdolgozott, teljesértékű interaktív világtérképre bővített verzió:&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/labs/twitter-gnip/locals/#13/47.4891/19.0476 Twitter Locals and Tourists project]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* [https://www.mapbox.com Mapbox]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Mapbox Mapbox Wiki]&lt;br /&gt;
* [https://hu.wordpress.org/ WordPress]&lt;br /&gt;
* [http://wiki.openstreetmap.org/wiki/Mapbox Openstreetmap Wiki]&lt;br /&gt;
* [https://www.google.hu/search?q=mapbox Google Mapbox]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=NASA_World_Wind_SDK&amp;diff=572</id>
		<title>NASA World Wind SDK</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=NASA_World_Wind_SDK&amp;diff=572"/>
		<updated>2017-05-28T15:27:17Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bevezetés==&lt;br /&gt;
&lt;br /&gt;
NASA World Wind SDK egy ingyenes, nyílt-forráskódú virtuális földgömb weboldalakhoz és web applikációkhoz.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alapvetően három API-t biztosít:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* Webes&lt;br /&gt;
Ezen wiki oldal témája a webes felhasználás.&lt;br /&gt;
&lt;br /&gt;
Web World Wind-et JavaScriptben írták és egy JavaScript API-t biztosít ahhoz, hogy egy virtuális földgömb összes aspektusát kezelhessük. A Web World Wind lehetővé teszi, hogy a fejlesztők gyorsan és könnyen interaktív vizualizációt készíthessenek különböző földrajzi adatoknak egy 2 dimenziós térképen vagy 3 dimenziós földgömbön.&lt;br /&gt;
&lt;br /&gt;
A világon sok szervezet használja a Web World Wind-et arra, hogy monitorozzanak időjárás mintákat, városokat vizualizáljanak, járművek mozgását kövessék, földrajzi adatokat elemezzenek vagy oktassák az embereket a Földről.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Néhány lehetőség:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sok előre beépített, magas felbontású képpel rendelkezik&lt;br /&gt;
* Sok beépített alakzat megvalósítható&lt;br /&gt;
* Beépített navigációs lehetőségek&lt;br /&gt;
* Több földgömb is megjeleníthető egy oldalon&lt;br /&gt;
* ShapeFile támogatás&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Függőségek&amp;#039;&amp;#039;&amp;#039; (opcionális)&lt;br /&gt;
* Bootstrap&lt;br /&gt;
* JQuery&lt;br /&gt;
* RequireJS&lt;br /&gt;
&lt;br /&gt;
Demo: http://gis.inf.elte.hu/giswiki/uploads/HB0MT7/demo.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Keretrendszer&amp;quot; letöltése zipben: [[Fájl:hb0mt7_web_world_wind.zip]]&lt;br /&gt;
&lt;br /&gt;
==Koncepció==&lt;br /&gt;
&lt;br /&gt;
A Web World Wind egy komponens amely beágyazódik a weboldalba. Ezt a komponenst hívjuk World Windownak. &lt;br /&gt;
&lt;br /&gt;
=== World Window ===&lt;br /&gt;
&lt;br /&gt;
A World Window objektum a funkcionalitást egy HTML canvas köré építi. A canvas általában egy &amp;quot;div&amp;quot; és az attribútumként megadott id-val paraméterezzük a World Window objektumot. Egy oldal több World Widow objektumot tartalmazhat, mindegyik canvashoz tartozik egy.&lt;br /&gt;
&lt;br /&gt;
A World Window tartalmaz egy Globe-ot, egy Navigator-t és egy Layer List-et. Ezek automtiusan jönnek létre amikor a World Window konstruálódik. A Globe és Navigator lecserélhető. Ezeken felül a World Window felel még az eseménykezelésért.&lt;br /&gt;
&lt;br /&gt;
A World Window felépítése:&lt;br /&gt;
&lt;br /&gt;
[[Fájl:nasa_world_wind_sdk_architecture1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:relative&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;canvas id=&amp;quot;canvasOne&amp;quot; width=&amp;quot;1000&amp;quot; height=&amp;quot;1000&amp;quot; style=&amp;quot;width: 100%; height: auto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A World Wind mellett a rétegek a legfontosabb objektumok. Ezen rétegek tárolják a World Winden megjelenő összes információt. A képek, alakzatok, dekorációs elemek stb. mind-mind különálló rétegekben tárolódnak.&lt;br /&gt;
&lt;br /&gt;
Minden World Wind objektum tartalmaz egy listát amely a rétegeket tartalmazza. Ezt nevezik Layer List-nek. Ez a lista tartalmazza az összes definiált réteget, és alapesetben üres. Amikor a World Wind rajzol, akkor bejárja ezt a listát és sorrendben megrajzolja a benne lévő rétegeket.&lt;br /&gt;
&lt;br /&gt;
Fontosabb réteg attribútumok:&lt;br /&gt;
&lt;br /&gt;
*displayName : Szöveg, a réteg nevét adhatjuk meg, és később ez megjeleníthető.&lt;br /&gt;
*enabled : Logikai, lehetővé teszi, hogy a réteget kikapcsoljuk, de közben a listában benne marad.&lt;br /&gt;
*pickEnabled : Logikai, megmondja, hogy a réteg és a tartalma &amp;quot;pickelhető-e&amp;quot;.&lt;br /&gt;
*opacity : 0-1 közötti szám a réteg átlátszóságát szabályozza. &lt;br /&gt;
&lt;br /&gt;
Két fontosabb rétegtípus van.&lt;br /&gt;
&lt;br /&gt;
* Kép réteg (Image Layer) : olyan képet tartalmaz amelyet a felszínre vetítünk ki. Ez tipikusan az egész földgömbre kiterjed de ez nem kötelező.&lt;br /&gt;
* Renderelhető réteg (Renderable Layer): akkor használjuk ha alakzatokat szeretnénk megjeleníteni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a  World Window-t&lt;br /&gt;
var wwd = new WorldWind.WorldWindow(&amp;quot;canvasOne&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk és hozzáadjuk a layereket&lt;br /&gt;
wwd.addLayer(new WorldWind.BMNGLayer());&lt;br /&gt;
wwd.addLayer(new WorldWind.BingAerialWithLabelsLayer(null));&lt;br /&gt;
wwd.addLayer(new WorldWind.CompassLayer());&lt;br /&gt;
wwd.addLayer(new WorldWind.CoordinatesDisplayLayer(wwd));&lt;br /&gt;
wwd.addLayer(new WorldWind.ViewControlsLayer(wwd));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alakzatok ===&lt;br /&gt;
&lt;br /&gt;
Alakzatok reprezentálják azokat az információkat amit meg szeretnénk jeleníteni és a földgömbhöz kapcsolódik. Egy ilyen objektum sokféle lehet, az egyszerű helyzet-jelölőtől kezdve a komplex rajzolt alakzatokig. Minden alakzat egy rétegben tárolódik és ez a réteg pedig megtalálható a World Wind Layer List-jében.&lt;br /&gt;
Minden World Wind alakzathoz sokféle attribútum kapcsolható, ezzel vezérelve pl: a színt vagy láthatóságot.&lt;br /&gt;
A legtöbb alakzathoz ez egy ShapeAttributes osztály, de például a helyjelzőnél a szöveget lehet formázni.&lt;br /&gt;
&lt;br /&gt;
Ha egy ilyen attribútum osztály konstruktorának null értéket adunk paraméterül, akkor automatikusan úgy veszi, hogy mindenből a default értéket szeretnénk használni. Ide megadható egy már korábban vagy frissen létrehozott objektum.  Fontos, hogy ha egy alakzathoz hozzárendelünk egy attribútumot az nem másolódik le, így minden változás adott esetben több alakzatot is érinthet. Ezt elkerülendő érdemes minden alakzathoz saját attribútumokat definiálni. (Viszont ez kihasználható, hogy ha több alakzatnak szeretnénk ugyanazokat az attribútumokat beállítani, akkor maradhat egy és azt állítjuk be az alakzatokhoz.)&lt;br /&gt;
&lt;br /&gt;
Az alakzatok kétféle attribútumhalmazt tárolnak. Egyet saját magának, egyet pedig az alakzat kiemelésének. Minden alakzatnak egy egy logikai értéke amely megmondja, hogy az kiemelhető-e (highlighted). Ha ez igaz, akkor érvényesek a kiemelés attribútumai.&lt;br /&gt;
Kezdetben a kiemelés attribútumai null-ok és amennyiben nem adunk meg ilyet, de kiválasztjuk, hogy az alakzat kiemelhető, akkor az alakzat saját attribútumait veszi figyelembe.&lt;br /&gt;
&lt;br /&gt;
==== Út típus ====&lt;br /&gt;
&lt;br /&gt;
Némely alakzatnak van olyan attribútuma amely meghatározza, hogy milyen módon kerül megrajzolásra.&lt;br /&gt;
&lt;br /&gt;
*WorldWind.GREAT_CIRCLE : Az alakzat útjai/élei egy nagy körutat követnek a definiáló pozíciók között. A földgömb görbületét figyelembe veszi.&lt;br /&gt;
*WorldWind.RHUMB_LINE : Az alakzat útjai/élei egy loxodroma-t (egy gömb felületére írt csavarvonal) követnek a definiáló pontok között. A földgömb görbületét figyelembe veszi.&lt;br /&gt;
*WorldWind.LINEAR : Az alakzat útjai vagy élei egy szimla egyenes vonalat követnek a definiáló pozíciók között. A földgömb görbületét nem figyelembe veszi.&lt;br /&gt;
&lt;br /&gt;
Minden alakzatra az alapértelmezett érték WorldWind.GREAT_CIRCLE.&lt;br /&gt;
&lt;br /&gt;
==== Magasság típus ====&lt;br /&gt;
&lt;br /&gt;
Minden alakzat amely a geológiai pozíciójával van megadva, létezik egy attribútum amely megmondja az alakzatát magasságának kapcsolatát a tereppel.&lt;br /&gt;
&lt;br /&gt;
*WorldWind.ABSOLUTE : A magasságot relatív távolságként kezeli az elipszoid felszínéhez képest.&lt;br /&gt;
*WorldWind.RELATIVE_TO_GROUND : A magasságot a terepen lévő pozíció koordinátáitól vett távolságként kezeli.&lt;br /&gt;
*WorldWind.CLAMP_TO_GROUND : A magasságot nem veszi figyelembe és úgy veszi mint ha terepen lenne.&lt;br /&gt;
&lt;br /&gt;
Minden alakzat esetén az alapérték a WorldWind.ABSOLUTE.&lt;br /&gt;
&lt;br /&gt;
===Glóbusz ===&lt;br /&gt;
&lt;br /&gt;
Globe reprezentál egy WGS84 elipszoidot és a területet. továbbá kezeli a különböző 2D-s projekciókat, ami használhatóak a +D-s glóbusz helyett. Alapesetben ezen kívül az alkalmazás nem nagyon lép interakcióba a glóbusszal. Ez alól kivétel például ha az alkalmazásunk a terület emelkedésével szeretne számolni.&lt;br /&gt;
&lt;br /&gt;
Minden World Window-nak eg Globe-ja van és automatikusan létrejön, amikor a World Window is. Az alkalmazásban a Globe lecserélhető egy másikra.&lt;br /&gt;
&lt;br /&gt;
=== Navigátor===&lt;br /&gt;
&lt;br /&gt;
A Navigator objektum felelős azért, hogy a felhasználói interakciókat átalakítsa a földgömbön megjelenő változásokká. Folyamatosan figyeli az egér eseményeket és ezeket alakítja át mozgássá, forgatássá vagy zoomolássá. A Navigator segítségével lehet egy adott pozícióra navigálni.&lt;br /&gt;
&lt;br /&gt;
Minden World Wind objektumnak megvan a saját Navigator objektuma, Ez a Navigator automatikusan jön létre, akkor amikor a World Wind objektumok létrejön. Ez a Navigator lecserélhető, ha a fejlesztő készített egy másképp működőt amely jobban megfelel az igényeknek.&lt;br /&gt;
&lt;br /&gt;
==Főbb funkcionalitások==&lt;br /&gt;
&lt;br /&gt;
=== Alakzatok ===&lt;br /&gt;
&lt;br /&gt;
====Szövegek ====&lt;br /&gt;
&lt;br /&gt;
Egy adott földrajzi ponthoz tartozó szöveget reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Példa adat&lt;br /&gt;
var peaks =&lt;br /&gt;
		[&lt;br /&gt;
			{&lt;br /&gt;
				&amp;#039;name&amp;#039;: &amp;quot;Mount McKinley\n(Denali)&amp;quot;, // Mount McKinley&lt;br /&gt;
				&amp;#039;state&amp;#039;: &amp;quot;Alaska&amp;quot;,&lt;br /&gt;
				&amp;#039;elevation&amp;#039;: 6194,&lt;br /&gt;
				&amp;#039;latitude&amp;#039;: 63.0690,&lt;br /&gt;
				&amp;#039;longitude&amp;#039;: -151.0063&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;#039;name&amp;#039;: &amp;quot;Mauna\nKea&amp;quot;,&lt;br /&gt;
				&amp;#039;state&amp;#039;: &amp;quot;Hawaii&amp;quot;,&lt;br /&gt;
				&amp;#039;elevation&amp;#039;: 4205,&lt;br /&gt;
				&amp;#039;latitude&amp;#039;: 19.8207,&lt;br /&gt;
				&amp;#039;longitude&amp;#039;: -155.4680&lt;br /&gt;
			}];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var text,&lt;br /&gt;
    textAttributes = new WorldWind.TextAttributes(null),&lt;br /&gt;
    textLayer = new WorldWind.RenderableLayer(&amp;quot;Fölrajzi szöveg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Alap attribútumok beállítása (pl: szín)&lt;br /&gt;
textAttributes.color = WorldWind.Color.RED;&lt;br /&gt;
textAttributes.depthTest = false;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a szöveg &amp;quot;alakzatokat&amp;quot;&lt;br /&gt;
for (var i = 0, len = peaks.length; i &amp;lt; len; i++) {&lt;br /&gt;
    var peak = peaks[i],&lt;br /&gt;
    peakPosition = new WorldWind.Position(peak.latitude, peak.longitude, peak.elevation);&lt;br /&gt;
    text = new WorldWind.GeographicText(peakPosition, peak.name + &amp;quot;\n&amp;quot; + peak.state);&lt;br /&gt;
&lt;br /&gt;
    //Beállítjuk az alakzatohoz a szöveget&lt;br /&gt;
    text.attributes = textAttributes;&lt;br /&gt;
&lt;br /&gt;
    //Hozzáadjuk a szöveget a layerhez&lt;br /&gt;
    textLayer.addRenderable(text);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//A szöveg layert hozzáadjuk a globál layerhez&lt;br /&gt;
wwd.addLayer(textLayer);&lt;br /&gt;
&lt;br /&gt;
//Létrehozunk egy managert, hogy tudjuk vezérelni a szöveg réteget.&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Utak====&lt;br /&gt;
&lt;br /&gt;
Egyenes vagy görbe vonalat reprezentál előre megadott pozíciók között. A megrajzolt vonal az alábbi típusú lehet:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.GREAT_CIRCLE&lt;br /&gt;
* WorldWind.RHUMB_LINE&lt;br /&gt;
* WorldWind.LINEAR&lt;br /&gt;
&lt;br /&gt;
Az utat alkotó pontok közötti magasságot meghatározza az út magasság módja amely az alábbiak lehetnek:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.ABSOLUTE&lt;br /&gt;
* WorldWind.RELATIVE_TO_GROUND&lt;br /&gt;
* WorldWind.CLAMP_TO_GROUND&lt;br /&gt;
&lt;br /&gt;
Külön attribútumok tartoznak a normál és a kiemelt megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Úthoz tartozó poziciók létrehozása&lt;br /&gt;
var pathPositions = [];&lt;br /&gt;
pathPositions.push(new WorldWind.Position(40, -100, 1e4));&lt;br /&gt;
pathPositions.push(new WorldWind.Position(45, -110, 1e4));&lt;br /&gt;
pathPositions.push(new WorldWind.Position(46, -122, 1e4));&lt;br /&gt;
&lt;br /&gt;
// Az út létrehozása&lt;br /&gt;
var path = new WorldWind.Path(pathPositions, null);&lt;br /&gt;
path.altitudeMode = WorldWind.RELATIVE_TO_GROUND;&lt;br /&gt;
path.followTerrain = true;&lt;br /&gt;
path.extrude = true;&lt;br /&gt;
path.useSurfaceShapeFor2D = true;&lt;br /&gt;
&lt;br /&gt;
// Az úthoz tartozó attribútumok étrehozása&lt;br /&gt;
var pathAttributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
pathAttributes.outlineColor = WorldWind.Color.BLUE;&lt;br /&gt;
pathAttributes.interiorColor = new WorldWind.Color(0, 1, 1, 0.5);&lt;br /&gt;
pathAttributes.drawVerticals = path.extrude;&lt;br /&gt;
path.attributes = pathAttributes;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Kiemelés létrehozása&lt;br /&gt;
var highlightAttributes = new WorldWind.ShapeAttributes(pathAttributes);&lt;br /&gt;
highlightAttributes.outlineColor = WorldWind.Color.CYAN;&lt;br /&gt;
highlightAttributes.interiorColor = new WorldWind.Color(1, 1, 1, 0.5);&lt;br /&gt;
path.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
//Az utat hozzáadjuk egy layerhez, és betesszük a globális layerbe&lt;br /&gt;
var pathsLayer = new WorldWind.RenderableLayer();&lt;br /&gt;
pathsLayer.displayName = &amp;quot;Paths&amp;quot;;&lt;br /&gt;
pathsLayer.addRenderable(path);&lt;br /&gt;
wwd.addLayer(pathsLayer);&lt;br /&gt;
&lt;br /&gt;
//Layermanager létrehozása&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
//Eseménykezelés a kiemeléshez&lt;br /&gt;
var highlightController = new WorldWind.HighlightController(wwd);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Poligonok====&lt;br /&gt;
&lt;br /&gt;
Egy 3D-s poligont reprezentál. A poligonnak több határt is beállíthatunk, ezzel üres területeteket képezve. A poligon magassága az alábbiak lehetnek:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.WorldWind.ABSOLUTE&lt;br /&gt;
* WorldWind.RELATIVE_TO_GROUND&lt;br /&gt;
* WorldWind.CLAMP_TO_GROUND&lt;br /&gt;
&lt;br /&gt;
Külön attribútumok tartoznak a normál és a kiemelt megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligonokat tároló réteget&lt;br /&gt;
var polygonsLayer = new WorldWind.RenderableLayer();&lt;br /&gt;
polygonsLayer.displayName = &amp;quot;Polygons&amp;quot;;&lt;br /&gt;
wwd.addLayer(polygonsLayer);&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligon határait&lt;br /&gt;
var boundaries = [];&lt;br /&gt;
boundaries[0] = []; // külső határ&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(40, -100, 1e5));&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(45, -110, 1e5));&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(40, -120, 1e5));&lt;br /&gt;
&lt;br /&gt;
boundaries[1] = []; // belső határ&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(41, -103, 1e5));&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(44, -110, 1e5));&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(41, -117, 1e5));&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuka a poligont és hozzáadjuk az attribútumait.&lt;br /&gt;
&lt;br /&gt;
var polygon = new WorldWind.Polygon(boundaries, null);&lt;br /&gt;
polygon.altitudeMode = WorldWind.ABSOLUTE;&lt;br /&gt;
polygon.extrude = true; &lt;br /&gt;
&lt;br /&gt;
var polygonAttributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
polygonAttributes.drawInterior = true;&lt;br /&gt;
polygonAttributes.drawOutline = true;&lt;br /&gt;
polygonAttributes.outlineColor = WorldWind.Color.BLUE;&lt;br /&gt;
polygonAttributes.interiorColor = new WorldWind.Color(0, 1, 1, 0.5);&lt;br /&gt;
polygonAttributes.drawVerticals = polygon.extrude;&lt;br /&gt;
polygonAttributes.applyLighting = true;&lt;br /&gt;
polygon.attributes = polygonAttributes;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligonhoz tartozó kiemelést&lt;br /&gt;
var highlightAttributes = new WorldWind.ShapeAttributes(polygonAttributes);&lt;br /&gt;
highlightAttributes.outlineColor = WorldWind.Color.RED;&lt;br /&gt;
highlightAttributes.interiorColor = new WorldWind.Color(1, 1, 1, 0.5);&lt;br /&gt;
polygon.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
//Hozzáadjuk a layerhez&lt;br /&gt;
polygonsLayer.addRenderable(polygon);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Helyjelző====&lt;br /&gt;
&lt;br /&gt;
Bármilyen pozíción megjelenő képet/címkét reprezentál. Lehet használni a beépített képeket vagy használhatunk sajátot, illetve a html-el is lehet rajzolni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Definiáljuk a képeket amiket helyjelzőnek használunk.&lt;br /&gt;
var images = [&lt;br /&gt;
	&amp;quot;plain-black.png&amp;quot;,&lt;br /&gt;
	&amp;quot;plain-blue.png&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
var pinLibrary = WorldWind.configuration.baseUrl + &amp;quot;images/pushpins/&amp;quot;, // a képek helye&lt;br /&gt;
	placemark,&lt;br /&gt;
	placemarkAttributes = new WorldWind.PlacemarkAttributes(null),&lt;br /&gt;
	highlightAttributes,&lt;br /&gt;
	placemarkLayer = new WorldWind.RenderableLayer(&amp;quot;Placemarks&amp;quot;),&lt;br /&gt;
	latitude = 47.684444,&lt;br /&gt;
	longitude = -121.129722;&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a közös attribútumokat.&lt;br /&gt;
placemarkAttributes.imageScale = 1;&lt;br /&gt;
placemarkAttributes.imageOffset = new WorldWind.Offset(&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.3,&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.0);&lt;br /&gt;
placemarkAttributes.imageColor = WorldWind.Color.WHITE;&lt;br /&gt;
placemarkAttributes.labelAttributes.offset = new WorldWind.Offset(&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.5,&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 1.0);&lt;br /&gt;
placemarkAttributes.labelAttributes.color = WorldWind.Color.YELLOW;&lt;br /&gt;
placemarkAttributes.drawLeaderLine = true;&lt;br /&gt;
placemarkAttributes.leaderLineAttributes.outlineColor = WorldWind.Color.RED;&lt;br /&gt;
&lt;br /&gt;
// Minden képhez létrehozunk egy Placemarkot és címkét&lt;br /&gt;
for (var i = 0, len = images.length; i &amp;lt; len; i++) {&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	placemark = new WorldWind.Placemark(new WorldWind.Position(latitude, longitude + i, 1e2), true, null);&lt;br /&gt;
	placemark.label = &amp;quot;Placemark &amp;quot; + i.toString() + &amp;quot;\n&amp;quot;&lt;br /&gt;
	+ &amp;quot;Lat &amp;quot; + placemark.position.latitude.toPrecision(4).toString() + &amp;quot;\n&amp;quot;&lt;br /&gt;
	+ &amp;quot;Lon &amp;quot; + placemark.position.longitude.toPrecision(5).toString();&lt;br /&gt;
	placemark.altitudeMode = WorldWind.RELATIVE_TO_GROUND;&lt;br /&gt;
&lt;br /&gt;
	.&lt;br /&gt;
	placemarkAttributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
	placemarkAttributes.imageSource = pinLibrary + images[i];&lt;br /&gt;
	placemark.attributes = placemarkAttributes;&lt;br /&gt;
&lt;br /&gt;
	//Létrehozzuk a kiemeléshez tartozó attribútumokat&lt;br /&gt;
	highlightAttributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
	highlightAttributes.imageScale = 1.2;&lt;br /&gt;
	placemark.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
	//Hozzáadjuk a réteghez.&lt;br /&gt;
	placemarkLayer.addRenderable(placemark);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Hozzáadjuk a réteget a globális réteghez.&lt;br /&gt;
wwd.addLayer(placemarkLayer);&lt;br /&gt;
&lt;br /&gt;
// Létrehozunk egy Layermanagert a kezelhetőségért&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====További alakzatok====&lt;br /&gt;
&lt;br /&gt;
*Felszíni alakzatok: Hasonlóak a fent taglalt Poligonokhoz. (Surface Shapes)&lt;br /&gt;
*Képernyő kép: Segítségével képernyő-re képet rajzolhatunk. (Screen Image)&lt;br /&gt;
*Képernyő szöveg : Segítségével szöveget helyezhetünk el a képernyőn. (Screen Text)&lt;br /&gt;
&lt;br /&gt;
=== Eseménykezelés ===&lt;br /&gt;
&lt;br /&gt;
A legtöbb alkalmazás általában figyeli és reagál a különböző JavaScript eseményekre. Mivel itt azonban a Navigator objektum figyeli az egér és kézmozdulat eseményeket amivel a felhasználó manipulálhatja a földgömböt, ezért kénytelen vagyunk valamiféle koordinációt végezni az alkalmazás és a Navigator eseménykezelése között. Fontos, hogy a Web World Wind nem figyeli a billentyűzet eseményeit, így ezt nem kell koordinálni.&lt;br /&gt;
&lt;br /&gt;
Ha az alkalmazásunk mobilon is fut akkor az egér mellett az érzékelés eseményeit is figyelni kell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Egér eseménykezelés ====&lt;br /&gt;
&lt;br /&gt;
Az esemény kezelőt be kell regisztrálni a World Window addEventListener metódusával.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
var wwd = new WorldWind.WorldWindow(&amp;quot;canvasOne&amp;quot;);&lt;br /&gt;
wwd.addEventListener(&amp;quot;mousemove&amp;quot;, function (event) {...});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az így hozzáadott listenerek a Navigator eseménykezelése előtt hívódnak meg.&lt;br /&gt;
Azok az eseménykezelők akik választoktak az eseményre meg kell hívniuk a preventDefault -ot, hogy ezzel jelezzék a Navigatornak és a többi eseménykezelőnek, hogy ignorálják az eseményt. Továbbá az eseménykezelőknek érdemes megvizsgálni, hogy az eseményre válaszolt-e már valaki.&lt;br /&gt;
&lt;br /&gt;
A fentiek alól kivétel a kattintás, mivel azt  ClickRecognizer-el érdemes lekezelni. Ez kapcsolatban áll a Navigator-ral és kézmozdulat felismerőkkel, így elkerülve a duplikált eseménykezelést.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var clickRecognizer = new WorldWind.ClickRecognizer(wwd, &lt;br /&gt;
    function(recognizer) {&lt;br /&gt;
        ...&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Kézmozdulat eseménykezelés ====&lt;br /&gt;
&lt;br /&gt;
Itt is érdemes a beépített TapRecognizer osztályt használni. Ez képes felismerni a különböző képernyőt ért kézmozdulatokat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Általános kézmozdulat kezelő function&lt;br /&gt;
var handleClick = function (recognizer) {&lt;br /&gt;
    // Obtain the event location.&lt;br /&gt;
    var x = recognizer.clientX,&lt;br /&gt;
        y = recognizer.clientY;&lt;br /&gt;
&lt;br /&gt;
    //A felhasználó valahová mutat&lt;br /&gt;
    var pickList = wwd.pick(wwd.canvasCoordinates(x, y));&lt;br /&gt;
&lt;br /&gt;
    //Ha terepre mutatott akkor menjünk oda&lt;br /&gt;
    if (pickList.objects.length == 1 &amp;amp;&amp;amp; pickList.objects[0].isTerrain) {&lt;br /&gt;
        var position = pickList.objects[0].position;&lt;br /&gt;
        goToAnimator.goTo(new WorldWind.Location(position.latitude, position.longitude));&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Figyeljük az egér kattintásokat&lt;br /&gt;
var clickRecognizer = new WorldWind.ClickRecognizer(wwd, handleClick);&lt;br /&gt;
&lt;br /&gt;
// Figyeljük a kézmozdulatokat&lt;br /&gt;
var tapRecognizer = new WorldWind.TapRecognizer(wwd, handleClick);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Navigáció ===&lt;br /&gt;
&lt;br /&gt;
Hacsak nem szeretnénk a felhasználó nézetét programmal változtatni, akkor sose kell interakcióba lépni a navigátorral. De természetesen lehetséges a navigátort az alkalmazásból irányítani.&lt;br /&gt;
&lt;br /&gt;
A Navigator objektumnak elsődlegesen kettő attribútuma felel az irányításért:&lt;br /&gt;
&lt;br /&gt;
*LookAtLocation: Jelzi  a szélességet és hosszúságot ahová a felhasználó nézőpontja néz&lt;br /&gt;
*range: Jelzi a szem távolságát az ellipszoidtól.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Beállítjuk, hogy a Navigator erre pontra nézzen és ilyen magasan legyen.&lt;br /&gt;
wwd.navigator.lookAtLocation.latitude = 65;&lt;br /&gt;
wwd.navigator.lookAtLocation.longitude = -150;&lt;br /&gt;
wwd.navigator.range = 2e6; // 2 millió méterrel az ellipsziod felett&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez azonban azonnal az új nézethez ugrik. Viszont szebben néz ki, fokozatosan és simán mozog oda ahová szeretnénk.&lt;br /&gt;
Ehhez használhatjuk a GoToAnimator-t.&lt;br /&gt;
&lt;br /&gt;
=== Shape File ===&lt;br /&gt;
&lt;br /&gt;
A World Wind Web támogatja a Shape File-opk használatát egy beépített ShapeFile osztály segítségével. Ez értelmezési a kapott Shape File-t és tartalmából alakzatokat készít. A pontokból helyjelzők, a vonalalkból utak, a poligonokból poligonokat csinál.Az értelmezés végén definiálható egy hívás ami akkor történik miután az egészet értelmeztük, de még nem készültek el az alakzatok.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a Shape File mellett található attribútm file is (.dbf), azt automatikusan felismeri és értelmezi a Shape File-al együtt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk azt a callback functiont amely lefut a sikeres tötéskor, de még az alakzat rajzolása előtt&lt;br /&gt;
var shapeConfigurationCallback = function (attributes, record) {&lt;br /&gt;
var configuration = {};&lt;br /&gt;
configuration.name = attributes.values.name || attributes.values.Name || attributes.values.NAME;&lt;br /&gt;
&lt;br /&gt;
if (record.isPointType()) {&lt;br /&gt;
	configuration.name = attributes.values.name || attributes.values.Name || attributes.values.NAME;&lt;br /&gt;
&lt;br /&gt;
	configuration.attributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
&lt;br /&gt;
	if (attributes.values.pop_max) {&lt;br /&gt;
		var population = attributes.values.pop_max;&lt;br /&gt;
		configuration.attributes.imageScale = 0.01 * Math.log(population);&lt;br /&gt;
	}&lt;br /&gt;
} else if (record.isPolygonType()) {&lt;br /&gt;
	configuration.attributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
&lt;br /&gt;
	//Kiszínezztük a kapott poligonokat valamilyen véletlenszerű színnel&lt;br /&gt;
	configuration.attributes.interiorColor = new WorldWind.Color(&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		1.0);&lt;br /&gt;
&lt;br /&gt;
	//Kifestjük a határt valamilyen a belsőnél sötátebb színnel&lt;br /&gt;
	configuration.attributes.outlineColor = new WorldWind.Color(&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.red,&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.green,&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.blue,&lt;br /&gt;
		1.0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return configuration;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Honnan vegye a file-okat&lt;br /&gt;
var shapefileLibrary = &amp;quot;http://worldwindserver.net/webworldwind/data/shapefiles/naturalearth&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a réteget azt adatoknak.&lt;br /&gt;
var worldLayer = new WorldWind.RenderableLayer(&amp;quot;Countries&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a file-t feldolgozó osztályt&lt;br /&gt;
var worldShapefile = new WorldWind.Shapefile(shapefileLibrary + &amp;quot;/ne_110m_admin_0_countries/ne_110m_admin_0_countries.shp&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Betöltjük a file-t&lt;br /&gt;
worldShapefile.load(null, shapeConfigurationCallback, worldLayer);&lt;br /&gt;
&lt;br /&gt;
//Hozzáadjuk a réteget&lt;br /&gt;
wwd.addLayer(worldLayer);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Felhasznált irodalom==&lt;br /&gt;
&lt;br /&gt;
NASA World Wind hivatalos oldal : https://worldwind.arc.nasa.gov/&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Kezd%C5%91lap&amp;diff=570</id>
		<title>Kezdőlap</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Kezd%C5%91lap&amp;diff=570"/>
		<updated>2017-05-25T20:35:54Z</updated>

		<summary type="html">&lt;p&gt;Mate: Szócikkek listájának frissítése 2016-2017-2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Üdvözlet a GIS Wikin!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A GIS Wiki az [http://www.elte.hu Eötvös Loránd Tudományegyetem] [http://www.inf.elte.hu Informatikai Karának] egy belső információs oldala, amelynek célja alapvetően &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://hu.wikipedia.org/wiki/F%C3%B6ldrajzi_inform%C3%A1ci%C3%B3s_rendszer térinformatikai rendszerrek]&amp;lt;/span&amp;gt;kel kapcsolatos ismeretek gyűjtése. A szócikkek anyagát elsősorban a [http://mcserep.web.elte.hu/elte/ttaf/ Térinformatikai és Távérzékelési Alkalmazások fejlesztése] tárgy hallgatói biztosították.&lt;br /&gt;
&lt;br /&gt;
Jelenleg elérhető szócikkek:&lt;br /&gt;
&lt;br /&gt;
* [[DotSpatial]]&lt;br /&gt;
* [[GeoTools]]&lt;br /&gt;
* [[GDAL/OGR]]&lt;br /&gt;
* [[Geomajas]]&lt;br /&gt;
* [[Leaflet]]&lt;br /&gt;
* [[Mapbox]]&lt;br /&gt;
* [[MATSim]]&lt;br /&gt;
* [[MapServer]]&lt;br /&gt;
* [[NASA_World_Wind_SDK|NASA World Wind SDK]]&lt;br /&gt;
* [[OpenLayers]]&lt;br /&gt;
* [[PgRouting]]&lt;br /&gt;
* [[Routino]]&lt;br /&gt;
* [[SharpMap]]&lt;br /&gt;
* [[Spatial4J]]&lt;br /&gt;
* [[SUMO]]&lt;br /&gt;
&lt;br /&gt;
Az oldalt [http://people.inf.elte.hu/groberto Giachetta Roberto] és [http://mcserep.web.elte.hu Cserép Máté] szerkeszti.&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=PgRouting&amp;diff=569</id>
		<title>PgRouting</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=PgRouting&amp;diff=569"/>
		<updated>2017-05-25T14:52:16Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;pgRouting&amp;#039;&amp;#039;&amp;#039; egy &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/Ny%C3%ADlt_forr%C3%A1sk%C3%B3d%C3%BA_szoftver nyílt forráskódú]&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/C%2B%2B C++]&amp;lt;/span&amp;gt; nyelven írt bővítmény a [[PostGIS]]/&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/PostgreSQL PostgreSQL]&amp;lt;/span&amp;gt; térinformatikai adatbázisokhoz. Lehetővé teszi &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/Gr%C3%A1f gráf adatszerkezetek]&amp;lt;/span&amp;gt; kezelését, így például legrövidebb utakat, csomópontok távolságát és egyéb hálózati elemzést igénylő feladatokat oldhatunk meg vele. A programcsomag &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/GNU_General_Public_License GNU GPL v2]&amp;lt;/span&amp;gt; licenc alatt használható.&lt;br /&gt;
Elődje volt a pgDijkstra, amelyet később kiterjesztettek és pgRouting-nak neveztek el. Napjainkban a fenntartását a Georepublic, az iMaptools és a felhasználók végzik.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OSGeo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A pgRouting az OSGeo Foundation-nek egy OSGeo Labs projektje és része az OSGeo Live-nak, ami egy hordozható szoftver, mellyel ki széles körben ki lehet próbálni térinformatikai szoftvereket installálás nélkül.&lt;br /&gt;
Teljesen ingyenes, szabadon használható, módosítható és dokumentációt, valamint mintaadatokat is tartalmaz.&lt;br /&gt;
&lt;br /&gt;
A pgRoutingot sokféle módon tudjuk használni, adatmódosítást is több különböző szoftverrel is végezhetünk, pl. pgAdmin, QGIS használatával, vagy konkrét Pl/pgSQL utasítások használatával. Az adatmódosításokat a routing engine azonnal elvégzi és a &amp;quot;cost&amp;quot; paraméter kiszámítása is működik dinamikusan.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
A PostGIS újabb verziói (2.0+) már tartalmazzák a pgRouting csomagot, így nem szükséges külön telepíteni, csak aktiválni kell, a következő módon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE EXTENSION pgrouting;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A teljes telepítési útmutató elérhető a pgRouting honlapján.&lt;br /&gt;
Természetesen különböző platformokra is elérhető a csomag: Linux, MAC OS és Windows alá is.&lt;br /&gt;
&lt;br /&gt;
Én a Windows verziót választottam.&lt;br /&gt;
A pgRouting honlapján lévő hivatalos telepítési útmutató alapján hosszas, bonyodalmas telepítésre számítottam, de meglepően egyszerűnek bizonyult.&lt;br /&gt;
Nem kell más, csak egy PostgreSQL és a hozzá tartozó, megfelelő verziójú PostGIS, amelyet a kapcsolódó StackBuilder-rel automatikusan, könnyen telepíthetünk.&lt;br /&gt;
&lt;br /&gt;
Elérhetőek más kiterjesztések is, én csak a PostGIS-pgRouting kombót választottam.&lt;br /&gt;
&lt;br /&gt;
Telepítés után az úgy nevezett pgAdmin alkalmazást kell elindítani és ebben kell csatlakozni az adatbázisunkhoz.&lt;br /&gt;
Az adatbázis futhat localhost-on, sőt, egy kezdeti adatbázist már a PostGIS telepítése során létrehozhatunk.&lt;br /&gt;
&lt;br /&gt;
Az adatbázis jelszóval védett és különböző felhasználókat is létre lehet benne hozni, majd a táblákról megmondani, kiknek van hozzá jogosultsága - tehát itt semmi meglepetés nincs.&lt;br /&gt;
&lt;br /&gt;
Grafikus megjelenítéshez a QGIS programcsomag megfelelő választás lehet.&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
A pgRouting két fő összetevőből áll:&lt;br /&gt;
* Egy C modul, amely egy PostgreSQL-ben átadott lekérdezést használ a gráf felépítéséhez.&lt;br /&gt;
* C++ modulok, amelyek a lekérdezést úgynevezett boost gráffá alakítják, és futtatják az útvonal-választást.&lt;br /&gt;
&lt;br /&gt;
Hogy mely összetevőt használja a program futása során, az az algoritmus fajtájától függ.&lt;br /&gt;
&lt;br /&gt;
A függvénykönyvtár szerkezete pedig a következőképp néz ki:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  cmake/                 - cmake fájlok&lt;br /&gt;
  CMakeLists.txt         - Top level cmake &lt;br /&gt;
  doc/                   - Top level doc, a nem forrásalgoritmus-specifikus dokumentáció helye&lt;br /&gt;
    themes/              - Sphinx téma a doc-nak&lt;br /&gt;
    static/              - dokumentáció képei&lt;br /&gt;
  src/                  &lt;br /&gt;
    astar/               - A* algoritmus&lt;br /&gt;
    common/              - pgRouting projektekben szükséges közös fájlok&lt;br /&gt;
    dijkstra/            - Dijkstra algoritmus&lt;br /&gt;
    driving_distance/    - Vezetési távolság&lt;br /&gt;
    trsp/                - Legrövidebb utak kanyarodási korlátokkal&lt;br /&gt;
    tsp/                 - Utazó ügynök&lt;br /&gt;
  tools/                 - Tesztelési eszközök&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az src mappa minden könyvtárában &amp;lt;code&amp;gt;doc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sql&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, és &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; almappák találhatók, melyekbe értelemszerűen a következők kerülnek:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;doc&amp;#039;&amp;#039;&amp;#039;: Az adott algoritmushoz szükséges összes dokumentáció ReStructuredText formátumban. Ennek célja, hogy a függvények leírásával, input és output paraméterek megadásával a felhasználók számára érthetővé tegye, hogyan működik az algoritmus.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;sql&amp;#039;&amp;#039;&amp;#039;: Az sql burkolók a C kódhoz.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;src&amp;#039;&amp;#039;&amp;#039;: C/C++ kód az algoritmushoz.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;test&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;test.conf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*.data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*.test&amp;lt;/code&amp;gt;, és &amp;lt;code&amp;gt;*.rest&amp;lt;/code&amp;gt; fájlok az algoritmus teszteléséhez.&lt;br /&gt;
&lt;br /&gt;
Fejlesztési célból a programot klónozhatjuk Git-en keresztül, majd telepítjük a következők szerint:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 git clone git@github.com:pgRouting/pgrouting.git&lt;br /&gt;
 cd pgrouting&lt;br /&gt;
 cmake -DWITH_TSP=ON -DWITH_DD=ON .&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A 2.3 pgRouting library tartalma/leírása &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://docs.pgrouting.org/2.3/en/doc/index.html itt]&amp;lt;/span&amp;gt; található.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok betöltése&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A vektoros térképi adatok adatbázis-táblába betöltésére számos eszköz áll rendelkezésre, például:&lt;br /&gt;
*	&amp;#039;&amp;#039;&amp;#039;osm2po&amp;#039;&amp;#039;&amp;#039;: OpenStreetMap (OSM) adatok konvertálása SQL formátumba, pgRouting-nak megfelelő formátumban (hasonló hozzá az osm2pgrouting is, de ez sajnos egy ideje Windows alatt nem működik).&lt;br /&gt;
*	&amp;#039;&amp;#039;&amp;#039;shp2pgsql&amp;#039;&amp;#039;&amp;#039;:	PostgreSQL shapefile betöltője (az újabb verziójához GUI is tartozik, mellyel könnyen lehet shapefile-okat betölteni).&lt;br /&gt;
*	&amp;#039;&amp;#039;&amp;#039;ogr2ogr&amp;#039;&amp;#039;&amp;#039;:	Vektoros adatok konverziója.&lt;br /&gt;
*	&amp;#039;&amp;#039;&amp;#039;osm2pgsql&amp;#039;&amp;#039;&amp;#039;:	OSM adat betöltése postgreSQL-be.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeldolgozás&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Amikor egy GIS fájlt olvasunk be az adatbázisunkba a pgRouting számára, nem feltétlenül követnek alkalmas topológiát a rekordok. A helytelen topológia hibás útvonalakhoz vezetne. Hogy használható adattáblát kapjunk, csomópontokra van szükségünk minden egyes útkereszteződésnél. Az útvonalhálózat megfelelő topológiájának kialakítását segítheti a pgr_createTopology  vagy a pgr_nodeNetwork parancs. Működésük hasonló. Az utóbbi beolvassa a „csúcstalan” hálózat adatbázis-tábláját, majd egy új táblába írja a már felcsúcsozott éleket. Paraméterei&lt;br /&gt;
*	éltábla neve, &lt;br /&gt;
*	tolerancia: a toleranciaértéken belüli csomópontok egy csomópontot fognak alkotni,&lt;br /&gt;
*	id, az éltábla elsődleges kulcsa,&lt;br /&gt;
*	geometriát tartalmazó oszlop,&lt;br /&gt;
*	kimeneti tábla szuffixe. Alapértelmezetten edge_table_noded.&lt;br /&gt;
&lt;br /&gt;
Előfordulhat olyan eset is, amikor a pl. shapefile-ból betöltött táblánkon nem tudunk automatikusan topológiát építeni, mivel csak egy &amp;quot;geometry&amp;quot; típusú oszlopból tudjuk, hol van az elhelyezkedése, azaz nem tudjuk a start és az end csúcsát.&lt;br /&gt;
Szerencsére erre is van megoldás:&lt;br /&gt;
&lt;br /&gt;
1. Létrehozunk egy view-t, amelyikbe kiszámoljuk az adott geom start és end csúcsát (ebben az esetben a road táblán hajtjuk végre az átalakítást).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE OR REPLACE VIEW road_ext AS&lt;br /&gt;
   SELECT *, startpoint(the_geom), endpoint(the_geom)&lt;br /&gt;
   FROM road;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Létrehozunk egy táblát, amelyben az egyes csomópontokat tároljuk, és ezeknek adunk egy unique ID-t is.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE node AS&lt;br /&gt;
   SELECT row_number() OVER (ORDER BY foo.p)::integer AS id, &lt;br /&gt;
          foo.p AS the_geom&lt;br /&gt;
   FROM (         &lt;br /&gt;
      SELECT DISTINCT road_ext.startpoint AS p FROM road_ext&lt;br /&gt;
      UNION&lt;br /&gt;
      SELECT DISTINCT road_ext.endpoint AS p FROM road_ext&lt;br /&gt;
   ) foo&lt;br /&gt;
   GROUP BY foo.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Ahhoz, hogy bejárható hálózatot kapjunk, létrehozunk egy táblát az eredeti és a csomópontok összejoin-olásával.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE network AS&lt;br /&gt;
   SELECT a.*, b.id as start_id, c.id as end_id&lt;br /&gt;
   FROM road_ext AS a&lt;br /&gt;
      JOIN node AS b ON a.startpoint = b.the_geom&lt;br /&gt;
      JOIN node AS c ON a.endpoint = c.the_geom;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Majd, ha akarjuk létrehozunk spatial index-et a lekérdezések hatékonyabb végrehajtása érdekében.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE INDEX road_gist ON road USING GIST (the_geom);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Már mehetnek is a lekérdezések!&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lekérdezés szintaxis&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Minden pgRouting lekérdezés az alábbi formátumot követi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT pgr_&amp;lt;algorithm&amp;gt;(&amp;lt;SQL for edges&amp;gt;, start, end, &amp;lt;additonal options&amp;gt;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;pgr_&amp;lt;/code&amp;gt;előtaggal hívjuk meg a lentebb ismertetett algoritmusok egyikét. A belső SQL lekérdezéssel adjuk meg a táblát, amelyre az algoritmust futtatjuk, a kezdő- és végponto(ka)t, valamint opcionális további szűrési feltételeket. Például, ha a [http://http://docs.pgrouting.org/latest/en/doc/src/developer/sampledata.html#sampledata pgRouting dokumentációjában] bemutatott mintaadatokkal dolgozunk, az alábbi lekérdezéssel a 2. sorszámú csúcsból a 3. sorszámúba vezető legrövidebb utat kapjuk meg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT * FROM pgr_dijkstra(&lt;br /&gt;
      &amp;#039;SELECT id, source, target, cost, reverse_cost &lt;br /&gt;
      FROM edge_table&amp;#039;, 2, 3);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
=== Dijkstra algoritmus ===&lt;br /&gt;
A &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/Dijkstra-algoritmus Dijkstra algoritmus]&amp;lt;/span&amp;gt; egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer.  Az algoritmus csak nem negatív élsúlyok esetén működik. Jelölje a súlyfüggvényt &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. Az algoritmus mohó módszert használ. Legyen a kiindulási pont &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a célállomás pedig &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. Az algoritmus egy &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazban tárolja azon csúcsokat, amelyeknek már ismerjük az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből hozzájuk vezető legrövidebb út hosszát. Ezen kívül minden &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; csúcsról nyilvántartunk az algoritmus futása során egy &amp;lt;math&amp;gt;D[u]&amp;lt;/math&amp;gt; értéket, ami az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ba vezető addig megismert legrövidebb út hossza.&lt;br /&gt;
&lt;br /&gt;
Kezdetben &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; üres, &amp;lt;math&amp;gt;D[s]=0&amp;lt;/math&amp;gt; és minden más &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcsra &amp;lt;math&amp;gt;D[v]=\infty&amp;lt;/math&amp;gt;. Ezután minden iterációban kiválasztunk a &amp;lt;math&amp;gt;V\setminus H&amp;lt;/math&amp;gt; halmazból egy olyan &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; csúcsot, amelyre &amp;lt;math&amp;gt;D[x]&amp;lt;/math&amp;gt; minimális, áttesszük &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;-et &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ba, majd &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; minden olyan &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; szomszédjára, amely nincs &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ban frissítjük a &amp;lt;math&amp;gt;D[v]&amp;lt;/math&amp;gt; értéket:&lt;br /&gt;
&amp;lt;math&amp;gt;D[v]=\min\{D[v],D[x]+w(x,v)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Az algoritmus véget ér, amikor &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; átkerül &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ba, ekkor &amp;lt;math&amp;gt;D[t]&amp;lt;/math&amp;gt; egy legrövidebb &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be vezető út hossza. Az algoritmus kis módosítással egy legrövidebb utat is megad &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be.&lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége szomszédsági mátrixos gráfábrázolás esetén &amp;lt;math&amp;gt;O(|V|^2)&amp;lt;/math&amp;gt;, szomszédsági listás gráfábrázolás esetén Fibonacci kupacot használva&lt;br /&gt;
&amp;lt;math&amp;gt;O(|E|+|V|\log |V|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A Dijkstra algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, cost) sorok halmazával tér vissza, melyek egy utat hoznak létre (a legrövidebb utat a két csúcs között).&lt;br /&gt;
Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 a startcsúcs azonosítója,&lt;br /&gt;
az id2 az él azonosítója (az utolsó sorban -1),&lt;br /&gt;
a cost az áthaladás költsége id1-től id2 élen keresztül.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
pgr_costResult[] pgr_dijkstra(text sql, integer source, integer target,&lt;br /&gt;
                           boolean directed, boolean has_rcost);&lt;br /&gt;
/*Ebben a source a startcsúcs azonosítója,&lt;br /&gt;
a target a célcsúcs azonosítója,&lt;br /&gt;
a directed akkor igaz, ha az él irányított,&lt;br /&gt;
a has_rcost akkor igaz, ha negatív élek vannak, ekkor a kapott sorokat az algoritmus visszafelé dolgozza fel.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT id, source, target, cost [,reverse_cost] FROM edge_table&lt;br /&gt;
/* Ebben az id az él azonosítója,&lt;br /&gt;
a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége,&lt;br /&gt;
a reverse_cost opcionális, akkor lesz használva, ha a directed és a has_rcost értéke is igaz.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dijkstra algoritmussal kiegészítve az előző lekérdezés reverse_cost nélkül:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS node, id2 AS edge, cost&lt;br /&gt;
        FROM pgr_dijkstra(&lt;br /&gt;
                &amp;#039;SELECT id, source, target, cost FROM edge_table&amp;#039;,&lt;br /&gt;
                7, 12, false, false&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reverse_cost-tal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS node, id2 AS edge, cost&lt;br /&gt;
        FROM pgr_dijkstra(&lt;br /&gt;
                &amp;#039;SELECT id, source, target, cost, reverse_cost FROM edge_table&amp;#039;,&lt;br /&gt;
                7, 12, true, true&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jól látható, hogy a két módszer csak a directed és a has_rcost értékekben különbözik.&lt;br /&gt;
&lt;br /&gt;
=== Kétirányú Dijkstra algoritmus ===&lt;br /&gt;
A kétirányú Dijkstra algoritmus szintén egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer.  Az algoritmus csak nem negatív élsúlyok esetén működik.  Legyen a kiindulási pont &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a célállomást pedig &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. A Dijkstra algoritmust futtatjuk a kiindulási pontból az eredeti gráfon, és párhuzamosan a célállomásból a transzponált gráfon (amelyet úgy kapunk az eredeti gráfból, hogy az élek irányítását megfordítjuk).  Akkor állunk meg, ha egy &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcs mindkét irányból bekerül a Dijkstra algoritmusnál definiált &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazba (pontosabban a &amp;lt;math&amp;gt;H_s&amp;lt;/math&amp;gt; és a &amp;lt;math&amp;gt;H_t&amp;lt;/math&amp;gt; halmazba is). Egy alternatív lehetőség, hogy a &amp;lt;math&amp;gt;H_s&amp;lt;/math&amp;gt; és a &amp;lt;math&amp;gt;H_t&amp;lt;/math&amp;gt; halmazok közül minden egyes iterációban csak azt bővítjük, amelyiknél &amp;lt;math&amp;gt;D[x]&amp;lt;/math&amp;gt; kisebb. Az algoritmus kis módosítással egy legrövidebb utat is megad &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A Kétirányú Dijkstra algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, cost) sorok halmazával tér vissza, melyek egy utat hoznak létre (a legrövidebb utat a két csúcs között) úgy, hogy elkezdi megkeresni a legrövidebb utat a startcsúcsból és párhuzamosan a célcsúcsból is. Akkor ér véget, ha a két keresés valahol középen véget ér.&lt;br /&gt;
Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 a startcsúcs azonosítója,&lt;br /&gt;
az id2 az él azonosítója (az utolsó sorban -1),&lt;br /&gt;
a cost az áthaladás költsége id1-től id2 élen keresztül.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
pgr_costResult[] pgr_bdDijkstra(sql text, source integer, target integer,&lt;br /&gt;
                                directed boolean, has_rcost boolean);&lt;br /&gt;
/*Ebben a source a startcsúcs azonosítója,&lt;br /&gt;
a target a célcsúcs azonosítója,&lt;br /&gt;
a directed akkor igaz, ha az él irányított,&lt;br /&gt;
a has_rcost akkor igaz, ha negatív élek vannak, ekkor a kapott sorokat az algoritmus visszafelé dolgozza fel.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT id, source, target, cost [,reverse_cost] FROM edge_table&lt;br /&gt;
/* Ebben az id az él azonosítója,&lt;br /&gt;
a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége,&lt;br /&gt;
a reverse_cost opcionális, akkor lesz használva, ha a directed és a has_rcost értéke is igaz.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dijkstra algoritmussal kiegészítve az előző lekérdezés reverse_cost nélkül:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS node, id2 AS edge, cost&lt;br /&gt;
        FROM pgr_bdDijkstra(&lt;br /&gt;
                &amp;#039;SELECT id, source, target, cost FROM edge_table&amp;#039;,&lt;br /&gt;
                7, 12, false, false&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reverse_cost-tal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS node, id2 AS edge, cost&lt;br /&gt;
        FROM pgr_bdDijkstra(&lt;br /&gt;
                &amp;#039;SELECT id, source, target, cost, reverse_cost FROM edge_table&amp;#039;,&lt;br /&gt;
                7, 12, true, true&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== k-Dijkstra algoritmus ===&lt;br /&gt;
A &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-Dijkstra algoritmus egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából több adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer. Valójában a Dijkstra algoritmus a gráf egy adott csúcsából az összes többi csúcsba vezető legrövidebb utat megtalálja, így akárhány célállomást megadhatunk. Az algoritmus akkor fejeződik be, amikor minden egyes célállomás bekerült a Dijkstra algoritmusnál definiált &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazba. Az algoritmus kis módosítással magukat a legrövidebb utakat is megadja.&lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége szomszédsági mátrixos gráfábrázolás esetén &amp;lt;math&amp;gt;O(|V|^2)&amp;lt;/math&amp;gt;, szomszédsági listás gráfábrázolás esetén Fibonacci kupacot használva&lt;br /&gt;
&amp;lt;math&amp;gt;O(|E|+|V|\log |V|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A k-Dijkstra algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, cost) sorok halmazával tér vissza, melyek egy utat hoznak létre (a legrövidebb utat a két csúcs között), vagy összeadja a költségeket (attól függ, melyik verziót használjuk).&lt;br /&gt;
Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 a startcsúcs azonosítója,&lt;br /&gt;
az id2 az él azonosítója (az utolsó sorban -1),&lt;br /&gt;
a cost az áthaladás költsége id1-től id2 élen keresztül.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
pgr_costResult[] pgr_kdijkstraCost(text sql, integer source,&lt;br /&gt;
                 integer[] targets, boolean directed, boolean has_rcost); -- az összeköltséggel tér vissza&lt;br /&gt;
&lt;br /&gt;
pgr_costResult[] pgr_kdijkstraPath(text sql, integer source,&lt;br /&gt;
                 integer[] targets, boolean directed, boolean has_rcost); -- az útban lévő élek halmazával tér vissza&lt;br /&gt;
/*Ezekben a source a startcsúcs azonosítója,&lt;br /&gt;
a targets a célcsúcsok azonosítójának tömbje,&lt;br /&gt;
a directed akkor igaz, ha az él irányított,&lt;br /&gt;
a has_rcost akkor igaz, ha negatív élek vannak, ekkor a kapott sorokat az algoritmus visszafelé dolgozza fel.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT id, source, target, cost [,reverse_cost] FROM edge_table&lt;br /&gt;
/* Ebben az id az él azonosítója,&lt;br /&gt;
a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége,&lt;br /&gt;
a reverse_cost opcionális, akkor lesz használva, ha a directed és a has_rcost értéke is igaz.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
k-Dijkstra algoritmussal kiegészítve az előző lekérdezés úgy, hogy az úttal tér vissza:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS path, id2 AS edge, cost FROM pgr_kdijkstraPath(&lt;br /&gt;
    &amp;#039;SELECT id, source, target, cost FROM edge_table WHERE cost &amp;gt;= 0&amp;#039;,&lt;br /&gt;
    10, array[4,12], false, false&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Költséggel tér vissza:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
Returning a cost result&lt;br /&gt;
SELECT seq, id1 AS source, id2 AS target, cost FROM pgr_kdijkstraCost(&lt;br /&gt;
    &amp;#039;SELECT id, source, target, cost FROM edge_table WHERE cost &amp;gt;= 0&amp;#039;,&lt;br /&gt;
    10, array[4,12], false, false&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A* algoritmus ===&lt;br /&gt;
Az [https://en.wikipedia.org/wiki/A*_search_algorithm &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus] egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer.  Az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus a Dijkstra algoritmus általánosítása, és szintén csak nem negatív élsúlyok esetén működik. Jelölje a súlyfüggvényt &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. Az algoritmus mohó módszert használ. Legyen a kiindulási pont &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a célállomás pedig &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. Az algoritmus egy &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazban tárolja azon csúcsokat, amelyeknek már ismerjük az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből hozzávezető legrövidebb út hosszát, egy &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; halmazban pedig azokat, amelyeket már elértünk &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből, de az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből hozzájuk vezető legrövidebb út hosszát még nem ismerjük. Minden &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; csúcsról nyilvántartunk az algoritmus futása során három értéket: &amp;lt;math&amp;gt;D[u]&amp;lt;/math&amp;gt; az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ba vezető addig megismert legrövidebb út hossza, &amp;lt;math&amp;gt;C[u]&amp;lt;/math&amp;gt; egy nem negatív heurisztikus alsó becslés az &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ból &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be vezető legrövidebb út hosszára, amelyre az is teljesül, hogy az &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ból bármely &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcsba vezető legrövidebb út hosszára &lt;br /&gt;
&amp;lt;math&amp;gt;C[u]-C[v]&amp;lt;/math&amp;gt; alsó korlát (például egy térkép esetén &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; légvonalban mért távolsága), végül &amp;lt;math&amp;gt;B[u]=D[u]+C[u]&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Kezdetben &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; üres, &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;-ben csak az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; csúcs van, és &amp;lt;math&amp;gt;B[s]=0&amp;lt;/math&amp;gt;. Ezután minden iterációban kiválasztunk az &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; halmazból egy olyan &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; csúcsot, amelyre &amp;lt;math&amp;gt;B[x]&amp;lt;/math&amp;gt; minimális, áttesszük &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;-et &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ba, majd &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; minden olyan &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; szomszédjára, amely nincs &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ban frissítjük először a &amp;lt;math&amp;gt;D[v]&amp;lt;/math&amp;gt; értéket: &lt;br /&gt;
&amp;lt;math&amp;gt;D[v]=\min\{D[v],D[x]+w(x,v)\}&amp;lt;/math&amp;gt;,&lt;br /&gt;
majd a &amp;lt;math&amp;gt;B[v]&amp;lt;/math&amp;gt; értéket: &lt;br /&gt;
&amp;lt;math&amp;gt;B[v]=\min\{B[v],D[v]+C[v]\}&amp;lt;/math&amp;gt;,&lt;br /&gt;
végül áttesszük &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;-t &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;-be. Az algoritmus véget ér, amikor &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; átkerül &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ba, ekkor &amp;lt;math&amp;gt;B[t]&amp;lt;/math&amp;gt; egy legrövidebb &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be vezető út hossza. Az algoritmus kis módosítással egy legrövidebb utat is megad &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be.&lt;br /&gt;
&lt;br /&gt;
A tapasztalat azt mutatja, hogy az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus számos esetben hatékonyabb, mint a Dijkstra algoritmust.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Az A* algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, cost) sorok halmazával tér vissza, melyek egy utat hoznak létre (a legrövidebb utat a két csúcs között). Az algoritmus Dijkstra algoritmuson alapszik, heurisztikus kikötéssel, amely hatékonyabbá teszi.&lt;br /&gt;
Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 a startcsúcs azonosítója,&lt;br /&gt;
az id2 az él azonosítója (az utolsó sorban -1),&lt;br /&gt;
a cost az áthaladás költsége id1-től id2 élen keresztül (az utolsó sorra 0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
pgr_costResult[] pgr_astar(sql text, source integer, target integer,&lt;br /&gt;
                       directed boolean, has_rcost boolean);&lt;br /&gt;
/*Ezekben a source a startcsúcs azonosítója,&lt;br /&gt;
a target a célcsúcs azonosítója,&lt;br /&gt;
a directed akkor igaz, ha az él irányított,&lt;br /&gt;
a has_rcost akkor igaz, ha negatív élek vannak, ekkor a kapott sorokat az algoritmus visszafelé dolgozza fel.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT id, source, target, cost, x1, y1, x2, y2 [,reverse_cost] FROM edge_table&lt;br /&gt;
/* Ebben az id az él azonosítója,&lt;br /&gt;
a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
x1 az él start pontjának x koordinátája,&lt;br /&gt;
y1 az él start pontjának y koordinátája,&lt;br /&gt;
x2 az él end pontjának x koordinátája,&lt;br /&gt;
y2 az él end pontjának y koordinátája,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége,&lt;br /&gt;
a reverse_cost opcionális, akkor lesz használva, ha a directed és a has_rcost értéke is igaz.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A* algoritmussal kiegészítve az előző lekérdezés reverse_cost nélkül:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM pgr_AStar(&lt;br /&gt;
    &amp;#039;SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2 FROM edge_table&amp;#039;,&lt;br /&gt;
    4, 1, false, false);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reverse_cost-tal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM pgr_AStar(&lt;br /&gt;
    &amp;#039;SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2, reverse_cost FROM edge_table &amp;#039;,&lt;br /&gt;
    4, 1, true, true);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kétirányú A* algoritmus ===&lt;br /&gt;
A kétirányú &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer.  Az algoritmus csak nem negatív élsúlyok esetén működik.  Legyen a kiindulási pont &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a célállomást pedig &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. Az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt;  algoritmust futtatjuk a kiindulási pontból az eredeti gráfon, és párhuzamosan a célállomásból a transzponált gráfon (amelyet úgy kapunk az eredeti gráfból, hogy az élek irányítását megfordítjuk).  Akkor állunk meg, ha egy &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcs mindkét irányból bekerül az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmusnál definiált &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazba (pontosabban a &amp;lt;math&amp;gt;H_s&amp;lt;/math&amp;gt; és a &amp;lt;math&amp;gt;H_t&amp;lt;/math&amp;gt; halmazba is). Az algoritmus kis módosítással egy legrövidebb utat is megad s-ből t-be.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A Kétirányú A* algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, cost) sorok halmazával tér vissza, melyek egy utat hoznak létre (a legrövidebb utat a két csúcs között) úgy, hogy elkezdi megkeresni a legrövidebb utat a startcsúcsból és párhuzamosan a célcsúcsból is. Akkor ér véget, ha a két keresés valahol középen véget ér.&lt;br /&gt;
Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 a startcsúcs azonosítója,&lt;br /&gt;
az id2 az él azonosítója (az utolsó sorban -1),&lt;br /&gt;
a cost az áthaladás költsége id1-től id2 élen keresztül.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
pgr_costResult[] pgr_bdAstar(sql text, source integer, target integer,&lt;br /&gt;
                                directed boolean, has_rcost boolean);&lt;br /&gt;
/*Ebben a source a startcsúcs azonosítója,&lt;br /&gt;
a target a célcsúcs azonosítója,&lt;br /&gt;
a directed akkor igaz, ha az él irányított,&lt;br /&gt;
a has_rcost akkor igaz, ha negatív élek vannak, ekkor a kapott sorokat az algoritmus visszafelé dolgozza fel.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT id, source, target, cost, x1, y1, x2, y2 [,reverse_cost] FROM edge_table&lt;br /&gt;
/* Ebben az id az él azonosítója,&lt;br /&gt;
a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége,&lt;br /&gt;
x1 az él start pontjának x koordinátája,&lt;br /&gt;
y1 az él start pontjának y koordinátája,&lt;br /&gt;
x2 az él end pontjának x koordinátája,&lt;br /&gt;
y2 az él end pontjának y koordinátája,&lt;br /&gt;
a reverse_cost opcionális, akkor lesz használva, ha a directed és a has_rcost értéke is igaz.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kétirányú A* algoritmussal kiegészítve az előző lekérdezés reverse_cost nélkül:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM pgr_bdAStar(&lt;br /&gt;
    &amp;#039;SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2&lt;br /&gt;
     FROM edge_table&amp;#039;,&lt;br /&gt;
    4, 10, false, false);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reverse_cost-tal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM pgr_bdAStar(&lt;br /&gt;
    &amp;#039;SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2, reverse_cost&lt;br /&gt;
     FROM edge_table &amp;#039;,&lt;br /&gt;
    4, 10, true, true);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Yen algoritmus ===&lt;br /&gt;
A [https://en.wikipedia.org/wiki/Yen%27s_algorithm Yen algoritmus] egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf egy adott csúcsából egy adott másik csúcsába vezető legrövidebb út mellett megtalálja a második, harmadik, …, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-adik legrövidebb (egyszerű) utat is. Az algoritmus csak nem negatív élsúlyok esetén működik. &lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége &lt;br /&gt;
&amp;lt;math&amp;gt;O(k|V|(|E|+|V|\log |V|))&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A Yen algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, id3, cost) sorok halmazával tér vissza, melyek utakat hoznak létre (a legrövidebb utat a két csúcs között) összesen az első k darabot. &lt;br /&gt;
Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 az út azonosítója,&lt;br /&gt;
az id2 a csúcs azonosítója,&lt;br /&gt;
az id3 az él azonosítója (az utolsó sorban 0)&lt;br /&gt;
a cost az áthaladás költsége id2-től id3-at használva.&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT id, source, target, cost, [,reverse_cost] FROM edge_table&lt;br /&gt;
/* Ebben az id az él azonosítója,&lt;br /&gt;
a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége,&lt;br /&gt;
a reverse_cost opcionális, akkor lesz használva, ha a directed és a has_rcost értéke is igaz.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yen algoritmussal kiegészítve az előző lekérdezés reverse_cost nélkül:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS route, id2 AS node, id3 AS edge, cost&lt;br /&gt;
  FROM pgr_ksp(&lt;br /&gt;
    &amp;#039;SELECT id, source, target, cost FROM edge_table&amp;#039;,&lt;br /&gt;
    7, 12, 2, false&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reverse_cost-tal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS route, id2 AS node, id3 AS edge, cost&lt;br /&gt;
  FROM pgr_ksp(&lt;br /&gt;
    &amp;#039;SELECT id, source, target, cost, reverse_cost FROM edge_table&amp;#039;,&lt;br /&gt;
    7, 12, 2, true&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Floyd-Warshall algoritmus ===&lt;br /&gt;
A [https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm Floyd-Warshall algoritmus] egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf bármely két csúcsa közötti legrövidebb út megtalálására szolgáló módszer. Az algoritmus negatív élsúlyok esetén is működik, ha a gráf nem tartalmaz negatív összhosszúságú irányított kört. Jelölje a súlyfüggvényt &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. Az algoritmus dinamikus programozást használ. Legyen a gráf csúcshalmaza &amp;lt;math&amp;gt;\{v_1,v_2,\ldots,v_n\}&amp;lt;/math&amp;gt;. Az algoritmus minden &amp;lt;math&amp;gt;0\leqslant k\leqslant n&amp;lt;/math&amp;gt; esetén meghatározza a &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;-ből &lt;br /&gt;
&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;-be menő legrövidebb olyan (egyszerű) út &amp;lt;math&amp;gt;T_k[v_i,v_j]&amp;lt;/math&amp;gt; hosszát, amelyen a közbülső csúcsok a &amp;lt;math&amp;gt;\{v_1,v_2,\ldots,v_k\}&amp;lt;/math&amp;gt; halmazból kerülnek ki: &lt;br /&gt;
&amp;lt;math&amp;gt;T_0[v_i,v_j]=w(v_i,v_j)&amp;lt;/math&amp;gt;, és &amp;lt;math&amp;gt;T_k[v_i,v_j]=\min\{T_{k-1}[v_i,v_j],T_{k-1}[v_i,v_k]+T_{k-1}[v_k,v_j]\}&amp;lt;/math&amp;gt; ha &amp;lt;math&amp;gt;k&amp;gt;0&amp;lt;/math&amp;gt;. Az algoritmus kis módosítással magukat a legrövidebb utakat is megadja.&lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége &amp;lt;math&amp;gt;O(|V|^3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A Floyd-Warshall algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, cost) sorok halmazával tér vissza minden csúcspárra a súlyozott gráfban, mindegyiknél kiszámolva a legrövidebb utat:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
pgr_costResult[] pgr_aspsWarshall(sql text, directed boolean, reverse_cost boolean); -- magyarul minden egyes csúcspárra kiszámolja az összes költséget.&lt;br /&gt;
/*Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 a startcsúcs azonosítója,&lt;br /&gt;
az id2 a célcsúcs azonosítója,&lt;br /&gt;
a cost az id1-től id2-ig jutás költsége.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT source, target, cost FROM edge_table;&lt;br /&gt;
/* Ebben a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége,&lt;br /&gt;
a reverse_cost ha igaz, akkor a cost értékét az ellentétes irányból vesszük.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Floyd-Warshall algoritmussal kiegészítve az előző lekérdezés:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS from, id2 AS to, cost&lt;br /&gt;
    FROM pgr_apspWarshall(&lt;br /&gt;
        &amp;#039;SELECT id, source, target, cost FROM edge_table&amp;#039;,&lt;br /&gt;
        false, false&lt;br /&gt;
    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Johnson algoritmus ===&lt;br /&gt;
A [https://en.wikipedia.org/wiki/Johnson%27s_algorithm Johnson algoritmus] egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf bármely két csúcsa közötti legrövidebb út megtalálására szolgáló módszer. Az algoritmus negatív élsúlyok esetén is működik, ha a gráf nem tartalmaz negatív összhosszúságú irányított kört. Jelölje a súlyfüggvényt &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. Az algoritmus ritka gráfokon teljesít igazán jól. &lt;br /&gt;
&lt;br /&gt;
Vegyünk fel egy új &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; csúcsot, és vezessünk &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből nulla súlyú éleket &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; csúcsaiba. Jelölje az így kapott gráfot &amp;lt;math&amp;gt;G&amp;#039;&amp;lt;/math&amp;gt;. Futtassuk le &amp;lt;math&amp;gt;G&amp;#039;&amp;lt;/math&amp;gt;-re a Bellman-Ford algoritmust az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; kezdőcsúccsal. Az algoritmus által szolgáltatott távolságérték a gráf egy &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcsára legyen &lt;br /&gt;
&amp;lt;math&amp;gt;D[v]&amp;lt;/math&amp;gt;. Átsúlyozzuk a &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; gráf éleit: legyen &amp;lt;math&amp;gt;w&amp;#039;(u,v)=w(u,v)+D[u]-D[v]&amp;lt;/math&amp;gt; minden &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt; élre. Most &amp;lt;math&amp;gt;w&amp;#039;&amp;lt;/math&amp;gt; egy nem negatív súlyfüggvény &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;-n. Futtassuk ezzel a súlyfüggvénnyel a Dijkstra algoritmust a &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; gráf minden csúcsából. Egy legrövidebb &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ból &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;-be vezető út hossza ezután a kapott érték mínusz &amp;lt;math&amp;gt;D[u]-D[v]&amp;lt;/math&amp;gt;. Az algoritmus kis módosítással magukat a legrövidebb utakat is megadja.&lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége szomszédsági listás gráfábrázolás esetén Fibonacci kupacot használva&lt;br /&gt;
&amp;lt;math&amp;gt;O(|V|(|E|+|V|\log |V|))&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A Johnson algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, cost) sorok halmazával tér vissza minden csúcspárra a gráfban:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
pgr_costResult[] pgr_aspsJohnson(sql text); -- magyarul minden egyes csúcspárra kiszámolja az összes költséget.&lt;br /&gt;
/*Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 a startcsúcs azonosítója,&lt;br /&gt;
az id2 a célcsúcs azonosítója,&lt;br /&gt;
a cost az id1-től id2-ig jutás költsége.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT source, target, cost FROM edge_table;&lt;br /&gt;
/* Ebben a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Johnson algoritmussal kiegészítve az előző lekérdezés:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS from, id2 AS to, cost&lt;br /&gt;
    FROM pgr_apspJohnson(&lt;br /&gt;
        &amp;#039;SELECT source, target, cost FROM edge_table&amp;#039;&lt;br /&gt;
    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utazó ügynök probléma === &lt;br /&gt;
Az [https://hu.wikipedia.org/wiki/Az_utaz%C3%B3_%C3%BCgyn%C3%B6k_probl%C3%A9m%C3%A1ja utazó ügynök probléma] a következő. Adott városoknak egy listája, és adott bármely két város között a távolság. Határozzunk meg egy olyan körutat, amely minden városon pontosan egyszer halad át, és a hossza minimális. A problémára nem ismert polinomiális költségű algoritmus. A program ún. simulated annealing technikán alapuló algoritmust használ egy jó közelítő megoldás meghatározására.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A vezetési távolság algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, id3, cost) egy seq-id párossal tér vissza, amely azt írja le, mi a legjobb haladási sorrend a mátrixban, hogy eljussunk a start csúcsból a meghatározott csúcsokig.&lt;br /&gt;
Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 az út azonosítója,&lt;br /&gt;
az id2 a csúcs azonosítója,&lt;br /&gt;
az id3 az él azonosítója (az utolsó sorban 0)&lt;br /&gt;
a cost az áthaladás költsége id2-től id3-at használva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
pgr_costResult[] pgr_tsp(sql text, ids varchar, source integer);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utazó ügynök algoritmus SQL paraméterrel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM pgr_tsp(&amp;#039;SELECT id AS source_id, x, y FROM vertex_table&amp;#039;,&amp;#039;2,7,11&amp;#039;,7);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Távolsági mátrixszal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id FROM pgr_tsp(&amp;#039;{{0,1,2,3},{1,0,3,2},{2,3,0,4},{3,2,4,0}}&amp;#039;,2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Legrövidebb utak kanyarodási korlátokkal ===&lt;br /&gt;
Az algoritmus egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út meghatározásakor képes figyelembe venni, hogy két csatlakozó él egymás utáni bejárása extra költséggel bírhat. Ezeket a megszorításokat egy külön táblában adhatjuk meg. Tapasztalat szerint az algoritmus közel olyan gyors, mint az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A legrövidebb út kanyarodási korlátokkal algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, id3, cost) sorok halmazával tér vissza, minden sor egy élt tartalmaz, amelyiken átmentünk, plusz az utolsó az utolsó élt.&lt;br /&gt;
Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 az út azonosítója,&lt;br /&gt;
az id2 a csúcs azonosítója,&lt;br /&gt;
az id3 az él azonosítója (az utolsó sorban 0)&lt;br /&gt;
a cost az áthaladás költsége id2-től id3-at használva.&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie, attól függően, hogy van-e megszorítás:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
pgr_costResult[] pgr_trsp(sql text, source integer, target integer, directed boolean, has_rcost boolean [,restrict_sql text]);&lt;br /&gt;
&lt;br /&gt;
pgr_costResult[] pgr_trsp(sql text, source_edge integer, source_pos double precision, target_edge integer, target_pos double precision, directed boolean, has_rcost boolean [,restrict_sql text]);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT id, source, target, cost, [,reverse_cost] FROM edge_table;&lt;br /&gt;
/* Ebben az id az él azonosítója,&lt;br /&gt;
a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége,&lt;br /&gt;
a reverse_cost opcionális, akkor lesz használva, ha a directed és a has_rcost értéke is igaz.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TSRP algoritmussal kiegészítve az előző lekérdezés megszorítások nélkül:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS node, id2 AS edge, cost&lt;br /&gt;
        FROM pgr_trsp(&lt;br /&gt;
                &amp;#039;SELECT id, source, target, cost FROM edge_table&amp;#039;,&lt;br /&gt;
                7, 12, false, false&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Megszorításokkal (külön táblában tároljuk):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT seq, id1 AS node, id2 AS edge, cost&lt;br /&gt;
        FROM pgr_trsp(&lt;br /&gt;
                &amp;#039;SELECT id, source, target, cost FROM edge_table&amp;#039;,&lt;br /&gt;
                7, 12, false, false,&lt;br /&gt;
                &amp;#039;SELECT to_cost, to_edge AS target_id,&lt;br /&gt;
           from_edge || coalesce(&amp;#039;&amp;#039;,&amp;#039;&amp;#039; || via, &amp;#039;&amp;#039;&amp;#039;&amp;#039;) AS via_path&lt;br /&gt;
       FROM restrictions&amp;#039;&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vezetési távolság === &lt;br /&gt;
Az algoritmus egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráfban a Dijkstra algoritmus felhasználásával megadja azon csúcsokat, melyekbe egy vagy több adott csúcsból egy adott értéknél rövidebb úton el lehet jutni.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A vezetési távolság algoritmus pgRouting lekérdezéseket használva:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az algoritmus pgr_costResult(seq, id1, id2, id3, cost) sorok halmazával tér vissza, minden sor egy élt tartalmaz, amelyiken átmentünk, plusz az utolsó az utolsó élt.&lt;br /&gt;
Ebben a seq a sorok szekvenciája,&lt;br /&gt;
az id1 az út azonosítója,&lt;br /&gt;
az id2 a csúcs azonosítója,&lt;br /&gt;
az id3 az él azonosítója (az utolsó sorban 0)&lt;br /&gt;
a cost az áthaladás költsége id2-től id3-at használva.&lt;br /&gt;
&lt;br /&gt;
Segítségül egy olyan SQL lekérdezést használunk, amelyiknek a vizsgált gráf éleivel kell visszatérnie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT id, source, target, cost, [,reverse_cost] FROM edge_table&lt;br /&gt;
/* Ebben az id az él azonosítója,&lt;br /&gt;
a source: az él startcsúcsának azonosítója,&lt;br /&gt;
a target az él célcsúcsának azonosítója,&lt;br /&gt;
a cost egy pozitív szám, az élen való áthaladásnak a költsége,&lt;br /&gt;
a reverse_cost opcionális, akkor lesz használva, ha a directed és a has_rcost értéke is igaz.*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vezetési távolság algoritmussal kiegészítve az előző lekérdezés:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM pgr_drivingDistance(&lt;br /&gt;
        &amp;#039;SELECT id, source, target, cost, reverse_cost FROM edge_table&amp;#039;,&lt;br /&gt;
        2, 3&lt;br /&gt;
      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kapcsolódó alkalmazások ==&lt;br /&gt;
Útvonal-meghatározásra alkalmas adathalmazt például [[OpenStreetMap]] (OSM) térképekből nyerhetünk ki. Ehhez egyik alkalmas segédeszköz az [[OSM2PO]]  alkalmazás, amely megfelelő topológiájú SQL fájlt állít elő a megadott térképrészlethez, amely egyből alkalmas a pgRouting-gal vagy QGIS-szel való feldolgozásra. [[Fájl:Osm.png|thumb|450px|Útvonal megjelenítése OSM2PO webszolgáltatásként]]&lt;br /&gt;
Az OSM2PO révén vizualizálhatjuk is a legrövidebb utakat. A programmal előállított SQL táblákban minden útkereszteződéshez tartozik egy rekord, melyben a következőket tároljuk:&lt;br /&gt;
*	koordináták (&amp;lt;code&amp;gt;x1, x2, y1, y2&amp;lt;/code&amp;gt;), &lt;br /&gt;
*	név (&amp;lt;code&amp;gt;osm_name&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	csomópont azonosító (&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	lehetséges továbbhaladási irány (&amp;lt;code&amp;gt;osm_source_id, osm_target_id&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	útszakasz hossza (&amp;lt;code&amp;gt;km&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	megengedett sebesség (&amp;lt;code&amp;gt;kmh&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	költség (&amp;lt;code&amp;gt;cost&amp;lt;/code&amp;gt;),&lt;br /&gt;
*       geometria (&amp;lt;code&amp;gt;geom_way&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;demo.bat&amp;lt;/code&amp;gt; fájl szerkesztésével specifikálhatjuk térképünk paramétereit, például, hogy mely térképrészleten dolgozzunk. A [https://mapzen.com/data/metro-extracts/ Mapzen] oldalán kész &amp;lt;code&amp;gt;.pbf&amp;lt;/code&amp;gt; formátumú városrészleteket találhatunk, melyeket kompatibilisek az Osm2Po-val. A fájl futtatásával előáll egy &amp;lt;code&amp;gt;.sql&amp;lt;/code&amp;gt; fájl is, melyet importálhatunk a postGIS adatbázisunkba, és akár pgRouting lekérdezéseket is futtathatunk rajta. &lt;br /&gt;
Amíg fut a program, helyi webszerveren (&amp;lt;code&amp;gt;localhost:8888/Osm2poService&amp;lt;/code&amp;gt;) jeleníthető meg az importált térképrészlet, melyen az útkeresést is kipróbálhatjuk.&lt;br /&gt;
&lt;br /&gt;
== Szakirodalom ==&lt;br /&gt;
&lt;br /&gt;
* Regina O. Obe, Leo S. Hsu. [https://locatepress.com/pgrouting &amp;quot;pgRouting: A Practical Guide&amp;quot;], &amp;#039;&amp;#039;Locate Press&amp;#039;&amp;#039;, 2016.&lt;br /&gt;
* Regina O. Obe, Leo S. Hsu. [https://www.manning.com/books/postgis-in-action-second-edition &amp;quot;PostGIS in Action (Second Edition)&amp;quot;], &amp;#039;&amp;#039;Manning Publictions&amp;#039;&amp;#039; (ISBN 9781617291395). 2015. pp 286-290.&lt;br /&gt;
* Lijing Zhang, Xuanhui He. [http://link.springer.com/chapter/10.1007%2F978-3-642-25349-2_133 &amp;quot;Route Search Base on pgRouting&amp;quot;], &amp;#039;&amp;#039;Software Engineering and Knowledge Engineering: Theory and Practice Vol 2.&amp;#039;&amp;#039;. Springer-Verlag Berlin Heidelberg, 2012. pp 1003-1007.&lt;br /&gt;
&lt;br /&gt;
== Külső hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
* [http://pgrouting.org/ A pgRouting hivatalos honlapja]&lt;br /&gt;
* [http://docs.pgrouting.org/latest/en/doc/index.html pgRouting Dokumentáció]&lt;br /&gt;
* [http://www.postgresonline.com/journal/archives/362-An-almost-idiots-guide-to-install-PostgreSQL-9.5,-PostGIS-2.2-and-pgRouting-2.1.0-with-Yum.html Fejlesztőkörnyezet telepítési útmutató]&lt;br /&gt;
* [http://workshop.pgrouting.org/index.html pgRouting Workshop]&lt;br /&gt;
* [http://www.bostongis.com/PrinterFriendly.aspx?content_name=pgrouting_osm2po_1 OpenStreetMap fájl betöltése Osm2Po-val és útvonalkeresés]&lt;br /&gt;
* [http://docs.pgrouting.org/2.3/en/doc/index.html pgRouting v2.3 Manual]&lt;br /&gt;
* [http://docs.pgrouting.org/2.3/en/doc/src/developer/sampledata.html Sample pgRouting data]&lt;br /&gt;
* [https://anitagraser.com/2011/02/07/a-beginners-guide-to-pgrouting/ pgRouting guide]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Leaflet&amp;diff=568</id>
		<title>Leaflet</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Leaflet&amp;diff=568"/>
		<updated>2017-05-25T14:42:08Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Leaflet&amp;#039;&amp;#039;&amp;#039; egy [https://hu.wikipedia.org/wiki/Ny%C3%ADlt_forr%C3%A1sk%C3%B3d%C3%BA_szoftver nyílt forrású] [https://hu.wikipedia.org/wiki/JavaScript JavaScript] library, mely kliens oldalon teszi lehetővé térképek interaktív megjelenítését. A Leaflet API kéréseket küld [https://en.wikipedia.org/wiki/Tile_Map_Service TMS] szolgáltatókhoz, mint pl. [https://en.wikipedia.org/wiki/Mapbox MapBox] és a kapott képeket megjelenítve további funkciókat ad hozzá (pl. méretarány változtatása, térképszelvények közötti navigáció). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Konfiguráció=&lt;br /&gt;
== Host verzió ==&lt;br /&gt;
A legfrissebb stable verzió elérhető [https://en.wikipedia.org/wiki/Content_delivery_network CDN]-en. Használathoz az alábbi kódot kell a HTML kód fej részébe illesztenünk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.0.3/dist/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.0.3/dist/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Leaflet CDN-en keresztül történő használata esetén a lehetséges biztonsági problémák elkerülésére a készítők a [https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity subresource integrity] engedélyezését javasolják:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.0.3/dist/leaflet.css&amp;quot; integrity=&amp;quot;sha512-07I2e+7D8p6he1SIM+1twR5TIrhUQn9+I6yjqD53JQjFiMf8EtC93ty0/5vJTZGF8aAocvHYNEDJajGdNx1IsQ==&amp;quot; crossorigin=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.0.3/dist/leaflet.js&amp;quot; integrity=&amp;quot;sha512-A7vV8IFfih/D732iSSKi20u/ooOfj/AGehOKq0f4vLT1Zr2Y+RX7C+w8A1gaSasGtRUZpF/NZgzSAu4/Gc41Lg==&amp;quot; crossorigin=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Letöltött verzió ==&lt;br /&gt;
A [http://leafletjs.com/download.html weboldalról] letöltött verziók esetén az archívumot kitömörítve és az oldal forrásában meghivatkozva használható:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/path/to/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;/path/to/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A letöltött archívum a következőket tartalmazza:&lt;br /&gt;
* leaflet.js – a leaflet library egyszerűsített JavaScript forrása&lt;br /&gt;
* leaflet-src.js – a leaflet library teljes forrása, debuggoláshoz hasznos&lt;br /&gt;
* leaflet.css – a libraryhoz használt stylesheet állomány&lt;br /&gt;
* images – a CSS által használt képek&lt;br /&gt;
&lt;br /&gt;
== JavaScript csomagkezelővel ==&lt;br /&gt;
[https://www.npmjs.com/ NPM csomagkezelő] használata esetén lokális másolat készíthető az &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;npm install leaflet&amp;lt;/syntaxhighlight&amp;gt; parancs kiadásával. Ekkor a fájlok a következő helyre kerülnek: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;node_modules/leaflet/dist&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile szerver==&lt;br /&gt;
Leaflet több tile szerver használatát is támogatja. Mini-térképes előnézet és a használathoz szükséges JavaScript kód a &lt;br /&gt;
[http://leaflet-extras.github.io/leaflet-providers/preview/ Leaflet providers] oldalon elérhető.&lt;br /&gt;
&lt;br /&gt;
=== Saját tile szerver ===&lt;br /&gt;
Egy részletes leírás található a következő linken: [https://switch2osm.org/serving-tiles/ SWITCH2OSM]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Főbb komponensek=&lt;br /&gt;
A library felépítésének áttekintésére elérhető egy interaktív [http://leafletjs.com/examples/extending/class-diagram.html osztálydiagram].&lt;br /&gt;
&lt;br /&gt;
== Map ==&lt;br /&gt;
A fő osztálya az API-nak, ezzel lehet létrehozni a térképet az oldalon.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var map = L.map(&amp;#039;map&amp;#039;, {&lt;br /&gt;
	center: [51.505, -0.09],&lt;br /&gt;
	zoom: 13&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI rétegek ==&lt;br /&gt;
=== Marker ===&lt;br /&gt;
Marker objektumok megjeleníthetők a térképen. Ezek olyan ikonok, amelyekhez különböző események rendelhetők (click, drag).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
L.marker([50.5, 30.5]).addTo(map);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Popup ===&lt;br /&gt;
A térképen elhelyezhetők popup ablakok. Ha egy marker objektum click eventjéhez szeretnénk popupot rendelni:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
marker.bindPopup(popupContent).openPopup();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tooltip ===&lt;br /&gt;
Rövid szövegek megjelenítésére használható:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
marker.bindTooltip(“my tooltip text”).openTooltip();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Raszteres rétegek ==&lt;br /&gt;
=== TileLayer ===&lt;br /&gt;
Betölti és megjeleníti a térképszelvényeket a map objektumon.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
L.tileLayer(&amp;#039;http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}&amp;#039;, {foo: &amp;#039;bar&amp;#039;}).addTo(map);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ImageOverlay ===&lt;br /&gt;
Egy különálló kép betöltése és megjelenítése rétegként a map objektum határain belül.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var imageUrl = &amp;#039;http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg&amp;#039;,&lt;br /&gt;
imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];&lt;br /&gt;
L.imageOverlay(imageUrl, imageBounds).addTo(map);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vektoros rétegek ==&lt;br /&gt;
=== Path ===&lt;br /&gt;
Közvetlenül nem használható, olyan absztrakt osztály, ami különböző vektoros rétegobjektumok (Polygon, Polyline, Circle) közötti beállításokat és konstansokat tárolja.&lt;br /&gt;
&lt;br /&gt;
=== Polyline ===&lt;br /&gt;
Az osztály segítségével polyline-t lehet rajzolni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var latlngs = [&lt;br /&gt;
	[45.51, -122.68],&lt;br /&gt;
	[37.77, -122.43],&lt;br /&gt;
	[34.04, -118.2]&lt;br /&gt;
];&lt;br /&gt;
var polyline = L.polyline(latlngs, {color: &amp;#039;red&amp;#039;}).addTo(map);&lt;br /&gt;
map.fitBounds(polyline.getBounds());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Polygon ===&lt;br /&gt;
Polygon készítésére használható osztály.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var latlngs = [[37,-109.05],[41,-109.03],[41,-102.05],[37,-102.04]];&lt;br /&gt;
var polygon = L.polygon(latlngs, {color: &amp;#039;red&amp;#039;}).addTo(map);&lt;br /&gt;
map.fitBounds(polygon.getBounds());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rectangle ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var bounds = [[54.559322,-5.767822], [56.1210604,-3.021240]];&lt;br /&gt;
L.rectangle(bounds, {color:”#ff7800”,weight:1}).addTo(map);&lt;br /&gt;
map.fitBounds(bounds);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Circle ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
L.circle([50.5, 30.5], {radius:200}).addTo(map);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alap típusok ==&lt;br /&gt;
=== LatLng ===&lt;br /&gt;
Egy földrajzi pont reprezentálására (hosszúsági és szélességi koordináták) használható.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var latlng = L.latLng(50.5, 30.5);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Minden Leaflet metódus elfogadja a LatLng objektumok mellett a sima vektoros és sima objektumos formákat is, tehát a következők ekvivalensek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
map.panTo([50, 30]);&lt;br /&gt;
map.panTo({lng: 30, lat: 50});&lt;br /&gt;
map.panTo({lat: 50, lng: 30});&lt;br /&gt;
map.panTo(L.latLng(50, 30));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LatLngBounds ===&lt;br /&gt;
Négyszögletes földrajzi terület tárolására használható.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var corner1 = L.latLng(40.712, -74.227),&lt;br /&gt;
corner2 = L.latLng(40.774, -74.125),&lt;br /&gt;
bounds = L.latLngBounds(corner1, corner2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point ===&lt;br /&gt;
x és y pixelkoordinátákkal megadott pontot reprezentál.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var point = L.point(200, 300);&lt;br /&gt;
map.panBy([200, 300]);&lt;br /&gt;
map.panBy(L.point(200, 300));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bounds ===&lt;br /&gt;
Négyszögletes (nemföldrajzi) terület megadása pixelkoordinátákkal.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var p1 = L.point(10, 10),&lt;br /&gt;
p2 = L.point(40, 60),&lt;br /&gt;
bounds = L.bounds(p1, p2);&lt;br /&gt;
otherBounds.intersects([[10, 10], [40, 60]]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Icon ===&lt;br /&gt;
Marker létrehozásánál az ikon megadására szolgál.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var myIcon = L.icon({&lt;br /&gt;
	iconUrl: &amp;#039;my-icon.png&amp;#039;,&lt;br /&gt;
	iconSize: [38, 95],&lt;br /&gt;
	iconAnchor: [22, 94],&lt;br /&gt;
	shadowUrl: &amp;#039;my-icon-shadow.png&amp;#039;,&lt;br /&gt;
	shadowSize: [68, 95],&lt;br /&gt;
	shadowAnchor: [22, 94]&lt;br /&gt;
});&lt;br /&gt;
L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DivIcon ===&lt;br /&gt;
Marker ikonok esetén kép helyett lehetőség van egyszerű &amp;lt;div&amp;gt; element használatára is.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
var myIcon = L.divIcon({className: &amp;#039;my-div-icon&amp;#039;});&lt;br /&gt;
L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vezérlők ==&lt;br /&gt;
=== Zoom ===&lt;br /&gt;
Nagyítás/kicsinyítés vezérő, alapértelmezett vezérlő a térkép objektumon (zoomControl opció false beállításával kikapcsolható).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
L.control.zoom({zoomInText: &amp;#039;++&amp;#039;,zoomInTitle: &amp;#039;Zin&amp;#039;,zoomOutText: &amp;#039;--&amp;#039;,zoomInTitle: &amp;#039;Zout&amp;#039;}).addTo(mymap);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribution ===&lt;br /&gt;
Az attribution vezérlő segítségével tulajdoni információk jeleníthetők meg egy textboxban. Alapértelmezett vezérlő, a layerekből automatikusan veszi az információt a getAttribution metódus segítségével. Az attributionControl opció false beállításával kikapcsolható.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
L.control.attribution({prefix:&amp;#039;blabla&amp;#039;}).addTo(mymap);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
A LayerControl vezérlő segítségével könnyen válthatunk különböző rétegek között.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
	var satellite   = L.tileLayer(mbUrl, {id: &amp;#039;mapbox.satellite&amp;#039;, attribution: mbAttr}),&lt;br /&gt;
		streets  = L.tileLayer(mbUrl, {id: &amp;#039;mapbox.streets&amp;#039;,   attribution: mbAttr});&lt;br /&gt;
	var map = L.map(&amp;#039;mapid&amp;#039;, {&lt;br /&gt;
		center: [47.4725, 19.0628],&lt;br /&gt;
		zoom: 18,&lt;br /&gt;
		layers: [satellite]&lt;br /&gt;
	});&lt;br /&gt;
	var baseLayers = {&lt;br /&gt;
		&amp;quot;Satellite&amp;quot;: satellite,&lt;br /&gt;
		&amp;quot;Streets&amp;quot;: streets&lt;br /&gt;
	};&lt;br /&gt;
	L.control.layers(baseLayers).addTo(map);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale ===&lt;br /&gt;
A méretarány megjelenítésére szolgáló vezérlőelem.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
L.control.scale().addTo(map);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Példaprogramok =&lt;br /&gt;
== Térkép megjelenítése, popup, eseménykezelés ==&lt;br /&gt;
Az alábbi példaprogramban megjelenítünk egy térképet, és elhelyezünk rajta egy szövegdobozt (popup). A térképen való kattintásnál kiírjuk a koordinátákat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&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;style&amp;gt;&lt;br /&gt;
			body {background-color: powderblue;}&lt;br /&gt;
			h1   {color: blue;}&lt;br /&gt;
			p    {color: red;}&lt;br /&gt;
			#mapid { height: 280px; width: 480px;}&lt;br /&gt;
		&amp;lt;/style&amp;gt;&lt;br /&gt;
		&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.0.3/dist/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.0.3/dist/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&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;mapid&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;script&amp;gt;&lt;br /&gt;
			var mymap = L.map(&amp;#039;mapid&amp;#039;).setView([47.4725, 19.0628], 16);&lt;br /&gt;
			var marker = L.marker([47.4725, 19.0628]).addTo(mymap);&lt;br /&gt;
			marker.bindPopup(&amp;quot;&amp;lt;b&amp;gt;Hello world!&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;I am a popup.&amp;quot;).openPopup();&lt;br /&gt;
&lt;br /&gt;
			var popup = L.popup();&lt;br /&gt;
			function onMapClick(e) {&lt;br /&gt;
			    popup&lt;br /&gt;
		    	    .setLatLng(e.latlng)&lt;br /&gt;
		    	    .setContent(&amp;quot;You clicked the map at &amp;quot; + e.latlng.toString())&lt;br /&gt;
		    	    .openOn(mymap);&lt;br /&gt;
			}&lt;br /&gt;
			mymap.on(&amp;#039;click&amp;#039;, onMapClick);&lt;br /&gt;
&lt;br /&gt;
			L.tileLayer(&amp;#039;https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}&amp;#039;, {&lt;br /&gt;
		    attribution: &amp;#039;Map data &amp;amp;copy; &amp;lt;a href=&amp;quot;http://openstreetmap.org&amp;quot;&amp;gt;OpenStreetMap&amp;lt;/a&amp;gt; contributors, &amp;lt;a href=&amp;quot;http://creativecommons.org/licenses/by-sa/2.0/&amp;quot;&amp;gt;CC-BY-SA&amp;lt;/a&amp;gt;, Imagery © &amp;lt;a href=&amp;quot;http://mapbox.com&amp;quot;&amp;gt;Mapbox&amp;lt;/a&amp;gt;&amp;#039;,&lt;br /&gt;
		    maxZoom: 18,&lt;br /&gt;
		    id: &amp;#039;your.mapbox.project.id&amp;#039;,&lt;br /&gt;
		    accessToken: &amp;#039;your.mapbox.public.access.token&amp;#039;&lt;br /&gt;
			}).addTo(mymap);&lt;br /&gt;
		&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LayerControl ==&lt;br /&gt;
A példában a LayerControl vezérlő segítségével választhatunk a két megjelenített réteg közül.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&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;style&amp;gt;&lt;br /&gt;
			body {background-color: powderblue;}&lt;br /&gt;
			h1   {color: blue;}&lt;br /&gt;
			p    {color: red;}&lt;br /&gt;
			#mapid { &lt;br /&gt;
				height: 280px;&lt;br /&gt;
				width: 480px;}&lt;br /&gt;
		&amp;lt;/style&amp;gt;&lt;br /&gt;
		&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.0.3/dist/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.0.3/dist/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&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;mapid&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var mbAttr = &amp;#039;Map data &amp;amp;copy; &amp;lt;a href=&amp;quot;http://openstreetmap.org&amp;quot;&amp;gt;OpenStreetMap&amp;lt;/a&amp;gt; contributors, &amp;#039; +&lt;br /&gt;
			&amp;#039;&amp;lt;a href=&amp;quot;http://creativecommons.org/licenses/by-sa/2.0/&amp;quot;&amp;gt;CC-BY-SA&amp;lt;/a&amp;gt;, &amp;#039; +&lt;br /&gt;
			&amp;#039;Imagery © &amp;lt;a href=&amp;quot;http://mapbox.com&amp;quot;&amp;gt;Mapbox&amp;lt;/a&amp;gt;&amp;#039;,&lt;br /&gt;
		mbUrl = &amp;#039;https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=your.mapbox.public.access.token&amp;#039;;&lt;br /&gt;
	var satellite   = L.tileLayer(mbUrl, {id: &amp;#039;mapbox.satellite&amp;#039;, attribution: mbAttr}),&lt;br /&gt;
		streets  = L.tileLayer(mbUrl, {id: &amp;#039;mapbox.streets&amp;#039;,   attribution: mbAttr});&lt;br /&gt;
	var map = L.map(&amp;#039;mapid&amp;#039;, {&lt;br /&gt;
		center: [47.4725, 19.0628],&lt;br /&gt;
		zoom: 18,&lt;br /&gt;
		layers: [satellite]&lt;br /&gt;
	});&lt;br /&gt;
	var baseLayers = {&lt;br /&gt;
		&amp;quot;Satellite&amp;quot;: satellite,&lt;br /&gt;
		&amp;quot;Streets&amp;quot;: streets&lt;br /&gt;
	};&lt;br /&gt;
	L.control.layers(baseLayers).addTo(map);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Hivatkozások=&lt;br /&gt;
* [http://leafletjs.com/ Leaflet hivatalos oldala]&lt;br /&gt;
* [https://github.com/Leaflet/Leaflet Leaflet forráskód]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Leaflet_(software) Leaflet Wikipedia szócikk]&lt;br /&gt;
* [http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification Tile Map Service Specification]&lt;br /&gt;
* [http://leafletjs.com/examples/extending/class-diagram.html Leaflet Class Diagram]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Mapbox&amp;diff=567</id>
		<title>Mapbox</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Mapbox&amp;diff=567"/>
		<updated>2017-05-25T12:48:47Z</updated>

		<summary type="html">&lt;p&gt;Mate: Uploaded demos copied to server&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Fájl:Mapbox-logo-color.png|center|300px|alt=Mapbox logo|Mapbox logo]]&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Mapbox&amp;#039;&amp;#039;&amp;#039; térképszolgáltatóknak kínál megoldásokat, illetve emellett térképek tervezéséhez és karbantartásához készít eszközöket. Ezek többnyire OpenStreetMap adatokat használnak. A Mapbox elkötelezett a nyílt megoldások mellett, de nem csak használja az adatokat, hanem többek között a Mapnik nyílt forrású térképrenderelő megoldás kódjának fő hozzájárulója is.&lt;br /&gt;
&lt;br /&gt;
== Mapbox, mint cég ==&lt;br /&gt;
&lt;br /&gt;
=== Történelem ===&lt;br /&gt;
&lt;br /&gt;
A cég startupként indult 2010-ben, Washingtonban. Dolgozóinak száma 2017-re elérte a 180 főt (az első negyedév végére 199 fő). Főként dizájnerek, szoftver fejlesztők és térképészek. Mára több, mint 5000 üzleti és 200000 ingyenes ügyfelük és felhasználójuk van. Olyan cégek valamint szervezetek használják a termékeiket, mint a Foursquare, Evernote, Pinterest, Github, The Weather Channel, Guardian, Financial Times, CNN, Greenpeace, National Geographic. Hisznek az open-source fejlesztésekben, ezért jelenleg 440-nél is több publikus repójuk van a GitHubon.&lt;br /&gt;
&lt;br /&gt;
=== Munkásság ===&lt;br /&gt;
&lt;br /&gt;
Egy olyan eljáráson dolgoznak, amivel a műholdképek minősége feljavítható. Ha most bárki megnyitja a Google Maps vagy a Bing Maps térképeit, átkapcsol műholdas nézetbe, akkor azt veheti észre, hogy az egész Földön mindenhol világos van, mindenhol nyár van és nincsenek felhők. Ha elkezdünk visszaközelíteni, akkor kiderül, hogy sokszor nagy kontraszteltérés van egymás mellett lévő sávok közt, feltűnnek felhők, a színek össze-vissza változnak és sok esetben a képek rossz minőségűek. Ez annak köszönhető, hogy ezek a térképek ezernyi kis darabból vannak összerakva. Előfordul, hogy az egymás melletti képek teljesen más forrásból származnak, más technológiával készültek, illetve időben akár évekre van egymástól két szomszédos darab. A Mapbox azt tűzte ki célul, hogy felszámolja az ilyen hibákat, megszabadulva a zavaró felhőktől és grafikai egyenetlenségektől. &lt;br /&gt;
Ennek megvalósításához az alapanyag a NASA Lance-Modis rendszerének műholdjáról származik. A Mapbox ezekből az adatokból ragadta ki a 2011. január 1. és 2012. december 31. közt készült két évnyi anyagokat. Ez 339 ezer darab 16 megapixeles képet jelent, ami több mint 5687 milliárd pixel összességében. A projekt célja, ezt a pixelmennyiséget lefésülni 5 milliárd pixelnyire, amiből összeáll egy részletes, de egységes glóbusz.&lt;br /&gt;
&lt;br /&gt;
=== Külön tájékoztató oldal a logójukról és a nevükről ===&lt;br /&gt;
&lt;br /&gt;
A cég precízen figyel a nevüket és logójukat érintő pontosságra. Épp ezért egy külön oldal hoztak létre ezek helyes használatáról. A szemléletesség kedvéért összeszedtek néhány korábban előjött, helytelen példát is.&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/about/press/brand-guidelines A Mapbox tájékoztató oldala a helyes logó- és névhasználatról]&lt;br /&gt;
&lt;br /&gt;
== Árazás ==&lt;br /&gt;
&lt;br /&gt;
A Mapbox jelenleg háromféle csomagban nyújtja a termékeit és szolgáltatásait. Ezek épp úgy lefedik a kisebb igényű, hobbicélú felhasználókat, mint a komoly ipari igényű céges felhasználókat.&lt;br /&gt;
&lt;br /&gt;
=== Csomagok összehasonlítása ===&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_pricing01.png|frame|center|link=https://www.mapbox.com/pricing/|alt=Mapbox csomagok árazása|A Mapbox csomagok árazása]]&lt;br /&gt;
&lt;br /&gt;
== Megvalósítás és működés a háttérben ==&lt;br /&gt;
&lt;br /&gt;
Három alapvető működési egység és feladatkör különíthető el a Mapbox működésében. Ezek a következők: &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;térkép&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;adat&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;elemzés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Térkép: Mapbox GL a rendereléshez ===&lt;br /&gt;
&lt;br /&gt;
A térkép megjelenítését a GPU végzi &amp;#039;&amp;#039;&amp;#039;Mapbox GL&amp;#039;&amp;#039;&amp;#039; segítségével. A legfontosabb jellemzői:&lt;br /&gt;
* A régi raszteres adatokkal (png csempék) szemben, itt vektoros adatok (vektoros csempék) vannak.&lt;br /&gt;
* A megjelenítéskor rugalmasan kezelhetőek a stílusok (style JSON segítségével).&lt;br /&gt;
* Kliens oldali renderelés (Open/Web GL alapon).&lt;br /&gt;
* Az adatok külön rétegek a térképen, nem képezik szerves és elválaszthatatlan részét.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_mapboxgl_03.png|frame|center|alt=Mapbox GL|Mapbox GL]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
  container: &amp;#039;map&amp;#039;,&lt;br /&gt;
  center: [47.47, 19.06],&lt;br /&gt;
  zoom: 15,&lt;br /&gt;
  style: style_object,&lt;br /&gt;
  hash: true&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/mapbox-gl-js/api Mapbox GL API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Adat: Vector Tile ===&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Vector Tile&amp;#039;&amp;#039;&amp;#039; egy nyílt szabvány webes térképek adatainak kódolásához.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_01.png|frame|center|alt=Vector Tile ábrázolása|Vector Tile ábrázolása]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_02.png|frame|center|alt=Vector Tile példa|Vector Tile példa]]&lt;br /&gt;
&lt;br /&gt;
=== Elemzés: Turf.js ===&lt;br /&gt;
&lt;br /&gt;
A térkép adatain elvégezhetünk különféle térinformatikai műveleteket és elemzéseket. Erre a célra szolgál a &amp;#039;&amp;#039;&amp;#039;Turj.js&amp;#039;&amp;#039;&amp;#039; nevű nyílt forráskódú JavaScript könyvtár, melyet a Mapbox is beépítetten használ.&lt;br /&gt;
Néhány ilyen térinformatikai művelet a Turf.js képességei közül:&lt;br /&gt;
* Méretarány, mérték, távolságmérés kezelése&lt;br /&gt;
* Transzformáció (például: buffer terület, unió, metszet és különbség képzés)&lt;br /&gt;
* Pontok, poligonok és multipoligonok kezelése&lt;br /&gt;
* Interpoláció&lt;br /&gt;
* Adat osztályozás&lt;br /&gt;
* Mértékegység konverzió&lt;br /&gt;
* Rácsok, hálózatok elemzése&lt;br /&gt;
* Aggregációs és statisztikai függvények&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_turf_03.png|frame|center|alt=Turf.js|Turf.js]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var poly1 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#0f0&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.574787, 35.594087],&lt;br /&gt;
      [-82.574787, 35.615581],&lt;br /&gt;
      [-82.545261, 35.615581],&lt;br /&gt;
      [-82.545261, 35.594087],&lt;br /&gt;
      [-82.574787, 35.594087]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
var poly2 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#00f&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.560024, 35.585153],&lt;br /&gt;
      [-82.560024, 35.602602],&lt;br /&gt;
      [-82.52964, 35.602602],&lt;br /&gt;
      [-82.52964, 35.585153],&lt;br /&gt;
      [-82.560024, 35.585153]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var union = turf.union(poly1, poly2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://turfjs.org/docs Turf.js API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Komponensek közötti kapcsolat ===&lt;br /&gt;
&lt;br /&gt;
A Mapbox, illetve annak webes Mapbox.js nevű megoldása, ezen különálló komponensek egyfajta &amp;quot;wrapper&amp;quot; megvalósítása az egyszerűbb és egységesebb kezelhetőség érdekében.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_rendereles_01.png|frame|center|alt=Megjelenítés, renderelés|Megjelenítés, renderelés]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_elemzes_01.png|frame|center|alt=Elemzés, szűrés|Elemzés, szűrés]]&lt;br /&gt;
&lt;br /&gt;
== Példák (Mapbox használata webes környezetben, azaz Mapbox.js) ==&lt;br /&gt;
=== Térkép (kezdő szint) ===&lt;br /&gt;
==== Minimális példa egy térkép megjelenítésére ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/simple_map.html A simple map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- A simple map --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initialize a map in an HTML element with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;A simple map&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
		.setView([47.47, 19.06], 15);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Világtérkép folytonosságának kikapcsolása ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/disable_world_wrapping.html Disable world wrapping]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable world wrapping --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Instead of loading tiles beyond -180 and 180, only show one copy of the world. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable world wrapping&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
		// These options apply to the tile layer in the map.&lt;br /&gt;
		tileLayer: {&lt;br /&gt;
			// This map option disables world wrapping. by default, it is false.&lt;br /&gt;
			continuousWorld: false,&lt;br /&gt;
			// This option disables loading tiles outside of the world bounds.&lt;br /&gt;
			noWrap: true&lt;br /&gt;
		}&lt;br /&gt;
	}).setView([40, 0], 2);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Változtatható alapréteg ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/toggling_baselayers.html Toggling baselayers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling baselayers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling between three different baselayers. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Toggling baselayers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
  var map = L.mapbox.map(&amp;#039;map&amp;#039;, null, {&lt;br /&gt;
      maxZoom: 18&lt;br /&gt;
  }).setView([22.76, -25.84], 3);&lt;br /&gt;
&lt;br /&gt;
  var layers = {&lt;br /&gt;
      Streets: L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;),&lt;br /&gt;
      Outdoors: L.mapbox.tileLayer(&amp;#039;mapbox.outdoors&amp;#039;),&lt;br /&gt;
      Satellite: L.mapbox.tileLayer(&amp;#039;mapbox.satellite&amp;#039;)&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  layers.Streets.addTo(map);&lt;br /&gt;
  L.control.layers(layers).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Térkép nagyításának és mozgatásának letiltása ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/disable_zooming_and_panning.html Disable zooming and panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable zooming and panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to disable zooming and panning with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable zooming and panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
  zoomControl: false&lt;br /&gt;
}).setView([41.0252, 28.9950], 11);&lt;br /&gt;
&lt;br /&gt;
// Disable drag and zoom handlers.&lt;br /&gt;
map.dragging.disable();&lt;br /&gt;
map.touchZoom.disable();&lt;br /&gt;
map.doubleClickZoom.disable();&lt;br /&gt;
map.scrollWheelZoom.disable();&lt;br /&gt;
map.keyboard.disable();&lt;br /&gt;
&lt;br /&gt;
// Disable tap handler, if present.&lt;br /&gt;
if (map.tap) map.tap.disable();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Megnézhető térképterület leszűkítése határokkal ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/using_maxbounds_to_restrict_map_panning.html Using maxBounds to restrict map panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using maxBounds to restrict map panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Preventing users from leaving an area on the map --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Using maxBounds to restrict map panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
// Construct a bounding box for this map that the user cannot&lt;br /&gt;
// move out of&lt;br /&gt;
var southWest = L.latLng(46.47, 17.06),&lt;br /&gt;
    northEast = L.latLng(48.47, 21.06),&lt;br /&gt;
    bounds = L.latLngBounds(southWest, northEast);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // set that bounding box as maxBounds to restrict moving the map&lt;br /&gt;
    // see full maxBounds documentation:&lt;br /&gt;
    // http://leafletjs.com/reference.html#map-maxbounds&lt;br /&gt;
    maxBounds: bounds,&lt;br /&gt;
    maxZoom: 19,&lt;br /&gt;
    minZoom: 10&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// zoom the map to that bounding box&lt;br /&gt;
map.fitBounds(bounds);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dupla kattintásra nagyítás az adott területre középre helyezve + aránymérték ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/double_click_to_zoom_+_scale_control.html Double click to zoom]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Double click to zoom --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listen for a double click event from a user and zoom in on the map. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Double click to zoom&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // Disable default double-click behavior.&lt;br /&gt;
    doubleClickZoom: false&lt;br /&gt;
})&lt;br /&gt;
.setView([46.695, 11.470], 4)&lt;br /&gt;
.on(&amp;#039;dblclick&amp;#039;, function(e) {&lt;br /&gt;
    // Zoom exactly to each double-clicked point&lt;br /&gt;
    map.setView(e.latlng, map.getZoom() + 1);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// L.control.scale() is included in Leaflet see&lt;br /&gt;
// https://www.mapbox.com/mapbox.js/api/v3.0.1/l-control-scale/&lt;br /&gt;
L.control.scale().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Töltésjelző megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/show_loading_screen.html Show loading screen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show loading screen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use events to show when features are loading and loaded by displaying and hiding a loading message --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show loading screen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * This is a very simple version of a &amp;#039;loading screen&amp;#039;: there are much&lt;br /&gt;
 * fancier ones you can use instead, like&lt;br /&gt;
 * http://codepen.io/collection/HtAne/&lt;br /&gt;
 */&lt;br /&gt;
#loader {&lt;br /&gt;
    position:absolute; top:0; bottom:0; width:100%;&lt;br /&gt;
    background:rgba(255, 255, 255, 1);&lt;br /&gt;
    transition:background 1s ease-out;&lt;br /&gt;
    -webkit-transition:background 1s ease-out;&lt;br /&gt;
}&lt;br /&gt;
#loader.done {&lt;br /&gt;
    background:rgba(255, 255, 255, 0);&lt;br /&gt;
}&lt;br /&gt;
#loader.hide {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
#loader .message {&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    left:50%;&lt;br /&gt;
    top:50%;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;loader&amp;#039;&amp;gt;&amp;lt;span class=&amp;#039;message&amp;#039;&amp;gt;loading&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var loader = document.getElementById(&amp;#039;loader&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 13);&lt;br /&gt;
&lt;br /&gt;
// Add a tile layer with a loading animation&lt;br /&gt;
&lt;br /&gt;
// start the loading screen&lt;br /&gt;
startLoading();&lt;br /&gt;
L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addTo(map) // add your tiles to the map&lt;br /&gt;
    .on(&amp;#039;load&amp;#039;, finishedLoading); // when the tiles load, remove the screen&lt;br /&gt;
&lt;br /&gt;
function startLoading() {&lt;br /&gt;
    loader.className = &amp;#039;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function finishedLoading() {&lt;br /&gt;
    // first, toggle the class &amp;#039;done&amp;#039;, which makes the loading screen&lt;br /&gt;
    // fade out&lt;br /&gt;
    loader.className = &amp;#039;done&amp;#039;;&lt;br /&gt;
    setTimeout(function() {&lt;br /&gt;
        // then, after a half-second, add the class &amp;#039;hide&amp;#039;, which hides&lt;br /&gt;
        // it completely and ensures that the user can interact with the&lt;br /&gt;
        // map again.&lt;br /&gt;
        loader.className = &amp;#039;hide&amp;#039;;&lt;br /&gt;
    }, 500);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jelölők a térképen ===&lt;br /&gt;
&lt;br /&gt;
==== Egyszerű jelölő ikonnal ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_without_geojson.html Marker without GeoJSON]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker without GeoJSON --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use L.mapbox.marker.icon to create a simple marker without GeoJSON. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Icon examples: https://www.mapbox.com/maki-icons/ --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker without GeoJSON&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 16);&lt;br /&gt;
&lt;br /&gt;
// L.marker is a low-level marker constructor in Leaflet.&lt;br /&gt;
L.marker([47.47, 19.06], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;roadblock&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;#fa0&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
L.marker([47.4725, 19.0625], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;college&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;64BA49&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő koordinátáinak megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/display_latitude_and_longitude_on_marker_movement.html Display latitude and longitude on marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display latitude and longitude on marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Drag the marker to a new location on a map to view it&amp;#039;s coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Display latitude and longitude on marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var coordinates = document.getElementById(&amp;#039;coordinates&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    }),&lt;br /&gt;
    draggable: true&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// every time the marker is dragged, update the coordinates container&lt;br /&gt;
marker.on(&amp;#039;dragend&amp;#039;, ondragend);&lt;br /&gt;
&lt;br /&gt;
// Set the initial marker coordinate on load.&lt;br /&gt;
ondragend();&lt;br /&gt;
&lt;br /&gt;
function ondragend() {&lt;br /&gt;
    var m = marker.getLatLng();&lt;br /&gt;
    coordinates.innerHTML = &amp;#039;Latitude: &amp;#039; + m.lat + &amp;#039;&amp;lt;br /&amp;gt;Longitude: &amp;#039; + m.lng;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőtől való távolság ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/distance_between_two_markers.html Distance between two markers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Distance between two markers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Calculate the distance between two points in meters using distanceTo. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Distance between two markers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-distance {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;distance&amp;#039; class=&amp;#039;ui-distance&amp;#039;&amp;gt;Click to place a marker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// Start with a fixed marker.&lt;br /&gt;
var fixedMarker = L.marker(new L.LatLng(47.4725, 19.0625), {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;ff8888&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).bindPopup(&amp;#039;ELTE Déli tömb&amp;#039;).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Store the fixedMarker coordinates in a variable.&lt;br /&gt;
var fc = fixedMarker.getLatLng();&lt;br /&gt;
&lt;br /&gt;
// Create a featureLayer that will hold a marker and linestring.&lt;br /&gt;
var featureLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// When a user clicks on the map we want to&lt;br /&gt;
// create a new L.featureGroup that will contain a&lt;br /&gt;
// marker placed where the user selected the map and&lt;br /&gt;
// a linestring that draws itself between the fixedMarkers&lt;br /&gt;
// coordinates and the newly placed marker.&lt;br /&gt;
map.on(&amp;#039;click&amp;#039;, function(ev) {&lt;br /&gt;
    // ev.latlng gives us the coordinates of&lt;br /&gt;
    // the spot clicked on the map.&lt;br /&gt;
    var c = ev.latlng;&lt;br /&gt;
&lt;br /&gt;
    var geojson = {&lt;br /&gt;
      type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
      features: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [c.lng, c.lat]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }, {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;LineString&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [&lt;br /&gt;
              [fc.lng, fc.lat],&lt;br /&gt;
              [c.lng, c.lat]&lt;br /&gt;
            ]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;stroke&amp;quot;: &amp;quot;#000&amp;quot;,&lt;br /&gt;
            &amp;quot;stroke-opacity&amp;quot;: 0.5,&lt;br /&gt;
            &amp;quot;stroke-width&amp;quot;: 4&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    featureLayer.setGeoJSON(geojson);&lt;br /&gt;
&lt;br /&gt;
    // Finally, print the distance between these two points&lt;br /&gt;
    // on the screen using distanceTo().&lt;br /&gt;
    var container = document.getElementById(&amp;#039;distance&amp;#039;);&lt;br /&gt;
    container.innerHTML = (fc.distanceTo(c)).toFixed(0) + &amp;#039;m&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Navigáció jelölőket tartalmazó menüvel ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_navigation_from_a_marker_menu.html Marker navigation from a marker menu]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Marker navigation from a marker menu --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Zoom to a marker and open its tooltip when a marker menu in a list is selected. --&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker navigation from a marker menu&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .info {&lt;br /&gt;
    background:#fff;&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:260px;&lt;br /&gt;
    top:10px;&lt;br /&gt;
    right:10px;&lt;br /&gt;
    border-radius:2px;&lt;br /&gt;
    }&lt;br /&gt;
    .info .item {&lt;br /&gt;
      display:block;&lt;br /&gt;
      border-bottom:1px solid #eee;&lt;br /&gt;
      padding:10px;&lt;br /&gt;
      text-decoration:none;&lt;br /&gt;
      }&lt;br /&gt;
      .info .item small { color:#888; }&lt;br /&gt;
      .info .item:hover,&lt;br /&gt;
      .info .item.active { background:#f8f8f8; }&lt;br /&gt;
      .info .item:last-child { border-bottom:none; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039; class=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;info&amp;#039; class=&amp;#039;info&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON({&lt;br /&gt;
  type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
  features: [&lt;br /&gt;
    {&lt;br /&gt;
      type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
      geometry: {&lt;br /&gt;
          type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
          coordinates: [19.0625, 47.4725]&lt;br /&gt;
      },&lt;br /&gt;
      properties: {&lt;br /&gt;
          title: &amp;#039;ELTE Déli tömb&amp;#039;,&lt;br /&gt;
          description: &amp;#039;ELTE IK&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-id&amp;#039;: &amp;#039;marker-1&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
          type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
          geometry: {&lt;br /&gt;
              type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
              coordinates: [19.0625, 47.4745]&lt;br /&gt;
          },&lt;br /&gt;
          properties: {&lt;br /&gt;
              title: &amp;#039;ELTE Északi tömb&amp;#039;,&lt;br /&gt;
              description: &amp;#039;ELTE TTK&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
          }&lt;br /&gt;
      },&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		  geometry: {&lt;br /&gt;
			  type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
			  coordinates: [19.063425, 47.505258]&lt;br /&gt;
		  },&lt;br /&gt;
		  properties: {&lt;br /&gt;
			  title: &amp;#039;Oktogon&amp;#039;,&lt;br /&gt;
			  description: &amp;#039;Oktogon metró állomás&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-symbol&amp;#039;: &amp;#039;rail-metro&amp;#039;&lt;br /&gt;
		  }&lt;br /&gt;
		}&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var info = document.getElementById(&amp;#039;info&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// Iterate through each feature layer item, build a&lt;br /&gt;
// marker menu item and enable a click event that pans to + opens&lt;br /&gt;
// a marker that&amp;#039;s associated to the marker item.&lt;br /&gt;
myLayer.eachLayer(function(marker) {&lt;br /&gt;
  var link = info.appendChild(document.createElement(&amp;#039;a&amp;#039;));&lt;br /&gt;
  link.className = &amp;#039;item&amp;#039;;&lt;br /&gt;
  link.href = &amp;#039;#&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  // Populate content from each markers object.&lt;br /&gt;
  link.innerHTML = marker.feature.properties.title +&lt;br /&gt;
    &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;#039; + marker.feature.properties.description + &amp;#039;&amp;lt;/small&amp;gt;&amp;#039;;&lt;br /&gt;
  link.onclick = function() {&lt;br /&gt;
    if (/active/.test(this.className)) {&lt;br /&gt;
      this.className = this.className.replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
    } else {&lt;br /&gt;
      var siblings = info.getElementsByTagName(&amp;#039;a&amp;#039;);&lt;br /&gt;
      for (var i = 0; i &amp;lt; siblings.length; i++) {&lt;br /&gt;
        siblings[i].className = siblings[i].className&lt;br /&gt;
          .replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
      };&lt;br /&gt;
      this.className += &amp;#039; active&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      // When a menu item is clicked, animate the map to center&lt;br /&gt;
      // its associated marker and open its popup.&lt;br /&gt;
      map.panTo(marker.getLatLng());&lt;br /&gt;
      marker.openPopup();&lt;br /&gt;
    }&lt;br /&gt;
    return false;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Csak a környező jelölők megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_radius_search.html Marker radius search]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker radius search --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the .distanceTo function to only show markers within a range --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker radius search&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.emerald&amp;#039;)&lt;br /&gt;
    .setView([40, -95], 4);&lt;br /&gt;
&lt;br /&gt;
var RADIUS = 500000;&lt;br /&gt;
var filterCircle = L.circle(L.latLng(40, -75), RADIUS, {&lt;br /&gt;
    opacity: 1,&lt;br /&gt;
    weight: 1,&lt;br /&gt;
    fillOpacity: 0.4&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
var csvLayer = omnivore.csv(&amp;#039;./data/airports.csv&amp;#039;, null, L.mapbox.featureLayer())&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;mousemove&amp;#039;, function(e) {&lt;br /&gt;
    filterCircle.setLatLng(e.latlng);&lt;br /&gt;
    csvLayer.setFilter(function showAirport(feature) {&lt;br /&gt;
        return e.latlng.distanceTo(L.latLng(&lt;br /&gt;
                feature.geometry.coordinates[1],&lt;br /&gt;
                feature.geometry.coordinates[0])) &amp;lt; RADIUS;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő mozgatása programozottan ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/marker_movement.html Marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Simple marker animation. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var t = 0;&lt;br /&gt;
window.setInterval(function() {&lt;br /&gt;
    // Making a lissajous curve just for fun.&lt;br /&gt;
    // Create your own animated path here.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        Math.cos(t * 0.5) * 10,&lt;br /&gt;
        Math.sin(t) * 10));&lt;br /&gt;
    t += 0.01; // Movement&lt;br /&gt;
}, 1); // Speed&lt;br /&gt;
&lt;br /&gt;
marker.addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő animálása geoJson vonalon ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/animate_a_marker_along_line.html Animate a marker along line]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Animate a marker along line --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Create a marker and animate its position along the length of a line by looking up its coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Animate a marker along line&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
// Generate a GeoJSON line. You could also load GeoJSON via AJAX&lt;br /&gt;
// or generate it some other way.&lt;br /&gt;
var geojson = { type: &amp;#039;LineString&amp;#039;, coordinates: [] };&lt;br /&gt;
var start = [0, 0];&lt;br /&gt;
var momentum = [2, 2];&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; 1000; i++) {&lt;br /&gt;
    start[0] += momentum[0];&lt;br /&gt;
    start[1] += momentum[1];&lt;br /&gt;
    if (start[1] &amp;gt; 30 || start[1] &amp;lt; -30) momentum[1] *= -1;&lt;br /&gt;
    if (start[0] &amp;gt; 90 || start[0] &amp;lt; -90) momentum[0] *= -1;&lt;br /&gt;
    geojson.coordinates.push(start.slice());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Add this generated geojson object to the map.&lt;br /&gt;
L.geoJson(geojson).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Create a counter with a value of 0.&lt;br /&gt;
var j = 0;&lt;br /&gt;
&lt;br /&gt;
// Create a marker and add it to the map.&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
  icon: L.mapbox.marker.icon({&lt;br /&gt;
    &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
  })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
tick();&lt;br /&gt;
function tick() {&lt;br /&gt;
    // Set the marker to be at the same point as one&lt;br /&gt;
    // of the segments or the line.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        geojson.coordinates[j][1],&lt;br /&gt;
        geojson.coordinates[j][0]));&lt;br /&gt;
&lt;br /&gt;
    // Move to the next point of the line&lt;br /&gt;
    // until `j` reaches the length of the array.&lt;br /&gt;
    if (++j &amp;lt; geojson.coordinates.length) setTimeout(tick, 20);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tippek, üzenetek, szövegek ===&lt;br /&gt;
&lt;br /&gt;
==== Egyedi jelölő tipp ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/custom_marker_tooltips.html Custom marker tooltips]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Custom marker tooltips --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to create a custom marker tooltip with style text or images using Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Custom marker tooltips&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.leaflet-popup-content img {&lt;br /&gt;
  max-width:100%;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geoJson = [{&lt;br /&gt;
    type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
    &amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.06, 47.47]},&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;image&amp;quot;: &amp;quot;http://hazai.kozep.bme.hu/wp-content/uploads/2013/06/00-Info-E-nyit%C3%B3.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;url&amp;quot;: &amp;quot;http://www.infopark.hu/&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        &amp;quot;city&amp;quot;: &amp;quot;Budapest - Infopark&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		&amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.063, 47.473]},&lt;br /&gt;
		&amp;quot;properties&amp;quot;: {&lt;br /&gt;
			&amp;quot;image&amp;quot;: &amp;quot;http://photos.wikimapia.org/p/00/02/45/33/03_big.jpg&amp;quot;,&lt;br /&gt;
			&amp;quot;url&amp;quot;: &amp;quot;https://www.elte.hu/&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
			&amp;quot;city&amp;quot;: &amp;quot;Budapest - ELTE Lágymányos&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
}];&lt;br /&gt;
&lt;br /&gt;
// Add custom popups to each using our custom feature properties&lt;br /&gt;
myLayer.on(&amp;#039;layeradd&amp;#039;, function(e) {&lt;br /&gt;
    var marker = e.layer,&lt;br /&gt;
        feature = marker.feature;&lt;br /&gt;
&lt;br /&gt;
    // Create custom popup content&lt;br /&gt;
    var popupContent =  &amp;#039;&amp;lt;a target=&amp;quot;_blank&amp;quot; class=&amp;quot;popup&amp;quot; href=&amp;quot;&amp;#039; + feature.properties.url + &amp;#039;&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
                            &amp;#039;&amp;lt;img src=&amp;quot;&amp;#039; + feature.properties.image + &amp;#039;&amp;quot; /&amp;gt;&amp;#039; +&lt;br /&gt;
                            feature.properties.city +&lt;br /&gt;
                        &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    // http://leafletjs.com/reference.html#popup&lt;br /&gt;
    marker.bindPopup(popupContent,{&lt;br /&gt;
        closeButton: false,&lt;br /&gt;
        minWidth: 480&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Add features to the map&lt;br /&gt;
myLayer.setGeoJSON(geoJson);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőhöz tartozó tipp megjelenítése egérrel ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/show_tooltips_on_hover.html Show tooltips on hover]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show tooltips on hover --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to show marker popups on hover with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show tooltips on hover&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geojson = {&lt;br /&gt;
    type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
    features: [{&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Bal alsó&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;small&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.05, 47.46]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Jobb felső&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#7ec9b1&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.07, 47.48]&lt;br /&gt;
        }&lt;br /&gt;
    }]&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON(geojson);&lt;br /&gt;
myLayer.on(&amp;#039;mouseover&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.openPopup();&lt;br /&gt;
});&lt;br /&gt;
myLayer.on(&amp;#039;mouseout&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.closePopup();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Helyek ===&lt;br /&gt;
&lt;br /&gt;
==== Hely keresése automatikus kiegészítéssel ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/geocoding_with_autocomplete.html Geocoding with autocomplete]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geocoding with autocomplete --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API to show real-time search suggestions. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geocoding with autocomplete&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addControl(L.mapbox.geocoderControl(&amp;#039;mapbox.places&amp;#039;, {&lt;br /&gt;
        autocomplete: true&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hely lekérdezése név alapján (Geocoderrel) ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/use_geocoder_to_set_map_position.html Use geocoder to set map position]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use geocoder to set map position --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API initially set map position on Chester, New Jersey. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Use geocoder to set map position&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geocoder = L.mapbox.geocoder(&amp;#039;mapbox.places&amp;#039;),&lt;br /&gt;
    map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;examples.map-h67hf2ic&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
geocoder.query(&amp;#039;Tab, HU&amp;#039;, showMap);&lt;br /&gt;
&lt;br /&gt;
function showMap(err, data) {&lt;br /&gt;
    // The geocoder can return an area, like a city, or a&lt;br /&gt;
    // point, like an address. Here we handle both cases,&lt;br /&gt;
    // by fitting the map bounds to an area or zooming to a point.&lt;br /&gt;
    if (data.lbounds) {&lt;br /&gt;
        map.fitBounds(data.lbounds);&lt;br /&gt;
    } else if (data.latlng) {&lt;br /&gt;
        map.setView([data.latlng[0], data.latlng[1]], 13);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Aktuális pozíció megjelenítése (megközelítőleg) ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/geolocation.html Geolocation]&lt;br /&gt;
&lt;br /&gt;
FONTOS: A Geolocation, azaz helymeghatározás használatához valid HTTPS kapcsolat szükséges.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geolocation --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Finding the user&amp;#039;s position --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geolocation&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.ui-button {&lt;br /&gt;
  background:#3887BE;&lt;br /&gt;
  color:#FFF;&lt;br /&gt;
  display:block;&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  top:50%;left:50%;&lt;br /&gt;
  width:160px;&lt;br /&gt;
  margin:-20px 0 0 -80px;&lt;br /&gt;
  z-index:100;&lt;br /&gt;
  text-align:center;&lt;br /&gt;
  padding:10px;&lt;br /&gt;
  border:1px solid rgba(0,0,0,0.4);&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
  .ui-button:hover {&lt;br /&gt;
    background:#3074a4;&lt;br /&gt;
    color:#fff;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;#039;#&amp;#039; id=&amp;#039;geolocate&amp;#039; class=&amp;#039;ui-button&amp;#039;&amp;gt;Find me&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geolocate = document.getElementById(&amp;#039;geolocate&amp;#039;);&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// This uses the HTML5 geolocation API, which is available on&lt;br /&gt;
// most mobile browsers and modern browsers, but not in Internet Explorer&lt;br /&gt;
//&lt;br /&gt;
// See this chart of compatibility for details:&lt;br /&gt;
// http://caniuse.com/#feat=geolocation&lt;br /&gt;
if (!navigator.geolocation) {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Geolocation is not available&amp;#039;;&lt;br /&gt;
} else {&lt;br /&gt;
    geolocate.onclick = function (e) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        e.stopPropagation();&lt;br /&gt;
        map.locate();&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Once we&amp;#039;ve got a position, zoom and center the map&lt;br /&gt;
// on it, and add a single marker.&lt;br /&gt;
map.on(&amp;#039;locationfound&amp;#039;, function(e) {&lt;br /&gt;
    map.fitBounds(e.bounds);&lt;br /&gt;
&lt;br /&gt;
    myLayer.setGeoJSON({&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [e.latlng.lng, e.latlng.lat]&lt;br /&gt;
        },&lt;br /&gt;
        properties: {&lt;br /&gt;
            &amp;#039;title&amp;#039;: &amp;#039;Here I am!&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#ff8888&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // And hide the geolocation button&lt;br /&gt;
    geolocate.parentNode.removeChild(geolocate);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// If the user chooses not to allow their location&lt;br /&gt;
// to be shared, display an error message.&lt;br /&gt;
map.on(&amp;#039;locationerror&amp;#039;, function() {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Position could not be found&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Útvonaltervezés (Autós, biciklis, gyalogos közlekedéssel) ===&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/directions.html Directions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Directions --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the mapbox-directions.js plugin to show results from the Mapbox Directions API --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Directions&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
#inputs,&lt;br /&gt;
#errors,&lt;br /&gt;
#directions {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 33.3333%;&lt;br /&gt;
    max-width: 300px;&lt;br /&gt;
    min-width: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#inputs {&lt;br /&gt;
    z-index: 10;&lt;br /&gt;
    top: 10px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#directions {&lt;br /&gt;
    z-index: 99;&lt;br /&gt;
    background: rgba(0,0,0,.8);&lt;br /&gt;
    top: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#errors {&lt;br /&gt;
    z-index: 8;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    border-radius: 0 0 3px 3px;&lt;br /&gt;
    background: rgba(0,0,0,.25);&lt;br /&gt;
    top: 90px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;#039;stylesheet&amp;#039; href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.css&amp;#039; type=&amp;#039;text/css&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;inputs&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;errors&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;directions&amp;#039;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;routes&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;instructions&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    zoomControl: false&lt;br /&gt;
}).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// move the attribution control out of the way&lt;br /&gt;
map.attributionControl.setPosition(&amp;#039;bottomleft&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// create the initial directions object, from which the layer&lt;br /&gt;
// and inputs will pull data.&lt;br /&gt;
var directions = L.mapbox.directions();&lt;br /&gt;
&lt;br /&gt;
var directionsLayer = L.mapbox.directions.layer(directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInputControl = L.mapbox.directions.inputControl(&amp;#039;inputs&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsErrorsControl = L.mapbox.directions.errorsControl(&amp;#039;errors&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsRoutesControl = L.mapbox.directions.routesControl(&amp;#039;routes&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInstructionsControl = L.mapbox.directions.instructionsControl(&amp;#039;instructions&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugin támogatás és a Mapbox ===&lt;br /&gt;
&lt;br /&gt;
==== Leaflet-MiniMap ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_minimap.html Leaflet-MiniMap]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet-MiniMap --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display a smaller navigable map using the Leaflet-MiniMap plugin. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet-MiniMap&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .on(&amp;#039;ready&amp;#039;, function() {&lt;br /&gt;
        new L.Control.MiniMap(L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;))&lt;br /&gt;
            .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Fullscreen ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_fullscreen.html Leaflet Fullscreen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Fullscreen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a control to enable a map to be in full screen mode. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Fullscreen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
L.control.fullscreen().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Heat ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/D9B9SN/leaflet_heat.html Leaflet Heat]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Heat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initially draw heatmap data on a map and allow a users mouse movement to draw their own. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Heat&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-heat/v0.1.3/leaflet-heat.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;./data/realworld.388.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.dark&amp;#039;)&lt;br /&gt;
        .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
    var heat = L.heatLayer(addressPoints, {maxZoom: 18}).addTo(map);&lt;br /&gt;
    var draw = false;&lt;br /&gt;
&lt;br /&gt;
    // add points on mouse move (except when interacting with the map)&lt;br /&gt;
    map.on({&lt;br /&gt;
        click:   function () { draw = !draw; },&lt;br /&gt;
        mousemove: function (e) {&lt;br /&gt;
            if (draw) {&lt;br /&gt;
                heat.addLatLng(e.latlng);&lt;br /&gt;
            }&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Markercluster ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/leaflet_markercluster.html Leaflet Markercluster]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Markercluster --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Leaflet Markercluster plugin --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Markercluster&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
        .setView([-37.82, 175.215], 14);&lt;br /&gt;
&lt;br /&gt;
    var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
    for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
        var a = addressPoints[i];&lt;br /&gt;
        var title = a[2];&lt;br /&gt;
        var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
            icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
            title: title&lt;br /&gt;
        });&lt;br /&gt;
        marker.bindPopup(title);&lt;br /&gt;
        markers.addLayer(marker);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    map.addLayer(markers);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Listing markers in clusters ====&lt;br /&gt;
&lt;br /&gt;
[http://gis.inf.elte.hu/giswiki/uploads/listing_markers_in_clusters.html Listing markers in clusters]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listing markers in clusters --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show a list of clustered markers by their coordinates on a map with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Listing markers in clusters&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  max-height:240px;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
  width:100px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([-37.82, 175.215], 14);;&lt;br /&gt;
&lt;br /&gt;
var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
    var a = addressPoints[i];&lt;br /&gt;
    var title = a[2];&lt;br /&gt;
    var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
        icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
        title: title&lt;br /&gt;
    });&lt;br /&gt;
    marker.bindPopup(title);&lt;br /&gt;
    markers.addLayer(marker);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.addLayer(markers);&lt;br /&gt;
&lt;br /&gt;
function onmove() {&lt;br /&gt;
    // Get the map bounds - the top-left and bottom-right locations.&lt;br /&gt;
    var inBounds = [],&lt;br /&gt;
        bounds = map.getBounds();&lt;br /&gt;
    markers.eachLayer(function(marker) {&lt;br /&gt;
        // For each marker, consider whether it is currently visible by comparing&lt;br /&gt;
        // with the current map bounds.&lt;br /&gt;
        if (bounds.contains(marker.getLatLng())) {&lt;br /&gt;
            inBounds.push(marker.options.title);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    // Display a list of markers.&lt;br /&gt;
    document.getElementById(&amp;#039;coordinates&amp;#039;).innerHTML = inBounds.join(&amp;#039;\n&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;move&amp;#039;, onmove);&lt;br /&gt;
&lt;br /&gt;
// call onmove off the bat so that the list is populated.&lt;br /&gt;
// otherwise, there will be no markers listed until the map is moved.&lt;br /&gt;
onmove();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználás, alkalmazás ==&lt;br /&gt;
&lt;br /&gt;
=== A Foursquare is Mapbox-ra váltott ===&lt;br /&gt;
A Foursquare 2012-ben lecserélte a Google térképszolgáltatására épülő webes felületét egy Mapbox alapú verzióra. Ezzel az újítással a felhasználók már egy színesebb, több információt tartalmazó térképpel találkozhatnak a Foursquare weboldalán. Mindezzel együtt a térképes adatok, képek szolgáltatását sem a Google Maps biztosítja, hanem a szintén népszerű OpenStreetMap. Az OpenStreetMap térképei a világ legtöbb pontján, így Magyarországon is nagyon pontosak és részletesek, és mivel nyílt rendszerről van szó, semmi sem akadályozza a folyamatos fejlődést.&lt;br /&gt;
&lt;br /&gt;
=== Mapbox és WordPress: látványos térképek WordPress oldalon kódolás nélkül ===&lt;br /&gt;
&lt;br /&gt;
==== Hivatalos bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[https://wordpress.org/plugins/mapbox Hivatalos bővítmény]&lt;br /&gt;
&lt;br /&gt;
Elavult verziójú, feltehetően nem fejlesztik tovább. &lt;br /&gt;
&lt;br /&gt;
==== Harmadik féltől származó bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Mapbox-for-wp-advanced-03.png|frame|left|Mapbox for Wordpress Advanced]]&lt;br /&gt;
&lt;br /&gt;
[https://hu.wordpress.org/plugins/mapbox-for-wp-advanced Harmadik féltől származó bővítmény]&lt;br /&gt;
&lt;br /&gt;
A Mapbox for Wordpress Advanced nevű WordPress bővítménnyel egyszerűen lehet térképeket hozzáadni egy WordPress oldalhoz. Ehhez nem kell mást tenni, mint letölteni a bővítményt az alábbi linken:&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com/download Mapbox for Wordpress Advanded letöltése]&lt;br /&gt;
&lt;br /&gt;
Majd a bővítményt feltölteni az adott WordPress oldalra és aktiválni. Ezután egy meglévő Mapbox felhasználói fiókon keresztül Mapbox Studio Classic használatával elkészíthető a kívánt térkép. Végül az elkészített térképhez tartozó Access Token-t és térkép ID-t meg kell adni a Mapbox for Wordpress Advanced bővítménynek.&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com Mapbox működés közben egy WordPress oldalon]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== További érdekességek ===&lt;br /&gt;
&lt;br /&gt;
==== Térkép a Twitter első 6 milliárd geotaggel ellátott fotója alapján ====&lt;br /&gt;
&lt;br /&gt;
Egy speciális világatlaszt készített a nagyvárosokról Eric Fischer, a Mapbox fejlesztője, aki a Twitter indulása óta megosztott összes geotaggel, vagyis földrajzi koordinátákkal ellátott több mint 6 milliárd bejegyzést használta fel hozzá. Első körben azt vizsgálta, hogy melyek azon régiók, kerületek, ahol a legsűrűbben fotóznak. &lt;br /&gt;
&lt;br /&gt;
[https://api.tiles.mapbox.com/v4/enf.c3a2de35/page.html?access_token=pk.eyJ1IjoiZW5mIiwiYSI6IkNJek92bnMifQ.xn2_Uj9RkYTGRuCGg4DXZQ#14/47.4967/19.0618 Twitteres geotaggel ellátott fotók térképe]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Locals-and-tourists-budapest-01-small.png|frame|left|Locals and Tourists - Budapest]]&lt;br /&gt;
&lt;br /&gt;
A projektet továbbgondolva Fischer megkülönböztette a képeket készítő helybelieket a turistáktól. Így létrejött a Locals and Tourists nevű projektje, melynek keretében már azt is elkülönítette, hogy a képeket helybeliek vagy turisták készíthették.&lt;br /&gt;
&lt;br /&gt;
Kék a helyi lakos, piros a turista&lt;br /&gt;
Fischer azokat a személyeket számolta helyi lakosnak, aki egy hónapnál hosszabb ideje készít földrajzi címkékkel rendelkező fotókat egy adott térségben: őket jelölte kék színnel. A pirossal kiemelt turista kategóriába azok tartoznak, akik egy hónapnál kevesebb ideig készítettek és osztottak meg egy helyszínről képeket. A sárga pontok alatt azokat kell érteni, akiknél mindez nem volt egyértelműen meghatározható.&lt;br /&gt;
&lt;br /&gt;
Budapest térképrészletére tekintve a legnépszerűbb turistacélpontok között a Hősök tere, a Városliget, a Lánchíd, és a Gellért-hegy is jól látható.&lt;br /&gt;
&lt;br /&gt;
Átdolgozott, teljesértékű interaktív világtérképre bővített verzió:&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/labs/twitter-gnip/locals/#13/47.4891/19.0476 Twitter Locals and Tourists project]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* [https://www.mapbox.com Mapbox]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Mapbox Mapbox Wiki]&lt;br /&gt;
* [https://hu.wordpress.org/ WordPress]&lt;br /&gt;
* [http://wiki.openstreetmap.org/wiki/Mapbox Openstreetmap Wiki]&lt;br /&gt;
* [https://www.google.hu/search?q=mapbox Google Mapbox]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Mapbox&amp;diff=566</id>
		<title>Mapbox</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Mapbox&amp;diff=566"/>
		<updated>2017-05-25T10:57:37Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Fájl:Mapbox-logo-color.png|center|300px|alt=Mapbox logo|Mapbox logo]]&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Mapbox&amp;#039;&amp;#039;&amp;#039; térképszolgáltatóknak kínál megoldásokat, illetve emellett térképek tervezéséhez és karbantartásához készít eszközöket. Ezek többnyire OpenStreetMap adatokat használnak. A Mapbox elkötelezett a nyílt megoldások mellett, de nem csak használja az adatokat, hanem többek között a Mapnik nyílt forrású térképrenderelő megoldás kódjának fő hozzájárulója is.&lt;br /&gt;
&lt;br /&gt;
== Mapbox, mint cég ==&lt;br /&gt;
&lt;br /&gt;
=== Történelem ===&lt;br /&gt;
&lt;br /&gt;
A cég startupként indult 2010-ben, Washingtonban. Dolgozóinak száma 2017-re elérte a 180 főt (az első negyedév végére 199 fő). Főként dizájnerek, szoftver fejlesztők és térképészek. Mára több, mint 5000 üzleti és 200000 ingyenes ügyfelük és felhasználójuk van. Olyan cégek valamint szervezetek használják a termékeiket, mint a Foursquare, Evernote, Pinterest, Github, The Weather Channel, Guardian, Financial Times, CNN, Greenpeace, National Geographic. Hisznek az open-source fejlesztésekben, ezért jelenleg 440-nél is több publikus repójuk van a GitHubon.&lt;br /&gt;
&lt;br /&gt;
=== Munkásság ===&lt;br /&gt;
&lt;br /&gt;
Egy olyan eljáráson dolgoznak, amivel a műholdképek minősége feljavítható. Ha most bárki megnyitja a Google Maps vagy a Bing Maps térképeit, átkapcsol műholdas nézetbe, akkor azt veheti észre, hogy az egész Földön mindenhol világos van, mindenhol nyár van és nincsenek felhők. Ha elkezdünk visszaközelíteni, akkor kiderül, hogy sokszor nagy kontraszteltérés van egymás mellett lévő sávok közt, feltűnnek felhők, a színek össze-vissza változnak és sok esetben a képek rossz minőségűek. Ez annak köszönhető, hogy ezek a térképek ezernyi kis darabból vannak összerakva. Előfordul, hogy az egymás melletti képek teljesen más forrásból származnak, más technológiával készültek, illetve időben akár évekre van egymástól két szomszédos darab. A Mapbox azt tűzte ki célul, hogy felszámolja az ilyen hibákat, megszabadulva a zavaró felhőktől és grafikai egyenetlenségektől. &lt;br /&gt;
Ennek megvalósításához az alapanyag a NASA Lance-Modis rendszerének műholdjáról származik. A Mapbox ezekből az adatokból ragadta ki a 2011. január 1. és 2012. december 31. közt készült két évnyi anyagokat. Ez 339 ezer darab 16 megapixeles képet jelent, ami több mint 5687 milliárd pixel összességében. A projekt célja, ezt a pixelmennyiséget lefésülni 5 milliárd pixelnyire, amiből összeáll egy részletes, de egységes glóbusz.&lt;br /&gt;
&lt;br /&gt;
=== Külön tájékoztató oldal a logójukról és a nevükről ===&lt;br /&gt;
&lt;br /&gt;
A cég precízen figyel a nevüket és logójukat érintő pontosságra. Épp ezért egy külön oldal hoztak létre ezek helyes használatáról. A szemléletesség kedvéért összeszedtek néhány korábban előjött, helytelen példát is.&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/about/press/brand-guidelines A Mapbox tájékoztató oldala a helyes logó- és névhasználatról]&lt;br /&gt;
&lt;br /&gt;
== Árazás ==&lt;br /&gt;
&lt;br /&gt;
A Mapbox jelenleg háromféle csomagban nyújtja a termékeit és szolgáltatásait. Ezek épp úgy lefedik a kisebb igényű, hobbicélú felhasználókat, mint a komoly ipari igényű céges felhasználókat.&lt;br /&gt;
&lt;br /&gt;
=== Csomagok összehasonlítása ===&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_pricing01.png|frame|center|link=https://www.mapbox.com/pricing/|alt=Mapbox csomagok árazása|A Mapbox csomagok árazása]]&lt;br /&gt;
&lt;br /&gt;
== Megvalósítás és működés a háttérben ==&lt;br /&gt;
&lt;br /&gt;
Három alapvető működési egység és feladatkör különíthető el a Mapbox működésében. Ezek a következők: &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;térkép&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;adat&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;elemzés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Térkép: Mapbox GL a rendereléshez ===&lt;br /&gt;
&lt;br /&gt;
A térkép megjelenítését a GPU végzi &amp;#039;&amp;#039;&amp;#039;Mapbox GL&amp;#039;&amp;#039;&amp;#039; segítségével. A legfontosabb jellemzői:&lt;br /&gt;
* A régi raszteres adatokkal (png csempék) szemben, itt vektoros adatok (vektoros csempék) vannak.&lt;br /&gt;
* A megjelenítéskor rugalmasan kezelhetőek a stílusok (style JSON segítségével).&lt;br /&gt;
* Kliens oldali renderelés (Open/Web GL alapon).&lt;br /&gt;
* Az adatok külön rétegek a térképen, nem képezik szerves és elválaszthatatlan részét.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_mapboxgl_03.png|frame|center|alt=Mapbox GL|Mapbox GL]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
  container: &amp;#039;map&amp;#039;,&lt;br /&gt;
  center: [47.47, 19.06],&lt;br /&gt;
  zoom: 15,&lt;br /&gt;
  style: style_object,&lt;br /&gt;
  hash: true&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/mapbox-gl-js/api Mapbox GL API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Adat: Vector Tile ===&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Vector Tile&amp;#039;&amp;#039;&amp;#039; egy nyílt szabvány webes térképek adatainak kódolásához.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_01.png|frame|center|alt=Vector Tile ábrázolása|Vector Tile ábrázolása]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_02.png|frame|center|alt=Vector Tile példa|Vector Tile példa]]&lt;br /&gt;
&lt;br /&gt;
=== Elemzés: Turf.js ===&lt;br /&gt;
&lt;br /&gt;
A térkép adatain elvégezhetünk különféle térinformatikai műveleteket és elemzéseket. Erre a célra szolgál a &amp;#039;&amp;#039;&amp;#039;Turj.js&amp;#039;&amp;#039;&amp;#039; nevű nyílt forráskódú JavaScript könyvtár, melyet a Mapbox is beépítetten használ.&lt;br /&gt;
Néhány ilyen térinformatikai művelet a Turf.js képességei közül:&lt;br /&gt;
* Méretarány, mérték, távolságmérés kezelése&lt;br /&gt;
* Transzformáció (például: buffer terület, unió, metszet és különbség képzés)&lt;br /&gt;
* Pontok, poligonok és multipoligonok kezelése&lt;br /&gt;
* Interpoláció&lt;br /&gt;
* Adat osztályozás&lt;br /&gt;
* Mértékegység konverzió&lt;br /&gt;
* Rácsok, hálózatok elemzése&lt;br /&gt;
* Aggregációs és statisztikai függvények&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_turf_03.png|frame|center|alt=Turf.js|Turf.js]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var poly1 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#0f0&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.574787, 35.594087],&lt;br /&gt;
      [-82.574787, 35.615581],&lt;br /&gt;
      [-82.545261, 35.615581],&lt;br /&gt;
      [-82.545261, 35.594087],&lt;br /&gt;
      [-82.574787, 35.594087]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
var poly2 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#00f&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.560024, 35.585153],&lt;br /&gt;
      [-82.560024, 35.602602],&lt;br /&gt;
      [-82.52964, 35.602602],&lt;br /&gt;
      [-82.52964, 35.585153],&lt;br /&gt;
      [-82.560024, 35.585153]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var union = turf.union(poly1, poly2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://turfjs.org/docs Turf.js API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Komponensek közötti kapcsolat ===&lt;br /&gt;
&lt;br /&gt;
A Mapbox, illetve annak webes Mapbox.js nevű megoldása, ezen különálló komponensek egyfajta &amp;quot;wrapper&amp;quot; megvalósítása az egyszerűbb és egységesebb kezelhetőség érdekében.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_rendereles_01.png|frame|center|alt=Megjelenítés, renderelés|Megjelenítés, renderelés]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_elemzes_01.png|frame|center|alt=Elemzés, szűrés|Elemzés, szűrés]]&lt;br /&gt;
&lt;br /&gt;
== Példák (Mapbox használata webes környezetben, azaz Mapbox.js) ==&lt;br /&gt;
=== Térkép (kezdő szint) ===&lt;br /&gt;
==== Minimális példa egy térkép megjelenítésére ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/simple_map.html A simple map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- A simple map --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initialize a map in an HTML element with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;A simple map&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
		.setView([47.47, 19.06], 15);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Világtérkép folytonosságának kikapcsolása ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/disable_world_wrapping.html Disable world wrapping]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable world wrapping --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Instead of loading tiles beyond -180 and 180, only show one copy of the world. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable world wrapping&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
		// These options apply to the tile layer in the map.&lt;br /&gt;
		tileLayer: {&lt;br /&gt;
			// This map option disables world wrapping. by default, it is false.&lt;br /&gt;
			continuousWorld: false,&lt;br /&gt;
			// This option disables loading tiles outside of the world bounds.&lt;br /&gt;
			noWrap: true&lt;br /&gt;
		}&lt;br /&gt;
	}).setView([40, 0], 2);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Változtatható alapréteg ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/toggling_baselayers.html Toggling baselayers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling baselayers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling between three different baselayers. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Toggling baselayers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
  var map = L.mapbox.map(&amp;#039;map&amp;#039;, null, {&lt;br /&gt;
      maxZoom: 18&lt;br /&gt;
  }).setView([22.76, -25.84], 3);&lt;br /&gt;
&lt;br /&gt;
  var layers = {&lt;br /&gt;
      Streets: L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;),&lt;br /&gt;
      Outdoors: L.mapbox.tileLayer(&amp;#039;mapbox.outdoors&amp;#039;),&lt;br /&gt;
      Satellite: L.mapbox.tileLayer(&amp;#039;mapbox.satellite&amp;#039;)&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  layers.Streets.addTo(map);&lt;br /&gt;
  L.control.layers(layers).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Térkép nagyításának és mozgatásának letiltása ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/disable_zooming_and_panning.html Disable zooming and panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable zooming and panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to disable zooming and panning with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable zooming and panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
  zoomControl: false&lt;br /&gt;
}).setView([41.0252, 28.9950], 11);&lt;br /&gt;
&lt;br /&gt;
// Disable drag and zoom handlers.&lt;br /&gt;
map.dragging.disable();&lt;br /&gt;
map.touchZoom.disable();&lt;br /&gt;
map.doubleClickZoom.disable();&lt;br /&gt;
map.scrollWheelZoom.disable();&lt;br /&gt;
map.keyboard.disable();&lt;br /&gt;
&lt;br /&gt;
// Disable tap handler, if present.&lt;br /&gt;
if (map.tap) map.tap.disable();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Megnézhető térképterület leszűkítése határokkal ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/using_maxbounds_to_restrict_map_panning.html Using maxBounds to restrict map panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using maxBounds to restrict map panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Preventing users from leaving an area on the map --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Using maxBounds to restrict map panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
// Construct a bounding box for this map that the user cannot&lt;br /&gt;
// move out of&lt;br /&gt;
var southWest = L.latLng(46.47, 17.06),&lt;br /&gt;
    northEast = L.latLng(48.47, 21.06),&lt;br /&gt;
    bounds = L.latLngBounds(southWest, northEast);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // set that bounding box as maxBounds to restrict moving the map&lt;br /&gt;
    // see full maxBounds documentation:&lt;br /&gt;
    // http://leafletjs.com/reference.html#map-maxbounds&lt;br /&gt;
    maxBounds: bounds,&lt;br /&gt;
    maxZoom: 19,&lt;br /&gt;
    minZoom: 10&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// zoom the map to that bounding box&lt;br /&gt;
map.fitBounds(bounds);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dupla kattintásra nagyítás az adott területre középre helyezve + aránymérték ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/double_click_to_zoom_+_scale_control.html Double click to zoom]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Double click to zoom --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listen for a double click event from a user and zoom in on the map. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Double click to zoom&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // Disable default double-click behavior.&lt;br /&gt;
    doubleClickZoom: false&lt;br /&gt;
})&lt;br /&gt;
.setView([46.695, 11.470], 4)&lt;br /&gt;
.on(&amp;#039;dblclick&amp;#039;, function(e) {&lt;br /&gt;
    // Zoom exactly to each double-clicked point&lt;br /&gt;
    map.setView(e.latlng, map.getZoom() + 1);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// L.control.scale() is included in Leaflet see&lt;br /&gt;
// https://www.mapbox.com/mapbox.js/api/v3.0.1/l-control-scale/&lt;br /&gt;
L.control.scale().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Töltésjelző megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/show_loading_screen.html Show loading screen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show loading screen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use events to show when features are loading and loaded by displaying and hiding a loading message --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show loading screen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * This is a very simple version of a &amp;#039;loading screen&amp;#039;: there are much&lt;br /&gt;
 * fancier ones you can use instead, like&lt;br /&gt;
 * http://codepen.io/collection/HtAne/&lt;br /&gt;
 */&lt;br /&gt;
#loader {&lt;br /&gt;
    position:absolute; top:0; bottom:0; width:100%;&lt;br /&gt;
    background:rgba(255, 255, 255, 1);&lt;br /&gt;
    transition:background 1s ease-out;&lt;br /&gt;
    -webkit-transition:background 1s ease-out;&lt;br /&gt;
}&lt;br /&gt;
#loader.done {&lt;br /&gt;
    background:rgba(255, 255, 255, 0);&lt;br /&gt;
}&lt;br /&gt;
#loader.hide {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
#loader .message {&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    left:50%;&lt;br /&gt;
    top:50%;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;loader&amp;#039;&amp;gt;&amp;lt;span class=&amp;#039;message&amp;#039;&amp;gt;loading&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var loader = document.getElementById(&amp;#039;loader&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 13);&lt;br /&gt;
&lt;br /&gt;
// Add a tile layer with a loading animation&lt;br /&gt;
&lt;br /&gt;
// start the loading screen&lt;br /&gt;
startLoading();&lt;br /&gt;
L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addTo(map) // add your tiles to the map&lt;br /&gt;
    .on(&amp;#039;load&amp;#039;, finishedLoading); // when the tiles load, remove the screen&lt;br /&gt;
&lt;br /&gt;
function startLoading() {&lt;br /&gt;
    loader.className = &amp;#039;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function finishedLoading() {&lt;br /&gt;
    // first, toggle the class &amp;#039;done&amp;#039;, which makes the loading screen&lt;br /&gt;
    // fade out&lt;br /&gt;
    loader.className = &amp;#039;done&amp;#039;;&lt;br /&gt;
    setTimeout(function() {&lt;br /&gt;
        // then, after a half-second, add the class &amp;#039;hide&amp;#039;, which hides&lt;br /&gt;
        // it completely and ensures that the user can interact with the&lt;br /&gt;
        // map again.&lt;br /&gt;
        loader.className = &amp;#039;hide&amp;#039;;&lt;br /&gt;
    }, 500);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jelölők a térképen ===&lt;br /&gt;
&lt;br /&gt;
==== Egyszerű jelölő ikonnal ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/marker_without_geojson.html Marker without GeoJSON]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker without GeoJSON --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use L.mapbox.marker.icon to create a simple marker without GeoJSON. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Icon examples: https://www.mapbox.com/maki-icons/ --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker without GeoJSON&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 16);&lt;br /&gt;
&lt;br /&gt;
// L.marker is a low-level marker constructor in Leaflet.&lt;br /&gt;
L.marker([47.47, 19.06], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;roadblock&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;#fa0&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
L.marker([47.4725, 19.0625], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;college&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;64BA49&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő koordinátáinak megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/display_latitude_and_longitude_on_marker_movement.html Display latitude and longitude on marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display latitude and longitude on marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Drag the marker to a new location on a map to view it&amp;#039;s coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Display latitude and longitude on marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var coordinates = document.getElementById(&amp;#039;coordinates&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    }),&lt;br /&gt;
    draggable: true&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// every time the marker is dragged, update the coordinates container&lt;br /&gt;
marker.on(&amp;#039;dragend&amp;#039;, ondragend);&lt;br /&gt;
&lt;br /&gt;
// Set the initial marker coordinate on load.&lt;br /&gt;
ondragend();&lt;br /&gt;
&lt;br /&gt;
function ondragend() {&lt;br /&gt;
    var m = marker.getLatLng();&lt;br /&gt;
    coordinates.innerHTML = &amp;#039;Latitude: &amp;#039; + m.lat + &amp;#039;&amp;lt;br /&amp;gt;Longitude: &amp;#039; + m.lng;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőtől való távolság ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/distance_between_two_markers.html Distance between two markers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Distance between two markers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Calculate the distance between two points in meters using distanceTo. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Distance between two markers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-distance {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;distance&amp;#039; class=&amp;#039;ui-distance&amp;#039;&amp;gt;Click to place a marker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// Start with a fixed marker.&lt;br /&gt;
var fixedMarker = L.marker(new L.LatLng(47.4725, 19.0625), {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;ff8888&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).bindPopup(&amp;#039;ELTE Déli tömb&amp;#039;).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Store the fixedMarker coordinates in a variable.&lt;br /&gt;
var fc = fixedMarker.getLatLng();&lt;br /&gt;
&lt;br /&gt;
// Create a featureLayer that will hold a marker and linestring.&lt;br /&gt;
var featureLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// When a user clicks on the map we want to&lt;br /&gt;
// create a new L.featureGroup that will contain a&lt;br /&gt;
// marker placed where the user selected the map and&lt;br /&gt;
// a linestring that draws itself between the fixedMarkers&lt;br /&gt;
// coordinates and the newly placed marker.&lt;br /&gt;
map.on(&amp;#039;click&amp;#039;, function(ev) {&lt;br /&gt;
    // ev.latlng gives us the coordinates of&lt;br /&gt;
    // the spot clicked on the map.&lt;br /&gt;
    var c = ev.latlng;&lt;br /&gt;
&lt;br /&gt;
    var geojson = {&lt;br /&gt;
      type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
      features: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [c.lng, c.lat]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }, {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;LineString&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [&lt;br /&gt;
              [fc.lng, fc.lat],&lt;br /&gt;
              [c.lng, c.lat]&lt;br /&gt;
            ]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;stroke&amp;quot;: &amp;quot;#000&amp;quot;,&lt;br /&gt;
            &amp;quot;stroke-opacity&amp;quot;: 0.5,&lt;br /&gt;
            &amp;quot;stroke-width&amp;quot;: 4&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    featureLayer.setGeoJSON(geojson);&lt;br /&gt;
&lt;br /&gt;
    // Finally, print the distance between these two points&lt;br /&gt;
    // on the screen using distanceTo().&lt;br /&gt;
    var container = document.getElementById(&amp;#039;distance&amp;#039;);&lt;br /&gt;
    container.innerHTML = (fc.distanceTo(c)).toFixed(0) + &amp;#039;m&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Navigáció jelölőket tartalmazó menüvel ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/marker_navigation_from_a_marker_menu.html Marker navigation from a marker menu]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Marker navigation from a marker menu --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Zoom to a marker and open its tooltip when a marker menu in a list is selected. --&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker navigation from a marker menu&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .info {&lt;br /&gt;
    background:#fff;&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:260px;&lt;br /&gt;
    top:10px;&lt;br /&gt;
    right:10px;&lt;br /&gt;
    border-radius:2px;&lt;br /&gt;
    }&lt;br /&gt;
    .info .item {&lt;br /&gt;
      display:block;&lt;br /&gt;
      border-bottom:1px solid #eee;&lt;br /&gt;
      padding:10px;&lt;br /&gt;
      text-decoration:none;&lt;br /&gt;
      }&lt;br /&gt;
      .info .item small { color:#888; }&lt;br /&gt;
      .info .item:hover,&lt;br /&gt;
      .info .item.active { background:#f8f8f8; }&lt;br /&gt;
      .info .item:last-child { border-bottom:none; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039; class=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;info&amp;#039; class=&amp;#039;info&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON({&lt;br /&gt;
  type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
  features: [&lt;br /&gt;
    {&lt;br /&gt;
      type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
      geometry: {&lt;br /&gt;
          type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
          coordinates: [19.0625, 47.4725]&lt;br /&gt;
      },&lt;br /&gt;
      properties: {&lt;br /&gt;
          title: &amp;#039;ELTE Déli tömb&amp;#039;,&lt;br /&gt;
          description: &amp;#039;ELTE IK&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-id&amp;#039;: &amp;#039;marker-1&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
          type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
          geometry: {&lt;br /&gt;
              type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
              coordinates: [19.0625, 47.4745]&lt;br /&gt;
          },&lt;br /&gt;
          properties: {&lt;br /&gt;
              title: &amp;#039;ELTE Északi tömb&amp;#039;,&lt;br /&gt;
              description: &amp;#039;ELTE TTK&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
          }&lt;br /&gt;
      },&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		  geometry: {&lt;br /&gt;
			  type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
			  coordinates: [19.063425, 47.505258]&lt;br /&gt;
		  },&lt;br /&gt;
		  properties: {&lt;br /&gt;
			  title: &amp;#039;Oktogon&amp;#039;,&lt;br /&gt;
			  description: &amp;#039;Oktogon metró állomás&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-symbol&amp;#039;: &amp;#039;rail-metro&amp;#039;&lt;br /&gt;
		  }&lt;br /&gt;
		}&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var info = document.getElementById(&amp;#039;info&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// Iterate through each feature layer item, build a&lt;br /&gt;
// marker menu item and enable a click event that pans to + opens&lt;br /&gt;
// a marker that&amp;#039;s associated to the marker item.&lt;br /&gt;
myLayer.eachLayer(function(marker) {&lt;br /&gt;
  var link = info.appendChild(document.createElement(&amp;#039;a&amp;#039;));&lt;br /&gt;
  link.className = &amp;#039;item&amp;#039;;&lt;br /&gt;
  link.href = &amp;#039;#&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  // Populate content from each markers object.&lt;br /&gt;
  link.innerHTML = marker.feature.properties.title +&lt;br /&gt;
    &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;#039; + marker.feature.properties.description + &amp;#039;&amp;lt;/small&amp;gt;&amp;#039;;&lt;br /&gt;
  link.onclick = function() {&lt;br /&gt;
    if (/active/.test(this.className)) {&lt;br /&gt;
      this.className = this.className.replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
    } else {&lt;br /&gt;
      var siblings = info.getElementsByTagName(&amp;#039;a&amp;#039;);&lt;br /&gt;
      for (var i = 0; i &amp;lt; siblings.length; i++) {&lt;br /&gt;
        siblings[i].className = siblings[i].className&lt;br /&gt;
          .replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
      };&lt;br /&gt;
      this.className += &amp;#039; active&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      // When a menu item is clicked, animate the map to center&lt;br /&gt;
      // its associated marker and open its popup.&lt;br /&gt;
      map.panTo(marker.getLatLng());&lt;br /&gt;
      marker.openPopup();&lt;br /&gt;
    }&lt;br /&gt;
    return false;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Csak a környező jelölők megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/marker_radius_search.html Marker radius search]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker radius search --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the .distanceTo function to only show markers within a range --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker radius search&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.emerald&amp;#039;)&lt;br /&gt;
    .setView([40, -95], 4);&lt;br /&gt;
&lt;br /&gt;
var RADIUS = 500000;&lt;br /&gt;
var filterCircle = L.circle(L.latLng(40, -75), RADIUS, {&lt;br /&gt;
    opacity: 1,&lt;br /&gt;
    weight: 1,&lt;br /&gt;
    fillOpacity: 0.4&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
var csvLayer = omnivore.csv(&amp;#039;./data/airports.csv&amp;#039;, null, L.mapbox.featureLayer())&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;mousemove&amp;#039;, function(e) {&lt;br /&gt;
    filterCircle.setLatLng(e.latlng);&lt;br /&gt;
    csvLayer.setFilter(function showAirport(feature) {&lt;br /&gt;
        return e.latlng.distanceTo(L.latLng(&lt;br /&gt;
                feature.geometry.coordinates[1],&lt;br /&gt;
                feature.geometry.coordinates[0])) &amp;lt; RADIUS;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő mozgatása programozottan ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/marker_movement.html Marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Simple marker animation. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var t = 0;&lt;br /&gt;
window.setInterval(function() {&lt;br /&gt;
    // Making a lissajous curve just for fun.&lt;br /&gt;
    // Create your own animated path here.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        Math.cos(t * 0.5) * 10,&lt;br /&gt;
        Math.sin(t) * 10));&lt;br /&gt;
    t += 0.01; // Movement&lt;br /&gt;
}, 1); // Speed&lt;br /&gt;
&lt;br /&gt;
marker.addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő animálása geoJson vonalon ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/animate_a_marker_along_line.html Animate a marker along line]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Animate a marker along line --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Create a marker and animate its position along the length of a line by looking up its coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Animate a marker along line&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
// Generate a GeoJSON line. You could also load GeoJSON via AJAX&lt;br /&gt;
// or generate it some other way.&lt;br /&gt;
var geojson = { type: &amp;#039;LineString&amp;#039;, coordinates: [] };&lt;br /&gt;
var start = [0, 0];&lt;br /&gt;
var momentum = [2, 2];&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; 1000; i++) {&lt;br /&gt;
    start[0] += momentum[0];&lt;br /&gt;
    start[1] += momentum[1];&lt;br /&gt;
    if (start[1] &amp;gt; 30 || start[1] &amp;lt; -30) momentum[1] *= -1;&lt;br /&gt;
    if (start[0] &amp;gt; 90 || start[0] &amp;lt; -90) momentum[0] *= -1;&lt;br /&gt;
    geojson.coordinates.push(start.slice());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Add this generated geojson object to the map.&lt;br /&gt;
L.geoJson(geojson).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Create a counter with a value of 0.&lt;br /&gt;
var j = 0;&lt;br /&gt;
&lt;br /&gt;
// Create a marker and add it to the map.&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
  icon: L.mapbox.marker.icon({&lt;br /&gt;
    &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
  })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
tick();&lt;br /&gt;
function tick() {&lt;br /&gt;
    // Set the marker to be at the same point as one&lt;br /&gt;
    // of the segments or the line.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        geojson.coordinates[j][1],&lt;br /&gt;
        geojson.coordinates[j][0]));&lt;br /&gt;
&lt;br /&gt;
    // Move to the next point of the line&lt;br /&gt;
    // until `j` reaches the length of the array.&lt;br /&gt;
    if (++j &amp;lt; geojson.coordinates.length) setTimeout(tick, 20);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tippek, üzenetek, szövegek ===&lt;br /&gt;
&lt;br /&gt;
==== Egyedi jelölő tipp ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/custom_marker_tooltips.html Custom marker tooltips]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Custom marker tooltips --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to create a custom marker tooltip with style text or images using Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Custom marker tooltips&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.leaflet-popup-content img {&lt;br /&gt;
  max-width:100%;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geoJson = [{&lt;br /&gt;
    type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
    &amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.06, 47.47]},&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;image&amp;quot;: &amp;quot;http://hazai.kozep.bme.hu/wp-content/uploads/2013/06/00-Info-E-nyit%C3%B3.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;url&amp;quot;: &amp;quot;http://www.infopark.hu/&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        &amp;quot;city&amp;quot;: &amp;quot;Budapest - Infopark&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		&amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.063, 47.473]},&lt;br /&gt;
		&amp;quot;properties&amp;quot;: {&lt;br /&gt;
			&amp;quot;image&amp;quot;: &amp;quot;http://photos.wikimapia.org/p/00/02/45/33/03_big.jpg&amp;quot;,&lt;br /&gt;
			&amp;quot;url&amp;quot;: &amp;quot;https://www.elte.hu/&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
			&amp;quot;city&amp;quot;: &amp;quot;Budapest - ELTE Lágymányos&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
}];&lt;br /&gt;
&lt;br /&gt;
// Add custom popups to each using our custom feature properties&lt;br /&gt;
myLayer.on(&amp;#039;layeradd&amp;#039;, function(e) {&lt;br /&gt;
    var marker = e.layer,&lt;br /&gt;
        feature = marker.feature;&lt;br /&gt;
&lt;br /&gt;
    // Create custom popup content&lt;br /&gt;
    var popupContent =  &amp;#039;&amp;lt;a target=&amp;quot;_blank&amp;quot; class=&amp;quot;popup&amp;quot; href=&amp;quot;&amp;#039; + feature.properties.url + &amp;#039;&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
                            &amp;#039;&amp;lt;img src=&amp;quot;&amp;#039; + feature.properties.image + &amp;#039;&amp;quot; /&amp;gt;&amp;#039; +&lt;br /&gt;
                            feature.properties.city +&lt;br /&gt;
                        &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    // http://leafletjs.com/reference.html#popup&lt;br /&gt;
    marker.bindPopup(popupContent,{&lt;br /&gt;
        closeButton: false,&lt;br /&gt;
        minWidth: 480&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Add features to the map&lt;br /&gt;
myLayer.setGeoJSON(geoJson);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőhöz tartozó tipp megjelenítése egérrel ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/show_tooltips_on_hover.html Show tooltips on hover]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show tooltips on hover --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to show marker popups on hover with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show tooltips on hover&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geojson = {&lt;br /&gt;
    type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
    features: [{&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Bal alsó&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;small&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.05, 47.46]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Jobb felső&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#7ec9b1&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.07, 47.48]&lt;br /&gt;
        }&lt;br /&gt;
    }]&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON(geojson);&lt;br /&gt;
myLayer.on(&amp;#039;mouseover&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.openPopup();&lt;br /&gt;
});&lt;br /&gt;
myLayer.on(&amp;#039;mouseout&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.closePopup();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Helyek ===&lt;br /&gt;
&lt;br /&gt;
==== Hely keresése automatikus kiegészítéssel ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/geocoding_with_autocomplete.html Geocoding with autocomplete]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geocoding with autocomplete --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API to show real-time search suggestions. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geocoding with autocomplete&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addControl(L.mapbox.geocoderControl(&amp;#039;mapbox.places&amp;#039;, {&lt;br /&gt;
        autocomplete: true&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hely lekérdezése név alapján (Geocoderrel) ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/use_geocoder_to_set_map_position.html Use geocoder to set map position]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use geocoder to set map position --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API initially set map position on Chester, New Jersey. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Use geocoder to set map position&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geocoder = L.mapbox.geocoder(&amp;#039;mapbox.places&amp;#039;),&lt;br /&gt;
    map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;examples.map-h67hf2ic&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
geocoder.query(&amp;#039;Tab, HU&amp;#039;, showMap);&lt;br /&gt;
&lt;br /&gt;
function showMap(err, data) {&lt;br /&gt;
    // The geocoder can return an area, like a city, or a&lt;br /&gt;
    // point, like an address. Here we handle both cases,&lt;br /&gt;
    // by fitting the map bounds to an area or zooming to a point.&lt;br /&gt;
    if (data.lbounds) {&lt;br /&gt;
        map.fitBounds(data.lbounds);&lt;br /&gt;
    } else if (data.latlng) {&lt;br /&gt;
        map.setView([data.latlng[0], data.latlng[1]], 13);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Aktuális pozíció megjelenítése (megközelítőleg) ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/geolocation.html Geolocation]&lt;br /&gt;
&lt;br /&gt;
FONTOS: A Geolocation, azaz helymeghatározás használatához valid HTTPS kapcsolat szükséges.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geolocation --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Finding the user&amp;#039;s position --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geolocation&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.ui-button {&lt;br /&gt;
  background:#3887BE;&lt;br /&gt;
  color:#FFF;&lt;br /&gt;
  display:block;&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  top:50%;left:50%;&lt;br /&gt;
  width:160px;&lt;br /&gt;
  margin:-20px 0 0 -80px;&lt;br /&gt;
  z-index:100;&lt;br /&gt;
  text-align:center;&lt;br /&gt;
  padding:10px;&lt;br /&gt;
  border:1px solid rgba(0,0,0,0.4);&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
  .ui-button:hover {&lt;br /&gt;
    background:#3074a4;&lt;br /&gt;
    color:#fff;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;#039;#&amp;#039; id=&amp;#039;geolocate&amp;#039; class=&amp;#039;ui-button&amp;#039;&amp;gt;Find me&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geolocate = document.getElementById(&amp;#039;geolocate&amp;#039;);&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// This uses the HTML5 geolocation API, which is available on&lt;br /&gt;
// most mobile browsers and modern browsers, but not in Internet Explorer&lt;br /&gt;
//&lt;br /&gt;
// See this chart of compatibility for details:&lt;br /&gt;
// http://caniuse.com/#feat=geolocation&lt;br /&gt;
if (!navigator.geolocation) {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Geolocation is not available&amp;#039;;&lt;br /&gt;
} else {&lt;br /&gt;
    geolocate.onclick = function (e) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        e.stopPropagation();&lt;br /&gt;
        map.locate();&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Once we&amp;#039;ve got a position, zoom and center the map&lt;br /&gt;
// on it, and add a single marker.&lt;br /&gt;
map.on(&amp;#039;locationfound&amp;#039;, function(e) {&lt;br /&gt;
    map.fitBounds(e.bounds);&lt;br /&gt;
&lt;br /&gt;
    myLayer.setGeoJSON({&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [e.latlng.lng, e.latlng.lat]&lt;br /&gt;
        },&lt;br /&gt;
        properties: {&lt;br /&gt;
            &amp;#039;title&amp;#039;: &amp;#039;Here I am!&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#ff8888&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // And hide the geolocation button&lt;br /&gt;
    geolocate.parentNode.removeChild(geolocate);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// If the user chooses not to allow their location&lt;br /&gt;
// to be shared, display an error message.&lt;br /&gt;
map.on(&amp;#039;locationerror&amp;#039;, function() {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Position could not be found&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Útvonaltervezés (Autós, biciklis, gyalogos közlekedéssel) ===&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/directions.html Directions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Directions --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the mapbox-directions.js plugin to show results from the Mapbox Directions API --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Directions&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
#inputs,&lt;br /&gt;
#errors,&lt;br /&gt;
#directions {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 33.3333%;&lt;br /&gt;
    max-width: 300px;&lt;br /&gt;
    min-width: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#inputs {&lt;br /&gt;
    z-index: 10;&lt;br /&gt;
    top: 10px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#directions {&lt;br /&gt;
    z-index: 99;&lt;br /&gt;
    background: rgba(0,0,0,.8);&lt;br /&gt;
    top: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#errors {&lt;br /&gt;
    z-index: 8;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    border-radius: 0 0 3px 3px;&lt;br /&gt;
    background: rgba(0,0,0,.25);&lt;br /&gt;
    top: 90px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;#039;stylesheet&amp;#039; href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.css&amp;#039; type=&amp;#039;text/css&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;inputs&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;errors&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;directions&amp;#039;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;routes&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;instructions&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    zoomControl: false&lt;br /&gt;
}).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// move the attribution control out of the way&lt;br /&gt;
map.attributionControl.setPosition(&amp;#039;bottomleft&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// create the initial directions object, from which the layer&lt;br /&gt;
// and inputs will pull data.&lt;br /&gt;
var directions = L.mapbox.directions();&lt;br /&gt;
&lt;br /&gt;
var directionsLayer = L.mapbox.directions.layer(directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInputControl = L.mapbox.directions.inputControl(&amp;#039;inputs&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsErrorsControl = L.mapbox.directions.errorsControl(&amp;#039;errors&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsRoutesControl = L.mapbox.directions.routesControl(&amp;#039;routes&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInstructionsControl = L.mapbox.directions.instructionsControl(&amp;#039;instructions&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugin támogatás és a Mapbox ===&lt;br /&gt;
&lt;br /&gt;
==== Leaflet-MiniMap ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/leaflet_minimap.html Leaflet-MiniMap]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet-MiniMap --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display a smaller navigable map using the Leaflet-MiniMap plugin. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet-MiniMap&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .on(&amp;#039;ready&amp;#039;, function() {&lt;br /&gt;
        new L.Control.MiniMap(L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;))&lt;br /&gt;
            .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Fullscreen ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/leaflet_fullscreen.html Leaflet Fullscreen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Fullscreen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a control to enable a map to be in full screen mode. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Fullscreen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
L.control.fullscreen().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Heat ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/leaflet_heat.html Leaflet Heat]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Heat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initially draw heatmap data on a map and allow a users mouse movement to draw their own. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Heat&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-heat/v0.1.3/leaflet-heat.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;./data/realworld.388.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.dark&amp;#039;)&lt;br /&gt;
        .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
    var heat = L.heatLayer(addressPoints, {maxZoom: 18}).addTo(map);&lt;br /&gt;
    var draw = false;&lt;br /&gt;
&lt;br /&gt;
    // add points on mouse move (except when interacting with the map)&lt;br /&gt;
    map.on({&lt;br /&gt;
        click:   function () { draw = !draw; },&lt;br /&gt;
        mousemove: function (e) {&lt;br /&gt;
            if (draw) {&lt;br /&gt;
                heat.addLatLng(e.latlng);&lt;br /&gt;
            }&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Markercluster ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/leaflet_markercluster.html Leaflet Markercluster]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Markercluster --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Leaflet Markercluster plugin --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Markercluster&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
        .setView([-37.82, 175.215], 14);&lt;br /&gt;
&lt;br /&gt;
    var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
    for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
        var a = addressPoints[i];&lt;br /&gt;
        var title = a[2];&lt;br /&gt;
        var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
            icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
            title: title&lt;br /&gt;
        });&lt;br /&gt;
        marker.bindPopup(title);&lt;br /&gt;
        markers.addLayer(marker);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    map.addLayer(markers);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Listing markers in clusters ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/listing_markers_in_clusters.html Listing markers in clusters]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listing markers in clusters --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show a list of clustered markers by their coordinates on a map with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Listing markers in clusters&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  max-height:240px;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
  width:100px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([-37.82, 175.215], 14);;&lt;br /&gt;
&lt;br /&gt;
var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
    var a = addressPoints[i];&lt;br /&gt;
    var title = a[2];&lt;br /&gt;
    var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
        icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
        title: title&lt;br /&gt;
    });&lt;br /&gt;
    marker.bindPopup(title);&lt;br /&gt;
    markers.addLayer(marker);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.addLayer(markers);&lt;br /&gt;
&lt;br /&gt;
function onmove() {&lt;br /&gt;
    // Get the map bounds - the top-left and bottom-right locations.&lt;br /&gt;
    var inBounds = [],&lt;br /&gt;
        bounds = map.getBounds();&lt;br /&gt;
    markers.eachLayer(function(marker) {&lt;br /&gt;
        // For each marker, consider whether it is currently visible by comparing&lt;br /&gt;
        // with the current map bounds.&lt;br /&gt;
        if (bounds.contains(marker.getLatLng())) {&lt;br /&gt;
            inBounds.push(marker.options.title);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    // Display a list of markers.&lt;br /&gt;
    document.getElementById(&amp;#039;coordinates&amp;#039;).innerHTML = inBounds.join(&amp;#039;\n&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;move&amp;#039;, onmove);&lt;br /&gt;
&lt;br /&gt;
// call onmove off the bat so that the list is populated.&lt;br /&gt;
// otherwise, there will be no markers listed until the map is moved.&lt;br /&gt;
onmove();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználás, alkalmazás ==&lt;br /&gt;
&lt;br /&gt;
=== A Foursquare is Mapbox-ra váltott ===&lt;br /&gt;
A Foursquare 2012-ben lecserélte a Google térképszolgáltatására épülő webes felületét egy Mapbox alapú verzióra. Ezzel az újítással a felhasználók már egy színesebb, több információt tartalmazó térképpel találkozhatnak a Foursquare weboldalán. Mindezzel együtt a térképes adatok, képek szolgáltatását sem a Google Maps biztosítja, hanem a szintén népszerű OpenStreetMap. Az OpenStreetMap térképei a világ legtöbb pontján, így Magyarországon is nagyon pontosak és részletesek, és mivel nyílt rendszerről van szó, semmi sem akadályozza a folyamatos fejlődést.&lt;br /&gt;
&lt;br /&gt;
=== Mapbox és WordPress: látványos térképek WordPress oldalon kódolás nélkül ===&lt;br /&gt;
&lt;br /&gt;
==== Hivatalos bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[https://wordpress.org/plugins/mapbox Hivatalos bővítmény]&lt;br /&gt;
&lt;br /&gt;
Elavult verziójú, feltehetően nem fejlesztik tovább. &lt;br /&gt;
&lt;br /&gt;
==== Harmadik féltől származó bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Mapbox-for-wp-advanced-03.png|frame|left|Mapbox for Wordpress Advanced]]&lt;br /&gt;
&lt;br /&gt;
[https://hu.wordpress.org/plugins/mapbox-for-wp-advanced Harmadik féltől származó bővítmény]&lt;br /&gt;
&lt;br /&gt;
A Mapbox for Wordpress Advanced nevű WordPress bővítménnyel egyszerűen lehet térképeket hozzáadni egy WordPress oldalhoz. Ehhez nem kell mást tenni, mint letölteni a bővítményt az alábbi linken:&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com/download Mapbox for Wordpress Advanded letöltése]&lt;br /&gt;
&lt;br /&gt;
Majd a bővítményt feltölteni az adott WordPress oldalra és aktiválni. Ezután egy meglévő Mapbox felhasználói fiókon keresztül Mapbox Studio Classic használatával elkészíthető a kívánt térkép. Végül az elkészített térképhez tartozó Access Token-t és térkép ID-t meg kell adni a Mapbox for Wordpress Advanced bővítménynek.&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com Mapbox működés közben egy WordPress oldalon]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== További érdekességek ===&lt;br /&gt;
&lt;br /&gt;
==== Térkép a Twitter első 6 milliárd geotaggel ellátott fotója alapján ====&lt;br /&gt;
&lt;br /&gt;
Egy speciális világatlaszt készített a nagyvárosokról Eric Fischer, a Mapbox fejlesztője, aki a Twitter indulása óta megosztott összes geotaggel, vagyis földrajzi koordinátákkal ellátott több mint 6 milliárd bejegyzést használta fel hozzá. Első körben azt vizsgálta, hogy melyek azon régiók, kerületek, ahol a legsűrűbben fotóznak. &lt;br /&gt;
&lt;br /&gt;
[https://api.tiles.mapbox.com/v4/enf.c3a2de35/page.html?access_token=pk.eyJ1IjoiZW5mIiwiYSI6IkNJek92bnMifQ.xn2_Uj9RkYTGRuCGg4DXZQ#14/47.4967/19.0618 Twitteres geotaggel ellátott fotók térképe]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Locals-and-tourists-budapest-01-small.png|frame|left|Locals and Tourists - Budapest]]&lt;br /&gt;
&lt;br /&gt;
A projektet továbbgondolva Fischer megkülönböztette a képeket készítő helybelieket a turistáktól. Így létrejött a Locals and Tourists nevű projektje, melynek keretében már azt is elkülönítette, hogy a képeket helybeliek vagy turisták készíthették.&lt;br /&gt;
&lt;br /&gt;
Kék a helyi lakos, piros a turista&lt;br /&gt;
Fischer azokat a személyeket számolta helyi lakosnak, aki egy hónapnál hosszabb ideje készít földrajzi címkékkel rendelkező fotókat egy adott térségben: őket jelölte kék színnel. A pirossal kiemelt turista kategóriába azok tartoznak, akik egy hónapnál kevesebb ideig készítettek és osztottak meg egy helyszínről képeket. A sárga pontok alatt azokat kell érteni, akiknél mindez nem volt egyértelműen meghatározható.&lt;br /&gt;
&lt;br /&gt;
Budapest térképrészletére tekintve a legnépszerűbb turistacélpontok között a Hősök tere, a Városliget, a Lánchíd, és a Gellért-hegy is jól látható.&lt;br /&gt;
&lt;br /&gt;
Átdolgozott, teljesértékű interaktív világtérképre bővített verzió:&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/labs/twitter-gnip/locals/#13/47.4891/19.0476 Twitter Locals and Tourists project]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* [https://www.mapbox.com Mapbox]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Mapbox Mapbox Wiki]&lt;br /&gt;
* [https://hu.wordpress.org/ WordPress]&lt;br /&gt;
* [http://wiki.openstreetmap.org/wiki/Mapbox Openstreetmap Wiki]&lt;br /&gt;
* [https://www.google.hu/search?q=mapbox Google Mapbox]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Mapbox&amp;diff=565</id>
		<title>Mapbox</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Mapbox&amp;diff=565"/>
		<updated>2017-05-25T10:51:27Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Fájl:Mapbox-logo-color.png|center|300px|alt=Mapbox logo|Mapbox logo]]&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Mapbox&amp;#039;&amp;#039;&amp;#039; térképszolgáltatóknak kínál megoldásokat, illetve emellett térképek tervezéséhez és karbantartásához készít eszközöket. Ezek többnyire OpenStreetMap adatokat használnak. A Mapbox elkötelezett a nyílt megoldások mellett, de nem csak használja az adatokat, hanem többek között a Mapnik nyílt forrású térképrenderelő megoldás kódjának fő hozzájárulója is.&lt;br /&gt;
&lt;br /&gt;
== Mapbox, mint cég ==&lt;br /&gt;
&lt;br /&gt;
=== Történelem ===&lt;br /&gt;
&lt;br /&gt;
A cég startupként indult 2010-ben, Washingtonban. Dolgozóinak száma 2017-re elérte a 180 főt (az első negyedév végére 199 fő). Főként dizájnerek, szoftver fejlesztők és térképészek. Mára több, mint 5000 üzleti és 200000 ingyenes ügyfelük és felhasználójuk van. Olyan cégek valamint szervezetek használják a termékeiket, mint a Foursquare, Evernote, Pinterest, Github, The Weather Channel, Guardian, Financial Times, CNN, Greenpeace, National Geographic. Hisznek az open-source fejlesztésekben, ezért jelenleg 440-nél is több publikus repójuk van a GitHubon.&lt;br /&gt;
&lt;br /&gt;
=== Munkásság ===&lt;br /&gt;
&lt;br /&gt;
Egy olyan eljáráson dolgoznak, amivel a műholdképek minősége feljavítható. Ha most bárki megnyitja a Google Maps vagy a Bing Maps térképeit, átkapcsol műholdas nézetbe, akkor azt veheti észre, hogy az egész Földön mindenhol világos van, mindenhol nyár van és nincsenek felhők. Ha elkezdünk visszaközelíteni, akkor kiderül, hogy sokszor nagy kontraszteltérés van egymás mellett lévő sávok közt, feltűnnek felhők, a színek össze-vissza változnak és sok esetben a képek rossz minőségűek. Ez annak köszönhető, hogy ezek a térképek ezernyi kis darabból vannak összerakva. Előfordul, hogy az egymás melletti képek teljesen más forrásból származnak, más technológiával készültek, illetve időben akár évekre van egymástól két szomszédos darab. A Mapbox azt tűzte ki célul, hogy felszámolja az ilyen hibákat, megszabadulva a zavaró felhőktől és grafikai egyenetlenségektől. &lt;br /&gt;
Ennek megvalósításához az alapanyag a NASA Lance-Modis rendszerének műholdjáról származik. A Mapbox ezekből az adatokból ragadta ki a 2011. január 1. és 2012. december 31. közt készült két évnyi anyagokat. Ez 339 ezer darab 16 megapixeles képet jelent, ami több mint 5687 milliárd pixel összességében. A projekt célja, ezt a pixelmennyiséget lefésülni 5 milliárd pixelnyire, amiből összeáll egy részletes, de egységes glóbusz.&lt;br /&gt;
&lt;br /&gt;
=== Külön tájékoztató oldal a logójukról és a nevükről ===&lt;br /&gt;
&lt;br /&gt;
A cég precízen figyel a nevüket és logójukat érintő pontosságra. Épp ezért egy külön oldal hoztak létre ezek helyes használatáról. A szemléletesség kedvéért összeszedtek néhány korábban előjött, helytelen példát is.&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/about/press/brand-guidelines A Mapbox tájékoztató oldala a helyes logó- és névhasználatról]&lt;br /&gt;
&lt;br /&gt;
== Árazás ==&lt;br /&gt;
&lt;br /&gt;
A Mapbox jelenleg háromféle csomagban nyújtja a termékeit és szolgáltatásait. Ezek épp úgy lefedik a kisebb igényű, hobbicélú felhasználókat, mint a komoly ipari igényű céges felhasználókat.&lt;br /&gt;
&lt;br /&gt;
=== Csomagok összehasonlítása ===&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_pricing01.png|frame|center|link=https://www.mapbox.com/pricing/|alt=Mapbox csomagok árazása|A Mapbox csomagok árazása]]&lt;br /&gt;
&lt;br /&gt;
== Megvalósítás és működés a háttérben ==&lt;br /&gt;
&lt;br /&gt;
Három alapvető működési egység és feladatkör különíthető el a Mapbox működésében. Ezek a következők: &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;térkép&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;adat&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;elemzés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Térkép: Mapbox GL a rendereléshez ===&lt;br /&gt;
&lt;br /&gt;
A térkép megjelenítését a GPU végzi &amp;#039;&amp;#039;&amp;#039;Mapbox GL&amp;#039;&amp;#039;&amp;#039; segítségével. A legfontosabb jellemzői:&lt;br /&gt;
* A régi raszteres adatokkal (png csempék) szemben, itt vektoros adatok (vektoros csempék) vannak.&lt;br /&gt;
* A megjelenítéskor rugalmasan kezelhetőek a stílusok (style JSON segítségével).&lt;br /&gt;
* Kliens oldali renderelés (Open/Web GL alapon).&lt;br /&gt;
* Az adatok külön rétegek a térképen, nem képezik szerves és elválaszthatatlan részét.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_mapboxgl_03.png|frame|center|alt=Mapbox GL|Mapbox GL]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var map = new mapboxgl.Map({&lt;br /&gt;
  container: &amp;#039;map&amp;#039;,&lt;br /&gt;
  center: [47.47, 19.06],&lt;br /&gt;
  zoom: 15,&lt;br /&gt;
  style: style_object,&lt;br /&gt;
  hash: true&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/mapbox-gl-js/api Mapbox GL API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Adat: Vector Tile ===&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Vector Tile&amp;#039;&amp;#039;&amp;#039; egy nyílt szabvány webes térképek adatainak kódolásához.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_01.png|frame|center|alt=Vector Tile ábrázolása|Vector Tile ábrázolása]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_vectortile_02.png|frame|center|alt=Vector Tile példa|Vector Tile példa]]&lt;br /&gt;
&lt;br /&gt;
=== Elemzés: Turf.js ===&lt;br /&gt;
&lt;br /&gt;
A térkép adatain elvégezhetünk különféle térinformatikai műveleteket és elemzéseket. Erre a célra szolgál a &amp;#039;&amp;#039;&amp;#039;Turj.js&amp;#039;&amp;#039;&amp;#039; nevű nyílt forráskódú JavaScript könyvtár, melyet a Mapbox is beépítetten használ.&lt;br /&gt;
Néhány ilyen térinformatikai művelet a Turf.js képességei közül:&lt;br /&gt;
* Méretarány, mérték, távolságmérés kezelése&lt;br /&gt;
* Transzformáció (például: buffer terület, unió, metszet és különbség képzés)&lt;br /&gt;
* Pontok, poligonok és multipoligonok kezelése&lt;br /&gt;
* Interpoláció&lt;br /&gt;
* Adat osztályozás&lt;br /&gt;
* Mértékegység konverzió&lt;br /&gt;
* Rácsok, hálózatok elemzése&lt;br /&gt;
* Aggregációs és statisztikai függvények&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_turf_03.png|frame|center|alt=Turf.js|Turf.js]]&lt;br /&gt;
&lt;br /&gt;
Példa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
var poly1 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#0f0&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.574787, 35.594087],&lt;br /&gt;
      [-82.574787, 35.615581],&lt;br /&gt;
      [-82.545261, 35.615581],&lt;br /&gt;
      [-82.545261, 35.594087],&lt;br /&gt;
      [-82.574787, 35.594087]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
var poly2 = {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;fill&amp;quot;: &amp;quot;#00f&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Polygon&amp;quot;,&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: [[&lt;br /&gt;
      [-82.560024, 35.585153],&lt;br /&gt;
      [-82.560024, 35.602602],&lt;br /&gt;
      [-82.52964, 35.602602],&lt;br /&gt;
      [-82.52964, 35.585153],&lt;br /&gt;
      [-82.560024, 35.585153]&lt;br /&gt;
    ]]&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var union = turf.union(poly1, poly2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://turfjs.org/docs Turf.js API dokumentáció]&lt;br /&gt;
&lt;br /&gt;
=== Komponensek közötti kapcsolat ===&lt;br /&gt;
&lt;br /&gt;
A Mapbox, illetve annak webes Mapbox.js nevű megoldása, ezen különálló komponensek egyfajta &amp;quot;wrapper&amp;quot; megvalósítása az egyszerűbb és egységesebb kezelhetőség érdekében.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_rendereles_01.png|frame|center|alt=Megjelenítés, renderelés|Megjelenítés, renderelés]]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:mapbox_elemzes_01.png|frame|center|alt=Elemzés, szűrés|Elemzés, szűrés]]&lt;br /&gt;
&lt;br /&gt;
== Példák (Mapbox használata webes környezetben, azaz Mapbox.js) ==&lt;br /&gt;
=== Térkép (kezdő szint) ===&lt;br /&gt;
==== Minimális példa egy térkép megjelenítésére ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/simple_map.html A simple map]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- A simple map --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initialize a map in an HTML element with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;A simple map&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
		.setView([47.47, 19.06], 15);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Világtérkép folytonosságának kikapcsolása ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/disable_world_wrapping.html Disable world wrapping]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable world wrapping --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Instead of loading tiles beyond -180 and 180, only show one copy of the world. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable world wrapping&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
	L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
	var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
		// These options apply to the tile layer in the map.&lt;br /&gt;
		tileLayer: {&lt;br /&gt;
			// This map option disables world wrapping. by default, it is false.&lt;br /&gt;
			continuousWorld: false,&lt;br /&gt;
			// This option disables loading tiles outside of the world bounds.&lt;br /&gt;
			noWrap: true&lt;br /&gt;
		}&lt;br /&gt;
	}).setView([40, 0], 2);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Változtatható alapréteg ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/toggling_baselayers.html Toggling baselayers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling baselayers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Toggling between three different baselayers. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Toggling baselayers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
  var map = L.mapbox.map(&amp;#039;map&amp;#039;, null, {&lt;br /&gt;
      maxZoom: 18&lt;br /&gt;
  }).setView([22.76, -25.84], 3);&lt;br /&gt;
&lt;br /&gt;
  var layers = {&lt;br /&gt;
      Streets: L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;),&lt;br /&gt;
      Outdoors: L.mapbox.tileLayer(&amp;#039;mapbox.outdoors&amp;#039;),&lt;br /&gt;
      Satellite: L.mapbox.tileLayer(&amp;#039;mapbox.satellite&amp;#039;)&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  layers.Streets.addTo(map);&lt;br /&gt;
  L.control.layers(layers).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Térkép nagyításának és mozgatásának letiltása ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/disable_zooming_and_panning.html Disable zooming and panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Disable zooming and panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to disable zooming and panning with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Disable zooming and panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
  zoomControl: false&lt;br /&gt;
}).setView([41.0252, 28.9950], 11);&lt;br /&gt;
&lt;br /&gt;
// Disable drag and zoom handlers.&lt;br /&gt;
map.dragging.disable();&lt;br /&gt;
map.touchZoom.disable();&lt;br /&gt;
map.doubleClickZoom.disable();&lt;br /&gt;
map.scrollWheelZoom.disable();&lt;br /&gt;
map.keyboard.disable();&lt;br /&gt;
&lt;br /&gt;
// Disable tap handler, if present.&lt;br /&gt;
if (map.tap) map.tap.disable();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Megnézhető térképterület leszűkítése határokkal ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/using_maxbounds_to_restrict_map_panning.html Using maxBounds to restrict map panning]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using maxBounds to restrict map panning --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Preventing users from leaving an area on the map --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Using maxBounds to restrict map panning&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
// Construct a bounding box for this map that the user cannot&lt;br /&gt;
// move out of&lt;br /&gt;
var southWest = L.latLng(46.47, 17.06),&lt;br /&gt;
    northEast = L.latLng(48.47, 21.06),&lt;br /&gt;
    bounds = L.latLngBounds(southWest, northEast);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // set that bounding box as maxBounds to restrict moving the map&lt;br /&gt;
    // see full maxBounds documentation:&lt;br /&gt;
    // http://leafletjs.com/reference.html#map-maxbounds&lt;br /&gt;
    maxBounds: bounds,&lt;br /&gt;
    maxZoom: 19,&lt;br /&gt;
    minZoom: 10&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// zoom the map to that bounding box&lt;br /&gt;
map.fitBounds(bounds);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dupla kattintásra nagyítás az adott területre középre helyezve + aránymérték ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/double_click_to_zoom_+_scale_control.html Double click to zoom]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Double click to zoom --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listen for a double click event from a user and zoom in on the map. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Double click to zoom&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    // Disable default double-click behavior.&lt;br /&gt;
    doubleClickZoom: false&lt;br /&gt;
})&lt;br /&gt;
.setView([46.695, 11.470], 4)&lt;br /&gt;
.on(&amp;#039;dblclick&amp;#039;, function(e) {&lt;br /&gt;
    // Zoom exactly to each double-clicked point&lt;br /&gt;
    map.setView(e.latlng, map.getZoom() + 1);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// L.control.scale() is included in Leaflet see&lt;br /&gt;
// https://www.mapbox.com/mapbox.js/api/v3.0.1/l-control-scale/&lt;br /&gt;
L.control.scale().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Töltésjelző megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/show_loading_screen.html Show loading screen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show loading screen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use events to show when features are loading and loaded by displaying and hiding a loading message --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show loading screen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
	body { margin:0; padding:0; }&lt;br /&gt;
	#map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * This is a very simple version of a &amp;#039;loading screen&amp;#039;: there are much&lt;br /&gt;
 * fancier ones you can use instead, like&lt;br /&gt;
 * http://codepen.io/collection/HtAne/&lt;br /&gt;
 */&lt;br /&gt;
#loader {&lt;br /&gt;
    position:absolute; top:0; bottom:0; width:100%;&lt;br /&gt;
    background:rgba(255, 255, 255, 1);&lt;br /&gt;
    transition:background 1s ease-out;&lt;br /&gt;
    -webkit-transition:background 1s ease-out;&lt;br /&gt;
}&lt;br /&gt;
#loader.done {&lt;br /&gt;
    background:rgba(255, 255, 255, 0);&lt;br /&gt;
}&lt;br /&gt;
#loader.hide {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
#loader .message {&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    left:50%;&lt;br /&gt;
    top:50%;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;loader&amp;#039;&amp;gt;&amp;lt;span class=&amp;#039;message&amp;#039;&amp;gt;loading&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var loader = document.getElementById(&amp;#039;loader&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 13);&lt;br /&gt;
&lt;br /&gt;
// Add a tile layer with a loading animation&lt;br /&gt;
&lt;br /&gt;
// start the loading screen&lt;br /&gt;
startLoading();&lt;br /&gt;
L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addTo(map) // add your tiles to the map&lt;br /&gt;
    .on(&amp;#039;load&amp;#039;, finishedLoading); // when the tiles load, remove the screen&lt;br /&gt;
&lt;br /&gt;
function startLoading() {&lt;br /&gt;
    loader.className = &amp;#039;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function finishedLoading() {&lt;br /&gt;
    // first, toggle the class &amp;#039;done&amp;#039;, which makes the loading screen&lt;br /&gt;
    // fade out&lt;br /&gt;
    loader.className = &amp;#039;done&amp;#039;;&lt;br /&gt;
    setTimeout(function() {&lt;br /&gt;
        // then, after a half-second, add the class &amp;#039;hide&amp;#039;, which hides&lt;br /&gt;
        // it completely and ensures that the user can interact with the&lt;br /&gt;
        // map again.&lt;br /&gt;
        loader.className = &amp;#039;hide&amp;#039;;&lt;br /&gt;
    }, 500);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Jelölők a térképen ===&lt;br /&gt;
&lt;br /&gt;
==== Egyszerű jelölő ikonnal ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/marker_without_geojson.html Marker without GeoJSON]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker without GeoJSON --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use L.mapbox.marker.icon to create a simple marker without GeoJSON. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Icon examples: https://www.mapbox.com/maki-icons/ --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker without GeoJSON&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 16);&lt;br /&gt;
&lt;br /&gt;
// L.marker is a low-level marker constructor in Leaflet.&lt;br /&gt;
L.marker([47.47, 19.06], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;roadblock&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;#fa0&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
L.marker([47.4725, 19.0625], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-symbol&amp;#039;: &amp;#039;college&amp;#039;,&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;64BA49&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő koordinátáinak megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/display_latitude_and_longitude_on_marker_movement.html Display latitude and longitude on marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display latitude and longitude on marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Drag the marker to a new location on a map to view it&amp;#039;s coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Display latitude and longitude on marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var coordinates = document.getElementById(&amp;#039;coordinates&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    }),&lt;br /&gt;
    draggable: true&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// every time the marker is dragged, update the coordinates container&lt;br /&gt;
marker.on(&amp;#039;dragend&amp;#039;, ondragend);&lt;br /&gt;
&lt;br /&gt;
// Set the initial marker coordinate on load.&lt;br /&gt;
ondragend();&lt;br /&gt;
&lt;br /&gt;
function ondragend() {&lt;br /&gt;
    var m = marker.getLatLng();&lt;br /&gt;
    coordinates.innerHTML = &amp;#039;Latitude: &amp;#039; + m.lat + &amp;#039;&amp;lt;br /&amp;gt;Longitude: &amp;#039; + m.lng;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőtől való távolság ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/distance_between_two_markers.html Distance between two markers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Distance between two markers --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Calculate the distance between two points in meters using distanceTo. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Distance between two markers&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-distance {&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;distance&amp;#039; class=&amp;#039;ui-distance&amp;#039;&amp;gt;Click to place a marker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// Start with a fixed marker.&lt;br /&gt;
var fixedMarker = L.marker(new L.LatLng(47.4725, 19.0625), {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
        &amp;#039;marker-color&amp;#039;: &amp;#039;ff8888&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
}).bindPopup(&amp;#039;ELTE Déli tömb&amp;#039;).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Store the fixedMarker coordinates in a variable.&lt;br /&gt;
var fc = fixedMarker.getLatLng();&lt;br /&gt;
&lt;br /&gt;
// Create a featureLayer that will hold a marker and linestring.&lt;br /&gt;
var featureLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// When a user clicks on the map we want to&lt;br /&gt;
// create a new L.featureGroup that will contain a&lt;br /&gt;
// marker placed where the user selected the map and&lt;br /&gt;
// a linestring that draws itself between the fixedMarkers&lt;br /&gt;
// coordinates and the newly placed marker.&lt;br /&gt;
map.on(&amp;#039;click&amp;#039;, function(ev) {&lt;br /&gt;
    // ev.latlng gives us the coordinates of&lt;br /&gt;
    // the spot clicked on the map.&lt;br /&gt;
    var c = ev.latlng;&lt;br /&gt;
&lt;br /&gt;
    var geojson = {&lt;br /&gt;
      type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
      features: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [c.lng, c.lat]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }, {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,&lt;br /&gt;
          &amp;quot;geometry&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;LineString&amp;quot;,&lt;br /&gt;
            &amp;quot;coordinates&amp;quot;: [&lt;br /&gt;
              [fc.lng, fc.lat],&lt;br /&gt;
              [c.lng, c.lat]&lt;br /&gt;
            ]&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;stroke&amp;quot;: &amp;quot;#000&amp;quot;,&lt;br /&gt;
            &amp;quot;stroke-opacity&amp;quot;: 0.5,&lt;br /&gt;
            &amp;quot;stroke-width&amp;quot;: 4&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    featureLayer.setGeoJSON(geojson);&lt;br /&gt;
&lt;br /&gt;
    // Finally, print the distance between these two points&lt;br /&gt;
    // on the screen using distanceTo().&lt;br /&gt;
    var container = document.getElementById(&amp;#039;distance&amp;#039;);&lt;br /&gt;
    container.innerHTML = (fc.distanceTo(c)).toFixed(0) + &amp;#039;m&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Navigáció jelölőket tartalmazó menüvel ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/marker_navigation_from_a_marker_menu.html Marker navigation from a marker menu]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Marker navigation from a marker menu --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Zoom to a marker and open its tooltip when a marker menu in a list is selected. --&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker navigation from a marker menu&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .info {&lt;br /&gt;
    background:#fff;&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:260px;&lt;br /&gt;
    top:10px;&lt;br /&gt;
    right:10px;&lt;br /&gt;
    border-radius:2px;&lt;br /&gt;
    }&lt;br /&gt;
    .info .item {&lt;br /&gt;
      display:block;&lt;br /&gt;
      border-bottom:1px solid #eee;&lt;br /&gt;
      padding:10px;&lt;br /&gt;
      text-decoration:none;&lt;br /&gt;
      }&lt;br /&gt;
      .info .item small { color:#888; }&lt;br /&gt;
      .info .item:hover,&lt;br /&gt;
      .info .item.active { background:#f8f8f8; }&lt;br /&gt;
      .info .item:last-child { border-bottom:none; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039; class=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;info&amp;#039; class=&amp;#039;info&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON({&lt;br /&gt;
  type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
  features: [&lt;br /&gt;
    {&lt;br /&gt;
      type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
      geometry: {&lt;br /&gt;
          type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
          coordinates: [19.0625, 47.4725]&lt;br /&gt;
      },&lt;br /&gt;
      properties: {&lt;br /&gt;
          title: &amp;#039;ELTE Déli tömb&amp;#039;,&lt;br /&gt;
          description: &amp;#039;ELTE IK&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-id&amp;#039;: &amp;#039;marker-1&amp;#039;,&lt;br /&gt;
          &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
          type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
          geometry: {&lt;br /&gt;
              type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
              coordinates: [19.0625, 47.4745]&lt;br /&gt;
          },&lt;br /&gt;
          properties: {&lt;br /&gt;
              title: &amp;#039;ELTE Északi tömb&amp;#039;,&lt;br /&gt;
              description: &amp;#039;ELTE TTK&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
              &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
          }&lt;br /&gt;
      },&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		  geometry: {&lt;br /&gt;
			  type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
			  coordinates: [19.063425, 47.505258]&lt;br /&gt;
		  },&lt;br /&gt;
		  properties: {&lt;br /&gt;
			  title: &amp;#039;Oktogon&amp;#039;,&lt;br /&gt;
			  description: &amp;#039;Oktogon metró állomás&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-id&amp;#039;: &amp;#039;marker-2&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
			  &amp;#039;marker-symbol&amp;#039;: &amp;#039;rail-metro&amp;#039;&lt;br /&gt;
		  }&lt;br /&gt;
		}&lt;br /&gt;
  ]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var info = document.getElementById(&amp;#039;info&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// Iterate through each feature layer item, build a&lt;br /&gt;
// marker menu item and enable a click event that pans to + opens&lt;br /&gt;
// a marker that&amp;#039;s associated to the marker item.&lt;br /&gt;
myLayer.eachLayer(function(marker) {&lt;br /&gt;
  var link = info.appendChild(document.createElement(&amp;#039;a&amp;#039;));&lt;br /&gt;
  link.className = &amp;#039;item&amp;#039;;&lt;br /&gt;
  link.href = &amp;#039;#&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  // Populate content from each markers object.&lt;br /&gt;
  link.innerHTML = marker.feature.properties.title +&lt;br /&gt;
    &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;#039; + marker.feature.properties.description + &amp;#039;&amp;lt;/small&amp;gt;&amp;#039;;&lt;br /&gt;
  link.onclick = function() {&lt;br /&gt;
    if (/active/.test(this.className)) {&lt;br /&gt;
      this.className = this.className.replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
    } else {&lt;br /&gt;
      var siblings = info.getElementsByTagName(&amp;#039;a&amp;#039;);&lt;br /&gt;
      for (var i = 0; i &amp;lt; siblings.length; i++) {&lt;br /&gt;
        siblings[i].className = siblings[i].className&lt;br /&gt;
          .replace(/active/, &amp;#039;&amp;#039;).replace(/\s\s*$/, &amp;#039;&amp;#039;);&lt;br /&gt;
      };&lt;br /&gt;
      this.className += &amp;#039; active&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      // When a menu item is clicked, animate the map to center&lt;br /&gt;
      // its associated marker and open its popup.&lt;br /&gt;
      map.panTo(marker.getLatLng());&lt;br /&gt;
      marker.openPopup();&lt;br /&gt;
    }&lt;br /&gt;
    return false;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Csak a környező jelölők megjelenítése ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/marker_radius_search.html Marker radius search]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker radius search --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the .distanceTo function to only show markers within a range --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker radius search&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.emerald&amp;#039;)&lt;br /&gt;
    .setView([40, -95], 4);&lt;br /&gt;
&lt;br /&gt;
var RADIUS = 500000;&lt;br /&gt;
var filterCircle = L.circle(L.latLng(40, -75), RADIUS, {&lt;br /&gt;
    opacity: 1,&lt;br /&gt;
    weight: 1,&lt;br /&gt;
    fillOpacity: 0.4&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
var csvLayer = omnivore.csv(&amp;#039;./data/airports.csv&amp;#039;, null, L.mapbox.featureLayer())&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;mousemove&amp;#039;, function(e) {&lt;br /&gt;
    filterCircle.setLatLng(e.latlng);&lt;br /&gt;
    csvLayer.setFilter(function showAirport(feature) {&lt;br /&gt;
        return e.latlng.distanceTo(L.latLng(&lt;br /&gt;
                feature.geometry.coordinates[1],&lt;br /&gt;
                feature.geometry.coordinates[0])) &amp;lt; RADIUS;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő mozgatása programozottan ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/marker_movement.html Marker movement]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Marker movement --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Simple marker animation. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Marker movement&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
    icon: L.mapbox.marker.icon({&lt;br /&gt;
      &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
    })&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var t = 0;&lt;br /&gt;
window.setInterval(function() {&lt;br /&gt;
    // Making a lissajous curve just for fun.&lt;br /&gt;
    // Create your own animated path here.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        Math.cos(t * 0.5) * 10,&lt;br /&gt;
        Math.sin(t) * 10));&lt;br /&gt;
    t += 0.01; // Movement&lt;br /&gt;
}, 1); // Speed&lt;br /&gt;
&lt;br /&gt;
marker.addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölő animálása geoJson vonalon ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/animate_a_marker_along_line.html Animate a marker along line]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Animate a marker along line --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Create a marker and animate its position along the length of a line by looking up its coordinates. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Animate a marker along line&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;).setView([0, 0], 3);&lt;br /&gt;
&lt;br /&gt;
// Generate a GeoJSON line. You could also load GeoJSON via AJAX&lt;br /&gt;
// or generate it some other way.&lt;br /&gt;
var geojson = { type: &amp;#039;LineString&amp;#039;, coordinates: [] };&lt;br /&gt;
var start = [0, 0];&lt;br /&gt;
var momentum = [2, 2];&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; 1000; i++) {&lt;br /&gt;
    start[0] += momentum[0];&lt;br /&gt;
    start[1] += momentum[1];&lt;br /&gt;
    if (start[1] &amp;gt; 30 || start[1] &amp;lt; -30) momentum[1] *= -1;&lt;br /&gt;
    if (start[0] &amp;gt; 90 || start[0] &amp;lt; -90) momentum[0] *= -1;&lt;br /&gt;
    geojson.coordinates.push(start.slice());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Add this generated geojson object to the map.&lt;br /&gt;
L.geoJson(geojson).addTo(map);&lt;br /&gt;
&lt;br /&gt;
// Create a counter with a value of 0.&lt;br /&gt;
var j = 0;&lt;br /&gt;
&lt;br /&gt;
// Create a marker and add it to the map.&lt;br /&gt;
var marker = L.marker([0, 0], {&lt;br /&gt;
  icon: L.mapbox.marker.icon({&lt;br /&gt;
    &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;&lt;br /&gt;
  })&lt;br /&gt;
}).addTo(map);&lt;br /&gt;
&lt;br /&gt;
tick();&lt;br /&gt;
function tick() {&lt;br /&gt;
    // Set the marker to be at the same point as one&lt;br /&gt;
    // of the segments or the line.&lt;br /&gt;
    marker.setLatLng(L.latLng(&lt;br /&gt;
        geojson.coordinates[j][1],&lt;br /&gt;
        geojson.coordinates[j][0]));&lt;br /&gt;
&lt;br /&gt;
    // Move to the next point of the line&lt;br /&gt;
    // until `j` reaches the length of the array.&lt;br /&gt;
    if (++j &amp;lt; geojson.coordinates.length) setTimeout(tick, 20);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tippek, üzenetek, szövegek ===&lt;br /&gt;
&lt;br /&gt;
==== Egyedi jelölő tipp ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/custom_marker_tooltips.html Custom marker tooltips]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Custom marker tooltips --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to create a custom marker tooltip with style text or images using Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Custom marker tooltips&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.leaflet-popup-content img {&lt;br /&gt;
  max-width:100%;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geoJson = [{&lt;br /&gt;
    type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
    &amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.06, 47.47]},&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;image&amp;quot;: &amp;quot;http://hazai.kozep.bme.hu/wp-content/uploads/2013/06/00-Info-E-nyit%C3%B3.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;url&amp;quot;: &amp;quot;http://www.infopark.hu/&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
        &amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        &amp;quot;city&amp;quot;: &amp;quot;Budapest - Infopark&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
		&amp;quot;geometry&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;Point&amp;quot;, &amp;quot;coordinates&amp;quot;: [19.063, 47.473]},&lt;br /&gt;
		&amp;quot;properties&amp;quot;: {&lt;br /&gt;
			&amp;quot;image&amp;quot;: &amp;quot;http://photos.wikimapia.org/p/00/02/45/33/03_big.jpg&amp;quot;,&lt;br /&gt;
			&amp;quot;url&amp;quot;: &amp;quot;https://www.elte.hu/&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-symbol&amp;quot;: &amp;quot;star&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-color&amp;quot;: &amp;quot;#ff8888&amp;quot;,&lt;br /&gt;
			&amp;quot;marker-size&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
			&amp;quot;city&amp;quot;: &amp;quot;Budapest - ELTE Lágymányos&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
}];&lt;br /&gt;
&lt;br /&gt;
// Add custom popups to each using our custom feature properties&lt;br /&gt;
myLayer.on(&amp;#039;layeradd&amp;#039;, function(e) {&lt;br /&gt;
    var marker = e.layer,&lt;br /&gt;
        feature = marker.feature;&lt;br /&gt;
&lt;br /&gt;
    // Create custom popup content&lt;br /&gt;
    var popupContent =  &amp;#039;&amp;lt;a target=&amp;quot;_blank&amp;quot; class=&amp;quot;popup&amp;quot; href=&amp;quot;&amp;#039; + feature.properties.url + &amp;#039;&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
                            &amp;#039;&amp;lt;img src=&amp;quot;&amp;#039; + feature.properties.image + &amp;#039;&amp;quot; /&amp;gt;&amp;#039; +&lt;br /&gt;
                            feature.properties.city +&lt;br /&gt;
                        &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    // http://leafletjs.com/reference.html#popup&lt;br /&gt;
    marker.bindPopup(popupContent,{&lt;br /&gt;
        closeButton: false,&lt;br /&gt;
        minWidth: 480&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Add features to the map&lt;br /&gt;
myLayer.setGeoJSON(geoJson);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Jelölőhöz tartozó tipp megjelenítése egérrel ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/show_tooltips_on_hover.html Show tooltips on hover]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show tooltips on hover --&amp;gt;&lt;br /&gt;
&amp;lt;!-- How to show marker popups on hover with Mapbox.js, our open source JavaScript library. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Show tooltips on hover&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.light&amp;#039;)&lt;br /&gt;
  .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
var geojson = {&lt;br /&gt;
    type: &amp;#039;FeatureCollection&amp;#039;,&lt;br /&gt;
    features: [{&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Bal alsó&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#f86767&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;small&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.05, 47.46]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        properties: {&lt;br /&gt;
            title: &amp;#039;Jobb felső&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#7ec9b1&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-size&amp;#039;: &amp;#039;large&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [19.07, 47.48]&lt;br /&gt;
        }&lt;br /&gt;
    }]&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
myLayer.setGeoJSON(geojson);&lt;br /&gt;
myLayer.on(&amp;#039;mouseover&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.openPopup();&lt;br /&gt;
});&lt;br /&gt;
myLayer.on(&amp;#039;mouseout&amp;#039;, function(e) {&lt;br /&gt;
    e.layer.closePopup();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Helyek ===&lt;br /&gt;
&lt;br /&gt;
==== Hely keresése automatikus kiegészítéssel ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/geocoding_with_autocomplete.html Geocoding with autocomplete]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geocoding with autocomplete --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API to show real-time search suggestions. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geocoding with autocomplete&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .addControl(L.mapbox.geocoderControl(&amp;#039;mapbox.places&amp;#039;, {&lt;br /&gt;
        autocomplete: true&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hely lekérdezése név alapján (Geocoderrel) ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/use_geocoder_to_set_map_position.html Use geocoder to set map position]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use geocoder to set map position --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Mapbox Geocoding API initially set map position on Chester, New Jersey. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Use geocoder to set map position&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&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;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geocoder = L.mapbox.geocoder(&amp;#039;mapbox.places&amp;#039;),&lt;br /&gt;
    map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;examples.map-h67hf2ic&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
geocoder.query(&amp;#039;Tab, HU&amp;#039;, showMap);&lt;br /&gt;
&lt;br /&gt;
function showMap(err, data) {&lt;br /&gt;
    // The geocoder can return an area, like a city, or a&lt;br /&gt;
    // point, like an address. Here we handle both cases,&lt;br /&gt;
    // by fitting the map bounds to an area or zooming to a point.&lt;br /&gt;
    if (data.lbounds) {&lt;br /&gt;
        map.fitBounds(data.lbounds);&lt;br /&gt;
    } else if (data.latlng) {&lt;br /&gt;
        map.setView([data.latlng[0], data.latlng[1]], 13);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Aktuális pozíció megjelenítése (megközelítőleg) ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/geolocation.html Geolocation]&lt;br /&gt;
&lt;br /&gt;
FONTOS: A Geolocation, azaz helymeghatározás használatához valid HTTPS kapcsolat szükséges.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Geolocation --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Finding the user&amp;#039;s position --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Geolocation&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.ui-button {&lt;br /&gt;
  background:#3887BE;&lt;br /&gt;
  color:#FFF;&lt;br /&gt;
  display:block;&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  top:50%;left:50%;&lt;br /&gt;
  width:160px;&lt;br /&gt;
  margin:-20px 0 0 -80px;&lt;br /&gt;
  z-index:100;&lt;br /&gt;
  text-align:center;&lt;br /&gt;
  padding:10px;&lt;br /&gt;
  border:1px solid rgba(0,0,0,0.4);&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  }&lt;br /&gt;
  .ui-button:hover {&lt;br /&gt;
    background:#3074a4;&lt;br /&gt;
    color:#fff;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;#039;#&amp;#039; id=&amp;#039;geolocate&amp;#039; class=&amp;#039;ui-button&amp;#039;&amp;gt;Find me&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var geolocate = document.getElementById(&amp;#039;geolocate&amp;#039;);&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var myLayer = L.mapbox.featureLayer().addTo(map);&lt;br /&gt;
&lt;br /&gt;
// This uses the HTML5 geolocation API, which is available on&lt;br /&gt;
// most mobile browsers and modern browsers, but not in Internet Explorer&lt;br /&gt;
//&lt;br /&gt;
// See this chart of compatibility for details:&lt;br /&gt;
// http://caniuse.com/#feat=geolocation&lt;br /&gt;
if (!navigator.geolocation) {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Geolocation is not available&amp;#039;;&lt;br /&gt;
} else {&lt;br /&gt;
    geolocate.onclick = function (e) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        e.stopPropagation();&lt;br /&gt;
        map.locate();&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Once we&amp;#039;ve got a position, zoom and center the map&lt;br /&gt;
// on it, and add a single marker.&lt;br /&gt;
map.on(&amp;#039;locationfound&amp;#039;, function(e) {&lt;br /&gt;
    map.fitBounds(e.bounds);&lt;br /&gt;
&lt;br /&gt;
    myLayer.setGeoJSON({&lt;br /&gt;
        type: &amp;#039;Feature&amp;#039;,&lt;br /&gt;
        geometry: {&lt;br /&gt;
            type: &amp;#039;Point&amp;#039;,&lt;br /&gt;
            coordinates: [e.latlng.lng, e.latlng.lat]&lt;br /&gt;
        },&lt;br /&gt;
        properties: {&lt;br /&gt;
            &amp;#039;title&amp;#039;: &amp;#039;Here I am!&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-color&amp;#039;: &amp;#039;#ff8888&amp;#039;,&lt;br /&gt;
            &amp;#039;marker-symbol&amp;#039;: &amp;#039;star&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // And hide the geolocation button&lt;br /&gt;
    geolocate.parentNode.removeChild(geolocate);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// If the user chooses not to allow their location&lt;br /&gt;
// to be shared, display an error message.&lt;br /&gt;
map.on(&amp;#039;locationerror&amp;#039;, function() {&lt;br /&gt;
    geolocate.innerHTML = &amp;#039;Position could not be found&amp;#039;;&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Útvonaltervezés (Autós, biciklis, gyalogos közlekedéssel) ===&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/directions.html Directions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Directions --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Use the mapbox-directions.js plugin to show results from the Mapbox Directions API --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Directions&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
#inputs,&lt;br /&gt;
#errors,&lt;br /&gt;
#directions {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 33.3333%;&lt;br /&gt;
    max-width: 300px;&lt;br /&gt;
    min-width: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#inputs {&lt;br /&gt;
    z-index: 10;&lt;br /&gt;
    top: 10px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#directions {&lt;br /&gt;
    z-index: 99;&lt;br /&gt;
    background: rgba(0,0,0,.8);&lt;br /&gt;
    top: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#errors {&lt;br /&gt;
    z-index: 8;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    border-radius: 0 0 3px 3px;&lt;br /&gt;
    background: rgba(0,0,0,.25);&lt;br /&gt;
    top: 90px;&lt;br /&gt;
    left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;#039;stylesheet&amp;#039; href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.css&amp;#039; type=&amp;#039;text/css&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;inputs&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;errors&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;directions&amp;#039;&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;routes&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;#039;instructions&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;, {&lt;br /&gt;
    zoomControl: false&lt;br /&gt;
}).setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
// move the attribution control out of the way&lt;br /&gt;
map.attributionControl.setPosition(&amp;#039;bottomleft&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// create the initial directions object, from which the layer&lt;br /&gt;
// and inputs will pull data.&lt;br /&gt;
var directions = L.mapbox.directions();&lt;br /&gt;
&lt;br /&gt;
var directionsLayer = L.mapbox.directions.layer(directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInputControl = L.mapbox.directions.inputControl(&amp;#039;inputs&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsErrorsControl = L.mapbox.directions.errorsControl(&amp;#039;errors&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsRoutesControl = L.mapbox.directions.routesControl(&amp;#039;routes&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&lt;br /&gt;
&lt;br /&gt;
var directionsInstructionsControl = L.mapbox.directions.instructionsControl(&amp;#039;instructions&amp;#039;, directions)&lt;br /&gt;
    .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugin támogatás és a Mapbox ===&lt;br /&gt;
&lt;br /&gt;
==== Leaflet-MiniMap ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/leaflet_minimap.html Leaflet-MiniMap]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet-MiniMap --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Display a smaller navigable map using the Leaflet-MiniMap plugin. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet-MiniMap&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-minimap/v1.0.0/Control.MiniMap.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .on(&amp;#039;ready&amp;#039;, function() {&lt;br /&gt;
        new L.Control.MiniMap(L.mapbox.tileLayer(&amp;#039;mapbox.streets&amp;#039;))&lt;br /&gt;
            .addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Fullscreen ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/leaflet_fullscreen.html Leaflet Fullscreen]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Fullscreen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add a control to enable a map to be in full screen mode. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Fullscreen&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
L.control.fullscreen().addTo(map);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Heat ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/leaflet_heat.html Leaflet Heat]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Heat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Initially draw heatmap data on a map and allow a users mouse movement to draw their own. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Heat&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-heat/v0.1.3/leaflet-heat.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;./data/realworld.388.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.dark&amp;#039;)&lt;br /&gt;
        .setView([47.47, 19.06], 15);&lt;br /&gt;
&lt;br /&gt;
    var heat = L.heatLayer(addressPoints, {maxZoom: 18}).addTo(map);&lt;br /&gt;
    var draw = false;&lt;br /&gt;
&lt;br /&gt;
    // add points on mouse move (except when interacting with the map)&lt;br /&gt;
    map.on({&lt;br /&gt;
        click:   function () { draw = !draw; },&lt;br /&gt;
        mousemove: function (e) {&lt;br /&gt;
            if (draw) {&lt;br /&gt;
                heat.addLatLng(e.latlng);&lt;br /&gt;
            }&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaflet Markercluster ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/leaflet_markercluster.html Leaflet Markercluster]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Leaflet Markercluster --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Using the Leaflet Markercluster plugin --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Leaflet Markercluster&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
    var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
        .setView([-37.82, 175.215], 14);&lt;br /&gt;
&lt;br /&gt;
    var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
    for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
        var a = addressPoints[i];&lt;br /&gt;
        var title = a[2];&lt;br /&gt;
        var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
            icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
            title: title&lt;br /&gt;
        });&lt;br /&gt;
        marker.bindPopup(title);&lt;br /&gt;
        markers.addLayer(marker);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    map.addLayer(markers);&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Listing markers in clusters ====&lt;br /&gt;
&lt;br /&gt;
[http://zsataai.web.elte.hu/content/mapbox/listing_markers_in_clusters.html Listing markers in clusters]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Listing markers in clusters --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Show a list of clustered markers by their coordinates on a map with Mapbox.js. --&amp;gt;&lt;br /&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=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Listing markers in clusters&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;viewport&amp;#039; content=&amp;#039;initial-scale=1,maximum-scale=1,user-scalable=no&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  body { margin:0; padding:0; }&lt;br /&gt;
  #map { position:absolute; top:0; bottom:0; width:100%; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var demoAccessToken = &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejh2N21nMzAxMmQzMnA5emRyN2lucW0ifQ.jSE-g2vsn48Ry928pqylcg&amp;#039; || &amp;#039;pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA&amp;#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js&amp;#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;link href=&amp;#039;https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css&amp;#039; rel=&amp;#039;stylesheet&amp;#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
pre.ui-coordinates {&lt;br /&gt;
  background:rgba(0,0,0,0.5);&lt;br /&gt;
  position:absolute;&lt;br /&gt;
  bottom:10px;&lt;br /&gt;
  left:10px;&lt;br /&gt;
  padding:5px 10px;&lt;br /&gt;
  color:#fff;&lt;br /&gt;
  font-size:11px;&lt;br /&gt;
  line-height:18px;&lt;br /&gt;
  border-radius:3px;&lt;br /&gt;
  max-height:240px;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
  width:100px;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre id=&amp;#039;coordinates&amp;#039; class=&amp;#039;ui-coordinates&amp;#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Example data. (near Hamilton, New Zealand)--&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./data/realworld.388.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
L.mapbox.accessToken = &amp;#039;&amp;lt;your access token here&amp;gt;&amp;#039;;&lt;br /&gt;
L.mapbox.accessToken = demoAccessToken;&lt;br /&gt;
var map = L.mapbox.map(&amp;#039;map&amp;#039;, &amp;#039;mapbox.streets&amp;#039;)&lt;br /&gt;
    .setView([-37.82, 175.215], 14);;&lt;br /&gt;
&lt;br /&gt;
var markers = new L.MarkerClusterGroup();&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; addressPoints.length; i++) {&lt;br /&gt;
    var a = addressPoints[i];&lt;br /&gt;
    var title = a[2];&lt;br /&gt;
    var marker = L.marker(new L.LatLng(a[0], a[1]), {&lt;br /&gt;
        icon: L.mapbox.marker.icon({&amp;#039;marker-symbol&amp;#039;: &amp;#039;post&amp;#039;, &amp;#039;marker-color&amp;#039;: &amp;#039;0044FF&amp;#039;}),&lt;br /&gt;
        title: title&lt;br /&gt;
    });&lt;br /&gt;
    marker.bindPopup(title);&lt;br /&gt;
    markers.addLayer(marker);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.addLayer(markers);&lt;br /&gt;
&lt;br /&gt;
function onmove() {&lt;br /&gt;
    // Get the map bounds - the top-left and bottom-right locations.&lt;br /&gt;
    var inBounds = [],&lt;br /&gt;
        bounds = map.getBounds();&lt;br /&gt;
    markers.eachLayer(function(marker) {&lt;br /&gt;
        // For each marker, consider whether it is currently visible by comparing&lt;br /&gt;
        // with the current map bounds.&lt;br /&gt;
        if (bounds.contains(marker.getLatLng())) {&lt;br /&gt;
            inBounds.push(marker.options.title);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    // Display a list of markers.&lt;br /&gt;
    document.getElementById(&amp;#039;coordinates&amp;#039;).innerHTML = inBounds.join(&amp;#039;\n&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
map.on(&amp;#039;move&amp;#039;, onmove);&lt;br /&gt;
&lt;br /&gt;
// call onmove off the bat so that the list is populated.&lt;br /&gt;
// otherwise, there will be no markers listed until the map is moved.&lt;br /&gt;
onmove();&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználás, alkalmazás ==&lt;br /&gt;
&lt;br /&gt;
=== A Foursquare is Mapbox-ra váltott ===&lt;br /&gt;
A Foursquare 2012-ben lecserélte a Google térképszolgáltatására épülő webes felületét egy Mapbox alapú verzióra. Ezzel az újítással a felhasználók már egy színesebb, több információt tartalmazó térképpel találkozhatnak a Foursquare weboldalán. Mindezzel együtt a térképes adatok, képek szolgáltatását sem a Google Maps biztosítja, hanem a szintén népszerű OpenStreetMap. Az OpenStreetMap térképei a világ legtöbb pontján, így Magyarországon is nagyon pontosak és részletesek, és mivel nyílt rendszerről van szó, semmi sem akadályozza a folyamatos fejlődést.&lt;br /&gt;
&lt;br /&gt;
=== Mapbox és WordPress: látványos térképek WordPress oldalon kódolás nélkül ===&lt;br /&gt;
&lt;br /&gt;
==== Hivatalos bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[https://wordpress.org/plugins/mapbox Hivatalos bővítmény]&lt;br /&gt;
&lt;br /&gt;
Elavult verziójú, feltehetően nem fejlesztik tovább. &lt;br /&gt;
&lt;br /&gt;
==== Harmadik féltől származó bővítmény ====&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Mapbox-for-wp-advanced-03.png|frame|left|Mapbox for Wordpress Advanced]]&lt;br /&gt;
&lt;br /&gt;
[https://hu.wordpress.org/plugins/mapbox-for-wp-advanced Harmadik féltől származó bővítmény]&lt;br /&gt;
&lt;br /&gt;
A Mapbox for Wordpress Advanced nevű WordPress bővítménnyel egyszerűen lehet térképeket hozzáadni egy WordPress oldalhoz. Ehhez nem kell mást tenni, mint letölteni a bővítményt az alábbi linken:&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com/download Mapbox for Wordpress Advanded letöltése]&lt;br /&gt;
&lt;br /&gt;
Majd a bővítményt feltölteni az adott WordPress oldalra és aktiválni. Ezután egy meglévő Mapbox felhasználói fiókon keresztül Mapbox Studio Classic használatával elkészíthető a kívánt térkép. Végül az elkészített térképhez tartozó Access Token-t és térkép ID-t meg kell adni a Mapbox for Wordpress Advanced bővítménynek.&lt;br /&gt;
&lt;br /&gt;
[http://mapbox-for-wordpress.stephanemartinw.com Mapbox működés közben egy WordPress oldalon]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== További érdekességek ===&lt;br /&gt;
&lt;br /&gt;
==== Térkép a Twitter első 6 milliárd geotaggel ellátott fotója alapján ====&lt;br /&gt;
&lt;br /&gt;
Egy speciális világatlaszt készített a nagyvárosokról Eric Fischer, a Mapbox fejlesztője, aki a Twitter indulása óta megosztott összes geotaggel, vagyis földrajzi koordinátákkal ellátott több mint 6 milliárd bejegyzést használta fel hozzá. Első körben azt vizsgálta, hogy melyek azon régiók, kerületek, ahol a legsűrűbben fotóznak. &lt;br /&gt;
&lt;br /&gt;
[https://api.tiles.mapbox.com/v4/enf.c3a2de35/page.html?access_token=pk.eyJ1IjoiZW5mIiwiYSI6IkNJek92bnMifQ.xn2_Uj9RkYTGRuCGg4DXZQ#14/47.4967/19.0618 Twitteres geotaggel ellátott fotók térképe]&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Locals-and-tourists-budapest-01-small.png|frame|left|Locals and Tourists - Budapest]]&lt;br /&gt;
&lt;br /&gt;
A projektet továbbgondolva Fischer megkülönböztette a képeket készítő helybelieket a turistáktól. Így létrejött a Locals and Tourists nevű projektje, melynek keretében már azt is elkülönítette, hogy a képeket helybeliek vagy turisták készíthették.&lt;br /&gt;
&lt;br /&gt;
Kék a helyi lakos, piros a turista&lt;br /&gt;
Fischer azokat a személyeket számolta helyi lakosnak, aki egy hónapnál hosszabb ideje készít földrajzi címkékkel rendelkező fotókat egy adott térségben: őket jelölte kék színnel. A pirossal kiemelt turista kategóriába azok tartoznak, akik egy hónapnál kevesebb ideig készítettek és osztottak meg egy helyszínről képeket. A sárga pontok alatt azokat kell érteni, akiknél mindez nem volt egyértelműen meghatározható.&lt;br /&gt;
&lt;br /&gt;
Budapest térképrészletére tekintve a legnépszerűbb turistacélpontok között a Hősök tere, a Városliget, a Lánchíd, és a Gellért-hegy is jól látható.&lt;br /&gt;
&lt;br /&gt;
Átdolgozott, teljesértékű interaktív világtérképre bővített verzió:&lt;br /&gt;
&lt;br /&gt;
[https://www.mapbox.com/labs/twitter-gnip/locals/#13/47.4891/19.0476 Twitter Locals and Tourists project]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Források ==&lt;br /&gt;
* [https://www.mapbox.com Mapbox]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Mapbox Mapbox Wiki]&lt;br /&gt;
* [https://hu.wordpress.org/ WordPress]&lt;br /&gt;
* [http://wiki.openstreetmap.org/wiki/Mapbox Openstreetmap Wiki]&lt;br /&gt;
* [https://www.google.hu/search?q=mapbox Google Mapbox]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;BackToTop&amp;quot;  class=&amp;quot;noprint&amp;quot; style=&amp;quot;background-color:#F5F5F5; position:fixed; bottom:2%; left:1%; padding:0; margin:0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-align:center; font-size:150%; background-color:#F5F5F5&amp;quot;&amp;gt;[[#top| Back to the Top ]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=MATSim&amp;diff=564</id>
		<title>MATSim</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=MATSim&amp;diff=564"/>
		<updated>2017-05-25T09:43:24Z</updated>

		<summary type="html">&lt;p&gt;Mate: /* A MATSim elindítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A MATSim (Multi-Agent Transport Simulation) egy aktivitás-alapú, multi-agent közlekedési szimulációs keretrendszer, melynek elsődleges célja a forgalom és a torlódások szimulálása, de egyéb alkalmazási is léteznek. Java-ban fejlesztették és nyílt forráskódú. Könnyen kiterjeszthető, és moduláris jellege miatt a részegységei könnyen lecserélhetőek más implementációkra.&lt;br /&gt;
&lt;br /&gt;
== Bevezetés ==&lt;br /&gt;
A MATSim célja egyetlen nap közlekedésének szimulálása. A közlekedésnek rengeteg, akár 10^7 résztvevője lehet. &lt;br /&gt;
&lt;br /&gt;
A program a co-evolúciós elvet használja, melynek lényege az hogy a résztvevők újra és újra optimalizálják a napi aktivitásukat miközben egymással versengenek a közlekedési infrastruktúrában. Minden résztvevő memóriájában eltárolunk egy rögzített mennyiségű napi tervet: egy napi terv egy aktivitási láncból és a hozzá tartozó hasznossági pontból áll. Az aktivitási láncokat empirikus adatok alapján készítjük, a hozzájuk tartozó pontokra pedig úgy érdemes gondolni, mint a tevékenységlánc egyfajta gazdasági hasznosságára. &lt;br /&gt;
&lt;br /&gt;
Egy MATSim futás konfigurálható számú iterációból áll. Minden iterációban, mielőtt a résztvevők megkezdenék a mobilitási szimulációt (mobsim), kiválasztanak egy napi tervet a memóriájukból, majd végrehajtják a mobilitási szimulációt, végül pedig megváltoztatják a napi terveikhez tartozó hasznossági pontokat. A napi terv kiválasztása függ a tervek hasznossági pontjától. A résztvevők egy bizonyos százaléka (például 10%) számára megengedett, hogy a kiválasztott tervet klónozzák és módosítsák: ezt a folyamatot hívják újratervezésnek.&lt;br /&gt;
&lt;br /&gt;
Az újratervezést az újratervező modulok hajtják végre. Általában egy tervnek négy elemeét veszik figyelembe: indulási időpont, útvonal, mód és célállomás (és ezáltal implicit módon az aktivitás hosszát is). További szempontok is figyelembe vehetők, mint például aktivitások hozzáadása vagy elvetése, parkolás, stb., de ezek egyelőre csak kísérleti stádiumban részei a MATSimnek. Az újratervező funkciók különböző stratégiákat alkalmazhatnak: lehet, hogy a fenti szempontok közül az egyiket véletlen mutációval változtatja, míg egy másikat a úgy, hogy a számára lehető léegjobbat választja ki ([https://en.wikipedia.org/wiki/Best_response Best response]). Ha az újratervezés eredményeként egy résztvevőnek túl sok terve lesz (a tervek száma konfigurálható), akkor a legkisebb pontszámú tervet elveti.&lt;br /&gt;
&lt;br /&gt;
Azok a résztvevők, akik nem terveznek újra, választanak egy tervet a memóriájukból valamilyen választási stratégia alapján. Ezután az összes résztvevő számára végrehajtódik a mobsim, vagyis a mobilitási szimuláció, ami egy napnak felel meg. A nap végén a résztvevők pontozzák az aznap végrehajtott tervüket. A napok iterációját addig ismételjük, amíg az átlagos pontszám stabilizálódik.&lt;br /&gt;
&lt;br /&gt;
== A közelekedési folyam modellje ==&lt;br /&gt;
&lt;br /&gt;
A szimulációnak a magja magának a közlekedésnek a szimulálása. Ez a MATSim közlekedési szimulálójával (röviden mobsim) történik. A közelekedés szimulációja szempontjából a következő eseteket különböztethetjük meg:&lt;br /&gt;
* fizikai szimulációk, melyek tartalmazzák a járművek részletes követési modelljeit&lt;br /&gt;
* cellular automata, ahol az utak helyett cellákat használunk&lt;br /&gt;
* sor-alapú szimulációk, ahol a közelekedés dinamikáját várakozási sorokkal modellezzük&lt;br /&gt;
* makroszkopikus modellek, ahol nem különálló egységeket (autókat) tekintünk, hanem a folyamot egy egészként&lt;br /&gt;
&lt;br /&gt;
=== A MATSim modellje ===&lt;br /&gt;
&lt;br /&gt;
A MATSim, mivel nagy méretű modellekre tervezték, a kevésbé számításigényes sor-alapú szimulációt használja, a következő módon: amikor egy résztvevő (jármű) belép a hálózat egy élére (egy útszakaszra), akkor hozzáadódik az útszakasz kilépését modellező várakozási sorhoz. A jármű akkor léphet ki az útszakaszról, ha az alábbi feltételek mindegyike teljesül:&lt;br /&gt;
* eltelt annyi idő, amennyi szükséges volna az útszakasz bejárásához, ha az üres lenne (úgynezevett free flow)&lt;br /&gt;
* a várakozási sor elején van&lt;br /&gt;
* a következő él (útszakasz) megengedi a belépést&lt;br /&gt;
&lt;br /&gt;
Ez a megközelítés számítsi szempontból nagyon hatékony, de leegyszerűsítő: a valóságban a járművek lassaban közlekednek, ha egy másik járművet követve kell lassítaniuk (megállniuk) vagy gyorsítaniuk (elindulniuk). Ezek az úgynevezett járműkövetési hatások, amiket a fenti modell figyelmen kívül hagy. &lt;br /&gt;
&lt;br /&gt;
A MATSim hálózati modellje nagyban függ az élek (útszakaszok) két fontos paraméterétől: tárolási kapacitás (storage capacity) és folyam kapacitás vagy kimeneti kapacitás (flow capacity). Az előbbi azt mondja meg, hogy hány jármű fér rá egy adott útszakaszra, míg az utóbbi azt, hogy egy adott időegység alatt hány jármű tudja elhagyni az útszakaszt.&lt;br /&gt;
&lt;br /&gt;
=== Beépített mobsimek ===&lt;br /&gt;
&lt;br /&gt;
A MATSim két beépített mobsimet bocsát rendelkezésünkre: a QSim-et és a JDEQSim-et (Java Discrete Event Queue Simulation). A két beépített mobsimtől eltérő szimulációs modellt is használhatunk, volt már példa a C++-ben írt DEQSim (Discrete Event Queue Simulation) hozzákapcsolására a MATSimhez, de beépített funkciókként csak a fenti kettő szimulációs modellt kapjuk. &lt;br /&gt;
&lt;br /&gt;
A több szálon futó QSim a MATSim default szimulációs modellje. Egy idő alapú (time-step) implementációt használ, vagyis az idő múlását kicsiny lépésekben szimulálja. Ezzel szemben a JDEQSim (számítási okokból) a sor alapú hozzáállást egy eseményvezérelt implementációval kombinálja. Így nincs idő alapú szimuláció és így garantált, hogy a járművekhez csak akkor nyúlunk hozzá, ha arra valóban szükség van (vagyis ha egy műveletet kivált egy esemény). Az eseményeket egy global scheduler menedzseli. &lt;br /&gt;
&lt;br /&gt;
További fontos különbség a beépített mobsimek között, hogy a JDEQSim megengedi, hogy az élekhez egy bemeneti kapacitást is definiáljunk (a fent említett tárolási és kimeneti kapacitás mellé). A QSimben nincsen ilyen lehetőség, így a bemeneti kapactisának nincsen felső értéke. Ez azt jelenti, hogy bár az útszakaszon tartózkodó járművek számának van felső határa (storage capacity), az útra belépésnek nincs.&lt;br /&gt;
&lt;br /&gt;
=== A MATSim co-evolúciós algoritmusa ===&lt;br /&gt;
A co-evolúciós algoritmusok különböző fajokat (co-)evolválnak, akik rendszeres interakcióban (versenyben) vannak egymással. Az evoluciós algoritmusok - leegyszerűsítve - a rendszer valamilyen optimumát keresik, hiszen az optimalizációt egy globális fitness függvény biztosítja. Ezzel szemben a co-evolúciós algoritmusok nem a rendszer optimumát keresik, hanem egy sztochasztikus, fajra vonatkozó optimumot, hiszen itt nincsen globális (mindenkire ugyanúgy érvényes) fitness függvény. &lt;br /&gt;
&lt;br /&gt;
A MATSim-ben minden résztvevő a co-evolúciós algoritmus egy fajának felel meg, a résztvevő tervei pedig a faj egyedeinek. A co-evolúciós algoritmusban az optimalizáció a résztvevők terveire (vagyis a napi tervekre, tevékenységekre és utazásukra) vonatkozik. Idővel a rendszer el fog érni egy (bizonyos korlátokkal szabályozott) egyensúlyi állapotot, ahol a résztvevők nem fogják tudni tovább javítani a napi terveiket.&lt;br /&gt;
&lt;br /&gt;
== A MATSim elindítása ==&lt;br /&gt;
A MATSim elindításához látogassunk el [http://www.matsim.org/ a MATsim weboldalára], és töltsük le a legutóbbi verziót. A letöltött tömörített fájl kicsomagolása után csak annyi dolgunk van, hogy duplán kattintsunk a matsim .jar fájljára, és az alkalmazás már el is indult. &lt;br /&gt;
&lt;br /&gt;
A szoftver automatikusan felismeri a gépünkön futó Java verzióját és könyvtárát. Amennyiben ez nem történt meg, tallózzuk be a könyvtárat, ahol a JRE könyvtárunkat. A MATSim futtatásához legalább 7-es verziójú Java szükséges.&lt;br /&gt;
&lt;br /&gt;
A MATSim futtatásához be kell tallózzunk egy konfigurációs filet, minden beállítható paraméterünket ez fogja tartalmazni. A letöltött csomag több példakonfigurációt is tartalmaz, ezeket megtaláljuk az &amp;#039;&amp;#039;example&amp;#039;&amp;#039; mappában. Amennyiben a programunk elindítás után hibát dob, abban az esetben nyissuk meg a konfigurációs fájlt és az abban megadott &amp;#039;&amp;#039;network&amp;#039;&amp;#039; és &amp;#039;&amp;#039;plans&amp;#039;&amp;#039; modulok elérhetőségi útját módosítanunk kell, a megadott elérési út helyett teljes, abszolút elérési utat adjunk meg. Ennek az az oka, hogy a szotfver alapértelmezetten a Java könyvtárunkhoz képest relatívan értelmezi a konfigurációs file-ban hivatkozott egyéb elérési útvonalakat, nem pedig a konfigurációs filehoz képest. &lt;br /&gt;
&lt;br /&gt;
A program paramétereit a konfigurációs fájlokban állíthatjuk be.&lt;br /&gt;
&lt;br /&gt;
== A konfigurációs fájlok létrehozása ==&lt;br /&gt;
A konfigurációs fájlok XML fájlok. A fő konfigurációs fájlon kívül egyéb XML fájlokat is meg kell adjunk, például olyanokat amik az úthálózatot vagy olyat ami a napi terveket definiálják.&lt;br /&gt;
&lt;br /&gt;
=== A hálózat megadása ===&lt;br /&gt;
A hálózat megadása XML formátumban történik, ahol az úthálózat pontjait (vagyis a kereszteződéseket) &amp;#039;&amp;#039;node&amp;#039;&amp;#039; tag-ek között kell megadni, ezeket pedig &amp;#039;&amp;#039;nodes&amp;#039;&amp;#039; tagek közé rendezni. Az úthálózat éleit (vagyis magukat az utakat) hasonlóképpen lehet megadni, csak &amp;#039;&amp;#039;link&amp;#039;&amp;#039; illetve &amp;#039;&amp;#039;links&amp;#039;&amp;#039; tagekkel.&lt;br /&gt;
&lt;br /&gt;
Az úthálózat egy &amp;#039;&amp;#039;node&amp;#039;&amp;#039;-jának van egy egyedi azonosítója, ezen kívül pedig egy x és egy y koordinátája. A MATSim a távolságszámítást egyszerűen Pithagorasz tétellel végzi, így nyomatékosan kérik a felhasználókat, hogy ne WGS84-es, vagy hasonló gömbi koordinátákat használjanak a MATSim default beállításaival. Derékszögű koordinátarendszert javasolnak, ahol egy koordinátányi távolság egy méternek felel meg.&lt;br /&gt;
&lt;br /&gt;
Az úthálózat &amp;#039;&amp;#039;link&amp;#039;&amp;#039;jeinek már sokkal több paramétere lehet:&lt;br /&gt;
* &amp;#039;&amp;#039;id&amp;#039;&amp;#039;: az él egyedi azonosítója&lt;br /&gt;
* &amp;#039;&amp;#039;from&amp;#039;&amp;#039;: az él forrásául szolgáló csúcs azonosítója&lt;br /&gt;
* &amp;#039;&amp;#039;to&amp;#039;&amp;#039;: az él céljául szolgáló csúcs azonosítója&lt;br /&gt;
* &amp;#039;&amp;#039;length&amp;#039;&amp;#039;: az él hossza. A javasolt mértékegység a méter, de más is használható, amennyiben ezek az összes konfigurációs fájlban összhangban vannak&lt;br /&gt;
* &amp;#039;&amp;#039;capacity&amp;#039;&amp;#039;: az él kapacitása, vagyis ahány jármű áthaladhat rajta egy időegység (javasolt: óra) alatt&lt;br /&gt;
* &amp;#039;&amp;#039;freespeed&amp;#039;&amp;#039;: az a sebesség, amivel a járművek haladnak az élen, amennyiben azon nincs torlódást okozó forgalom (méter per másodperc a javasolt mértékegység)&lt;br /&gt;
* &amp;#039;&amp;#039;permlanes&amp;#039;&amp;#039;: az él által reprezentált úton rendelkezésünkre álló sávok száma&lt;br /&gt;
* &amp;#039;&amp;#039;modes&amp;#039;&amp;#039;: a járműtípusok, akik használhatják a sávot. Több is megadható vesszővel elválasztva, például &amp;#039;&amp;#039;car, bike, taxi&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Megjegyzendő, hogy minden él rendelkezik irányítással, és így egyirányú utaknak felelnek meg. Amennyiben kétirányú utat szeretnénk szmulálni, úgy a &amp;#039;&amp;#039;link&amp;#039;&amp;#039;et kétszer kell felvenni a listánkba, alternáló &amp;#039;&amp;#039;from&amp;#039;&amp;#039; és &amp;#039;&amp;#039;to&amp;#039;&amp;#039; attribútumokkal. &lt;br /&gt;
&lt;br /&gt;
Nézzünk egy példahálózatot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE network SYSTEM &amp;quot;http://www.matsim.org/files/dtd/network_v1.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;network name=&amp;quot;equil test network&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;nodes&amp;gt;&lt;br /&gt;
      &amp;lt;node id=&amp;quot;1&amp;quot; x=&amp;quot;-20000&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;node id=&amp;quot;2&amp;quot; x=&amp;quot;-15000&amp;quot; y=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;node id=&amp;quot;3&amp;quot; x=&amp;quot;-865&amp;quot; y=&amp;quot;5925&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;node id=&amp;quot;4&amp;quot; x=&amp;quot;-2498&amp;quot; y=&amp;quot;4331&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;node id=&amp;quot;5&amp;quot; x=&amp;quot;-3829&amp;quot; y=&amp;quot;3215&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/nodes&amp;gt;&lt;br /&gt;
   &amp;lt;links capperiod=&amp;quot;01:00:00&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;link id=&amp;quot;1&amp;quot; from=&amp;quot;1&amp;quot; to=&amp;quot;2&amp;quot; length=&amp;quot;10000.00&amp;quot; capacity=&amp;quot;36000&amp;quot; freespeed=&amp;quot;27.78&amp;quot; permlanes=&amp;quot;1&amp;quot;  /&amp;gt;&lt;br /&gt;
      &amp;lt;link id=&amp;quot;2&amp;quot; from=&amp;quot;2&amp;quot; to=&amp;quot;3&amp;quot; length=&amp;quot;10000.00&amp;quot; capacity=&amp;quot;3600&amp;quot; freespeed=&amp;quot;27.78&amp;quot; permlanes=&amp;quot;1&amp;quot;  /&amp;gt;&lt;br /&gt;
      &amp;lt;link id=&amp;quot;3&amp;quot; from=&amp;quot;2&amp;quot; to=&amp;quot;4&amp;quot; length=&amp;quot;10000.00&amp;quot; capacity=&amp;quot;3600&amp;quot; freespeed=&amp;quot;27.78&amp;quot; permlanes=&amp;quot;1&amp;quot;  /&amp;gt;&lt;br /&gt;
      &amp;lt;link id=&amp;quot;4&amp;quot; from=&amp;quot;2&amp;quot; to=&amp;quot;5&amp;quot; length=&amp;quot;10000.00&amp;quot; capacity=&amp;quot;3600&amp;quot; freespeed=&amp;quot;27.78&amp;quot; permlanes=&amp;quot;1&amp;quot;  /&amp;gt;&lt;br /&gt;
   &amp;lt;/links&amp;gt;&lt;br /&gt;
&amp;lt;/network&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
További példahálózatokat találhatunk a letöltött matsim csomag &amp;#039;&amp;#039;examples&amp;#039;&amp;#039; könyvtárában.&lt;br /&gt;
&lt;br /&gt;
=== A tervek/populáció konfigurálása ===&lt;br /&gt;
A MATSimben a résztvevők napi tervei határozzák meg az utazásaikat. Ezeknek az összességét terveknek (&amp;#039;&amp;#039;plans&amp;#039;&amp;#039;) és populációnak (&amp;#039;&amp;#039;population&amp;#039;&amp;#039;) is szokás nevezni. A populáció tartalmaz egy emberekből álló (&amp;#039;&amp;#039;person&amp;#039;&amp;#039;) listát, minden &amp;#039;&amp;#039;person&amp;#039;&amp;#039; tartalmaz egy tervekből álló (&amp;#039;&amp;#039;plan&amp;#039;&amp;#039;) listát, és minden &amp;#039;&amp;#039;plan&amp;#039;&amp;#039; tartalmaz egy &amp;#039;&amp;#039;activity&amp;#039;&amp;#039;-kből és &amp;#039;&amp;#039;leg&amp;#039;&amp;#039;-ekből álló listát. &lt;br /&gt;
&lt;br /&gt;
Nézzünk egy példatervet:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plans&amp;gt;&lt;br /&gt;
&amp;lt;person id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;plan selected=&amp;quot;yes&amp;quot; score=&amp;quot;93.2987721&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;act type=&amp;quot;home&amp;quot; x=&amp;quot;-25000&amp;quot; y=&amp;quot;0&amp;quot; link=&amp;quot;1&amp;quot; end_time=&amp;quot;06:00&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;leg mode=&amp;quot;car&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;act type=&amp;quot;work&amp;quot; x=&amp;quot;10000&amp;quot; y=&amp;quot;0&amp;quot; link=&amp;quot;20&amp;quot; dur=&amp;quot;00:10&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;leg mode=&amp;quot;car&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;act type=&amp;quot;home&amp;quot; x=&amp;quot;-25000&amp;quot; y=&amp;quot;0&amp;quot; link=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/plan&amp;gt;&lt;br /&gt;
&amp;lt;/person&amp;gt;&lt;br /&gt;
&amp;lt;/plans&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden embernek pontosan egy terve lehet &amp;#039;&amp;#039;selected&amp;#039;&amp;#039; státuszú, ez ugyan a szimuláció alatt többször is változhat (akár egyetlen napon belül az újratervezési fázisban is). A tervhez tartozhat &amp;#039;&amp;#039;score&amp;#039;&amp;#039; érték, de ennek az inputban nem kell szerepelnie, hiszen a MATSim fogja kiszámítani a terv végrehajtása után az értékelő ciklusban. &lt;br /&gt;
&lt;br /&gt;
Az aktivitások egy résztvevő napi teendőit szimbolizálják, és összességükből áll össze a résztvevő napi terve. Az aktivitásoknak a következő tulajdonságaik lehetnek:&lt;br /&gt;
* Az aktivitás hossza. Ez megadható az &amp;#039;&amp;#039;end_time&amp;#039;&amp;#039; attribútummal vagy a &amp;#039;&amp;#039;dur&amp;#039;&amp;#039; (duration) attribútummal, értelemszerűen az előbbi a végzés időpontját jelenti, míg az utóbbi a végzés időtartamát. &lt;br /&gt;
** Az utolsó napi aktivitáshoz nem tartozik se időtartam, se befejezési időpont&lt;br /&gt;
* Az aktivitás helyszíne. Ezt megadhatjuk x és y koorinátákkal, illetve a helyszínhez legközelebbi él azonosítójával. &lt;br /&gt;
** A helyszínhez legközelebbi él azt jelenti, hogy az adott aktivitás az adott élről érhető el. Tehát például a munka aktivitáshoz a munkahely utcáját érdemes megadni.&lt;br /&gt;
** Amennyiben nem adunk meg legközelebbi élt, úgy a MATSim automatikusan kiszámolja a koordinátákhoz legközelebb eső élt.&lt;br /&gt;
** Amennyiben megadunk élt, úgy a koordináták elhagyhatóak.&lt;br /&gt;
*  Az aktivitás típusa a tevékenység jellegét írja le, például otthon, munka, stb.&lt;br /&gt;
* A &amp;#039;&amp;#039;leg&amp;#039;&amp;#039; &amp;#039;&amp;#039;mode&amp;#039;&amp;#039; attribútuma határozza meg, hogy hogyan fog a résztvevő az egyik helyszínről a másikra utazni, például &amp;#039;&amp;#039;car, pt (public transportation)&amp;#039;&amp;#039;.&lt;br /&gt;
** A legeknek lehet opcionálisan egy &amp;#039;&amp;#039;trav_time&amp;#039;&amp;#039; attribútuma, ami az utazás várható idejét adhatja meg.&lt;br /&gt;
** A legeknek tartalmazniuk kell egy útvonalat is. A kezdeti legek persze ezt nem tartalmazzák, ezt a MATSim kiszámolja.&lt;br /&gt;
&lt;br /&gt;
Egy résztvevő egyből elkezdi a következő leget, amint az előző (leg vagy activity) befejeződött. Amennyiben a mobsim olyan &amp;#039;&amp;#039;mode&amp;#039;&amp;#039;-ba ütközik, amit nem ismer, úgy a teleportálás utazási módot választja: ebben az esetben a kezdeti pontról eltűnik a résztvevő és a célponton felbukkan a várható utazási idő elteltével.&lt;br /&gt;
&lt;br /&gt;
==== Minimális populációs adatok ====&lt;br /&gt;
A populáció konfigurálása első pillantásra könnyen tűnhet túlságosan soknak, de az adatok között számos olyan van, amely opcionális. Adott esetben nehezen követhető, hogy mit kötelező és mit nem kötelező megadni, ezért álljon itt egy lista a könnyítő faktorokról:&lt;br /&gt;
* Egy emberhez elég egyetlen tervet megadni&lt;br /&gt;
* A terveket nem kell kiválasztani, se pontozni, vagyis mind a &amp;#039;&amp;#039;selected&amp;#039;&amp;#039;, mint a &amp;#039;&amp;#039;score&amp;#039;&amp;#039; attribútum elhagyható&lt;br /&gt;
* Az aktivitások helyszínéhez elgendő csak a koordinátáit megadni (tehát a &amp;#039;&amp;#039;link&amp;#039;&amp;#039; attribútum elhagyható) &lt;br /&gt;
* A &amp;#039;&amp;#039;leg&amp;#039;&amp;#039;eknek elegendő módot megadni, utat nem szükséges (azaz a &amp;#039;&amp;#039;route&amp;#039;&amp;#039; attribútum elhagyható)&lt;br /&gt;
&lt;br /&gt;
Egy példa minimális adatokkal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;population&amp;gt;&lt;br /&gt;
    &amp;lt;person id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;plan&amp;gt;&lt;br /&gt;
            &amp;lt;act type=&amp;quot;home&amp;quot; x=&amp;quot;5.0&amp;quot; y=&amp;quot;8.0&amp;quot; end_time=&amp;quot;08:00:00&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;leg mode=&amp;quot;car&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;act type=&amp;quot;work&amp;quot; x=&amp;quot;1500.0&amp;quot; y=&amp;quot;890.0&amp;quot; end_time=&amp;quot;17:30:00&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;leg mode=&amp;quot;car&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;act type=&amp;quot;home&amp;quot; x=&amp;quot;5.0&amp;quot; y=&amp;quot;8.0&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/plan&amp;gt;&lt;br /&gt;
    &amp;lt;/person&amp;gt;&lt;br /&gt;
    &amp;lt;person id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;/person&amp;gt;&lt;br /&gt;
&amp;lt;/population&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vizualizáció ==&lt;br /&gt;
A MATSim outputjának vizualizációjához mindenképpen third-party könyvtárakat kell használjunk. A fejlesztők az OTFVIS-t javasolják, így itt is azt mutatjuk be röviden. &lt;br /&gt;
&lt;br /&gt;
Az OTFVIS elvileg letölthető [http://matsim.org/files/builds/ a MATSim nightly (nem stabil) buildeket tartalmazó könyvtárából], mi itt azonban hosszas keresgélés után sem találtuk. Amennyiben a későbbiekben sem található itt meg, úgy alternatívának javasoljuk [https://github.com/matsim-org/matsim/releases a matsim projekt github oldalát].&lt;br /&gt;
&lt;br /&gt;
Felhívjúk rá a figyelmet, hogy az OTFVIS futtatása sok memóriát vehet igénybe, így célszerű a megfelelő Java beállításokkal elindítani, például legalább 500MB-tal. A parancs struktúrája Windowson a következő: &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
java -Xmx500m -cp MATSim.jar;otfvis/otfvis.jar org.matsim.contrib.otfvis.OTFVis arguments&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben Linux-on szeretnénk futtatni, úgy a pontosvesszőt cseréljük le kettőspontra. &lt;br /&gt;
&lt;br /&gt;
=== Snapshotok készítése és megjelenítése ===&lt;br /&gt;
Snapshotok készítését a következő példaparancshoz hasonló utasításokkal tudjuk elvégezni:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
java -cp MATSim.jar;otfvis/otfvis.jar org.matsim.contrib.otfvis.OTFVis -convert output/50.events.txt.gz input/network.xml.gz output/50.visualization.mvi 300&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;-convert&amp;lt;/code&amp;gt; utasítás után megadhatjuk a MATSim output file-ját, az input hálózatot, majd a file-t amibe szeretnénk elmenteni a snapshotot (ezt .mvi kiterjesztéssel tehetjük meg), valamint a snapshotok időtartamát másodpercekben. Tehát a fenti példaparancs ötpercenként fog egy snapshotot készíteni a hálózatunkról, és ezt elmenti egy .mvi fájlba, amit aztán megjeleníthetünk, a következő módon:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
java -cp MATSim.jar;otfvis/otfvis.jar org.matsim.contrib.otfvis.OTFVis output/50.visualization.mvi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Interaktív szimuláció ===&lt;br /&gt;
Az OFTVIS-t lehet használni interkatív szimulációra. Megjegyezzük, hogy a program képességei korlátozottak. &lt;br /&gt;
&lt;br /&gt;
Fontos tudni, hogy ebben az esetben az összes adatot (hálózat, populáció, stb) be kell tölteni a memóriába. Bár hardveres gyorsítást (OpenGL) használ, az igazán nagy fájlokkal így is akadhatnak gondok.&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy interaktív szimulációt indítsunk, nincs más dolgunk mint átadni az OTFVis-nek a konfigurációs fájlt amit egyébként a MATSimnek adnánk inputként. A következő egy lehetséges példahívás az interkatív vizualizálóra:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
java -cp MATSim.jar;otfvis/otfvis.jar org.matsim.contrib.otfvis.OTFVis input/config.xml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az implementációról szóló részben mutatunk példát arra, hogy hogyan futtathatjuk a saját programunkból az OFTVis-t, és hogyan fog kinézni a végeredmény.&lt;br /&gt;
&lt;br /&gt;
== Fejlesztői használat ==&lt;br /&gt;
Ebben azokat az információkat mutatjuk be, amiket szükséges tudnunk ha szeretnénk a saját programunkban használni a MATSim-et. A MATSim könyvtárat letölthetjük a [http://matsim.org/downloads projekt honlapjáról] vagy akár a [https://github.com/matsim-org/matsim/releases projekt github oldaláról is]. Azért javasoljuk az utóbbit, mert itt számos egyéb kiterjesztése is megtalálható, vagy hasznos third party libraryk, mint például a vizualizációhoz használható OFTVis. &lt;br /&gt;
&lt;br /&gt;
A MATSim moduláris felépítésű, de a fejlesztői által a modul nem egy precízen definiált fogalom: felhasználók által készített kiegészítések (úgynevezett contrib-ek, contribution-ök), opcionális elemek és a MATSim fontos, belső egységei (például a pontozás) is egy-egy modulnak számít. A MATSim teljes architektúráját az összes modullal a következő ábra foglalja össze:&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Matsim_Teljes_Architekt%C3%BAra.jpg]]&lt;br /&gt;
&lt;br /&gt;
A fenti ábra elég szerteágazó és sajnos a legtöbb eleméhez nem tartozik semmilyen dokumentáció. Ellenben nem minden itt felsorolt modult kötelező konfigurálni: némelyik opcionális (mint például az előző részben bemutatott OTFVis), mások pedig rendelkeznek alapértelmezett értékkel (mint például a pontozás, vagyis scoring). &lt;br /&gt;
&lt;br /&gt;
=== A MATSim használatának általános váza ===&lt;br /&gt;
A fenti ábra komplikáltságához képest a MATSim saját programból való próbafuttatása kevésbé bonyolult. Amennyiben a MATSim-et csak használni szeretnénk, úgy a következő általános váza legyen a programunknak:&lt;br /&gt;
* Példányosítsuk a Config osztályt a konfigurációs xml segítségével&lt;br /&gt;
** Létrehozhatunk default, &amp;quot;üres&amp;quot; Config-ot is&lt;br /&gt;
** Az xml-t érdemes lehet parancssori paraméterben beadni&lt;br /&gt;
** Megadhatjuk a Config további beállításait &lt;br /&gt;
* Példányosítsuk a Scenariot a Config példányunk segítségével&lt;br /&gt;
** A Scenario egy super-konténer ami minden adatot tartalmazni fog a konfigurációs fájlból (utak, populáció, household-ok, facility-k, stb.)&lt;br /&gt;
** Megadhatjuk a Scenario további beállításait&lt;br /&gt;
* Hozzuk létre a Controller-t a Scenario-t felhasználva&lt;br /&gt;
** A Controller felelős a szimuláció futtatásáért&lt;br /&gt;
** A Controller-t később bővebben ismertetjük&lt;br /&gt;
** Megadhatjuk a Controller további beállításait&lt;br /&gt;
&lt;br /&gt;
=== Egy egyszerű példafuttatás ===&lt;br /&gt;
Az alábbi kódot az egyik legegyszerűbb módszer, ahogyan futtathatjuk a MATSim-et. Nem használ valódi konfigurációt, csak az alapértelmezett &amp;quot;üreset&amp;quot;, de ennek ellenére érdemes lefuttatnunk, hogy ellenőrizzük, hogy mindent könyvtárat megfelelően húztunk e be. Helyes futás esetén a program logolja a konzolra a futás lépéseit, majd logol egy hibát amikor az üres outputot nem tudja kiírni, végül pedig jelzi, hogy sikeresen leállt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static void main(String[] args) {&lt;br /&gt;
		&lt;br /&gt;
    Config config; &lt;br /&gt;
		&lt;br /&gt;
    // Használjuk a ConfigUtils osztályt default konfigurációhoz vagy konfigurációs xml beolvasásához&lt;br /&gt;
    config = ConfigUtils.createConfig(); // &amp;quot;üres&amp;quot; konfiguráció létrehozása&lt;br /&gt;
&lt;br /&gt;
    // Egyéb, konfigurációval kapcsolatos beállítások&lt;br /&gt;
    config.controler().setLastIteration(1); // iterációk számának beállítása&lt;br /&gt;
    config.controler().setOverwriteFileSetting(OverwriteFileSetting.deleteDirectoryIfExists); //a kimeneti fájlok/mappa felülírása, ha már léteznek&lt;br /&gt;
&lt;br /&gt;
    // A Scenario szuperkonténer létrehozása&lt;br /&gt;
    Scenario scenario = ScenarioUtils.createScenario(config) ;&lt;br /&gt;
&lt;br /&gt;
    // A Controler létrehozása&lt;br /&gt;
    Controler controler = new Controler(scenario);&lt;br /&gt;
&lt;br /&gt;
    // A szimuláció futtatása&lt;br /&gt;
    controler.run();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Egy interaktív példa ===&lt;br /&gt;
Amennyiben a MATSimhez az OTFVis vizualizálót használjuk, úgy lehetőségünk van interaktív példát megjeleníteni.Emlékeztetünk, hogy ebben az esetben minden adat a memóriába töltődik!&lt;br /&gt;
&lt;br /&gt;
Az OFTVis a MATSimnek egy külső modulja, és a következő irányelveket érdemes követni a használata során:&lt;br /&gt;
* A Config osztályunk konstruktorparaméterében meg kell adni a modult (OTFVisConfigGroup)&lt;br /&gt;
* A ConfigUtils osztályból a Config példányunk megadásával lekérdezhetjük a OTFVisConfigGroup példányt&lt;br /&gt;
** Ezután módosíthatjuk az OTFVis konfigurációját&lt;br /&gt;
** Ezek a megjelenítéssel kapcsolatos beállítások&lt;br /&gt;
* A Controler-nek meg kell adnunk az OTFVis-t mint felülíró modul (az &amp;lt;code&amp;gt;addOverridingModule()&amp;lt;/code&amp;gt; metódus segítségével)&lt;br /&gt;
* A megjelenítés konfigurálásával készen is vagyunk: amennyiben a szimulációt nem kívánjuk módosítani, úgy futtathatjuk a Controlert&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static void main(final String[] args) {&lt;br /&gt;
    // Betöltjük a Configot a konfigurációs xml-ből és az OTFVisControlGroupból&lt;br /&gt;
    Config config = ConfigUtils.loadConfig(args[0], new OTFVisConfigGroup());&lt;br /&gt;
&lt;br /&gt;
    // Ha a kimeneti fájl/mappa már létezik, felülírjuk	&lt;br /&gt;
    config.controler().setOverwriteFileSetting(OverwriteFileSetting.deleteDirectoryIfExists) ;&lt;br /&gt;
&lt;br /&gt;
    // A szimulációval kapcsolatos beállítások&lt;br /&gt;
    config.qsim().setSnapshotStyle(SnapshotStyle.queue) ;&lt;br /&gt;
    config.qsim().setVehicleBehavior(QSimConfigGroup.VehicleBehavior.teleport);&lt;br /&gt;
    config.transit().setUseTransit(true);&lt;br /&gt;
&lt;br /&gt;
    // A vizualizációval kapcsolatos beállítások			&lt;br /&gt;
    OTFVisConfigGroup visConfig = ConfigUtils.addOrGetModule(config, OTFVisConfigGroup.GROUP_NAME, OTFVisConfigGroup.class);&lt;br /&gt;
    visConfig.setDrawTime(true);&lt;br /&gt;
    visConfig.setDrawNonMovingItems(true);&lt;br /&gt;
    visConfig.setAgentSize(125);&lt;br /&gt;
    visConfig.setLinkWidth(10);&lt;br /&gt;
    visConfig.setDrawTransitFacilityIds(false);&lt;br /&gt;
    visConfig.setDrawTransitFacilities(false);&lt;br /&gt;
&lt;br /&gt;
    // A Scenario szuperkonténer létrehozása&lt;br /&gt;
    Scenario scenario = ScenarioUtils.loadScenario(config) ;&lt;br /&gt;
		&lt;br /&gt;
    // A Controler létrehozása &lt;br /&gt;
    final Controler controler = new Controler(scenario) ;&lt;br /&gt;
&lt;br /&gt;
    // Megadjuk a controlernek a felülíró modult&lt;br /&gt;
    controler.addOverridingModule(new OTFVisLiveModule());&lt;br /&gt;
&lt;br /&gt;
    // A szimuláció futtatása&lt;br /&gt;
    controler.run();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== A Controler és eseményei ===&lt;br /&gt;
A MATSim magja a Controler. Az adatok beolvasása után ez felelős az egész szimuláció kézben tartásáért, természetesen minden részfeladatot almodulok hajtanak végre. Az alábbi ábrán a MATSim Controler-ének sémája látható. A teljes program eseményvezérelt, az alábbi ábrán látható, hogy a Controler milyen eseményeket válthat ki (ezek a &amp;lt;code&amp;gt;ControlerEvent&amp;lt;/code&amp;gt;-ek, amiket &amp;lt;code&amp;gt;ControlerListener&amp;lt;/code&amp;gt;-ek kezelnek. &lt;br /&gt;
&lt;br /&gt;
[[Fájl:Matsim_controler.jpg]]&lt;br /&gt;
&lt;br /&gt;
A fenti ábra minden pontjához tartozik egy esemény (pl a Startuphoz &amp;lt;code&amp;gt;StartupEvent&amp;lt;/code&amp;gt;, a Before Mobsim-hez &amp;lt;code&amp;gt;BeforeMobsimEvent&amp;lt;/code&amp;gt;, és így tovább. Ezek mind a &amp;lt;code&amp;gt;ControlEvent&amp;lt;/code&amp;gt; leszármazottai. A teljes lista megtalálható a MATSim javadoc-jában, [http://ci.matsim.org:8080/job/MATSim_M2/ws/matsim/target/site/apidocs/org/matsim/core/controler/events/ControlerEvent.html a ControlerEvent osztály] és [http://ci.matsim.org:8080/job/MATSim_M2/ws/matsim/target/site/apidocs/org/matsim/core/controler/listener/ControlerListener.html a ControlerListener interfész] oldalakon.&lt;br /&gt;
&lt;br /&gt;
A Controlerhez hasonlóan működik minden modul a saját eventjeivel és listenerjeivel. A MATSim saját kiterjesztése történhet ezeknek a moduloknak a kiterjesztésével vagy lecserélésével (például egy új pontozási szabály hozzáadásával), de akár a modulok lecserélése nélkül is kiválthatunk érdekes viselkedést.&lt;br /&gt;
&lt;br /&gt;
=== Egy példakiterjesztés modulváltoztatás nélkül ===&lt;br /&gt;
Tegyük fel, hogy statisztikákat szeretnénk a balra kanyarodásról. A MATSim [http://ci.matsim.org:8080/job/MATSim_M2/ws/matsim/target/site/apidocs/index.html eseményeit böngészve] láthatjuk, hogy létezik &amp;lt;code&amp;gt;LinkEnterEvent&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;LinkLeaveEvent&amp;lt;/code&amp;gt;. Ezek rendelkeznek információval az eseményt kiváltó járműről, a szóban forgó útszakaszról, és az &amp;lt;code&amp;gt;Event&amp;lt;/code&amp;gt; ősosztályból pedig egy időbélyeggel. A &amp;lt;code&amp;gt;Link&amp;lt;/code&amp;gt;-ek rendelkeznek kezdő és végponttal, amik rendelkeznek koordinátákkal, így a két event együtteséből ki tudjuk szűrni a balra kanyarodásokat. &lt;br /&gt;
&lt;br /&gt;
Ehhez egy olyan &amp;lt;code&amp;gt;Listener&amp;lt;/code&amp;gt;-t kell definiálnunk, ami a fent említett &amp;lt;code&amp;gt;LinkEnterEvent&amp;lt;/code&amp;gt;-re és &amp;lt;code&amp;gt;LinkLeaveEvent&amp;lt;/code&amp;gt;-re is figyel, és ezek információiból ki tudjuk szűrni a balra kanyarodásokat.&lt;br /&gt;
&lt;br /&gt;
Egy másik megközelítésben definiálhatnánk egy &amp;lt;code&amp;gt;LeftTurnEvent&amp;lt;/code&amp;gt;-et, amit bekötnénk a már létező &amp;lt;code&amp;gt;EventHandler&amp;lt;/code&amp;gt;-ek valamelyikébe (például a &amp;lt;code&amp;gt;LinkLeaveEventHandler&amp;lt;/code&amp;gt;-be).&lt;br /&gt;
&lt;br /&gt;
Ugyan lehet, hogy a balra kanyarodási statisztikáknak nincsen sok értelme, de hasonló megközelítésű számításokat jelenleg is végez a rendszer, nézzünk erre néhány példát: bizonyos statisztikákat, például az átlagos aktivitáshosszt jelenleg is így számolja a rendszer. Az újratervező modul is felhasználhatja az eseményeket: például megfelelő &amp;lt;code&amp;gt;Listener&amp;lt;/code&amp;gt;-ek figyelhetik, hogy milyen élek vannak tele egy-egy adott időpillanatban, és az újratervezőmodul ennek megfelelően választhat más útiterveket. A pontozómodul is használ eseményeket, hiszen a pontozáshoz szükséges tudni, hogy egy-egy aktivitás mennyi ideig tartott.&lt;br /&gt;
&lt;br /&gt;
A MATSimhez egy új modul definiálása hatalmas feladatnak tűnhet - egyrészt bonyolult algoritmusokat és architektúrát kell átlátni, másrészt a jelenlegi program dokumentációja erősen hiányos -, ugyanakkor, ahogy a fenti példa mutatja, a MATSim-et kiterjeszthetjük a meglévő modulok lecserélése nélkül is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások ==&lt;br /&gt;
Ebben a részben néhány konkrét példát nézünk, ahol a való életben alkalmazták a MATSimet.&lt;br /&gt;
&lt;br /&gt;
=== Németország ===&lt;br /&gt;
Az alábbi videóban látható példa egy ötszázezer fős részmintán elvégzett szimuláció eredménye. A teljes szimulációban négymillió résztvevő jármű volt. A résztvevők adatait egy 2008-as közlekedési felmérésből extrapolálták. A hálózat mintegy 360.000. élből és négymillió aktivitás-helyszínből áll, melyek az openstreetmap.org-ról származnak. &lt;br /&gt;
&lt;br /&gt;
A szimulációban a résztvevők teljes napi tervei szerepelnek, az aktivitásokat pedig otthon, munka, oktatás, vásárlás, kikapcsolódás és egyéb kategóriákba sorolták: a videóban egy-egy felvillanó pont egy aktivitás elkezdését jelenti, utána pedig a résztvevő színe jelzi az éppen aktuális aktivitás típusát. &lt;br /&gt;
&lt;br /&gt;
[https://vimeo.com/124704874 A szimulációból készült videót itt lehet megtekinteni.]&lt;br /&gt;
&lt;br /&gt;
=== Vorarlberg, Ausztria ===&lt;br /&gt;
Az Austrian Institute of Technology 2015-ben fejlesztett ki egy MATSim modellt az ország legnyugatibb tartománya, Vorarlberg számára. &lt;br /&gt;
&lt;br /&gt;
A tartomány hálózatát OpenStreetMap-ből származtatták, a populációt pedig egy 2013-as mobilitási felmérés alapján készítették.&lt;br /&gt;
&lt;br /&gt;
A tartománynak 380.000. lakója van, és a modell mindnyájukat szimulálja, de nem vesz figyelembe ünnepi forgalmat illetve más tartományokból érkezők által okozott forgalmat. &lt;br /&gt;
&lt;br /&gt;
A modell alapján három különböző lehetséges közlekedésfejlesztési tervet és azok hatásait kutatták: a tömegközlekedés fejlesztését, városfejlesztést és elektromos töltőállomások elhelyezését.&lt;br /&gt;
&lt;br /&gt;
[https://vimeo.com/166501600 A szimulációból készült videót itt lehet megtekinteni.]&lt;br /&gt;
&lt;br /&gt;
=== Európa légiforgalma ===&lt;br /&gt;
A VSP, TU Berlin által készített szimuláció az OAG Aviation repülési adataira épül, és jó példája annak, hogy a MATSim-et nem csak úthálózatok szimulálására lehet használni. A modell a MATSim egy átalakított verzióját használja, amiben lehetőség van a csomópontok (ezesetben repterek) számára korlátokat szabni (például kifutópályák száma). &lt;br /&gt;
&lt;br /&gt;
A szimulációban jól megfigyelhető, hogy a sok reptéren tiltott éjszakai repülési időszak végeztével (körülbelül hajnali 5 óra) milyen drasztikus mértékben megemelkedik a légiforgalom. &lt;br /&gt;
&lt;br /&gt;
[https://vimeo.com/54271303 A szimulációból készült videót itt lehet megtekinteni.]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=NASA_World_Wind_SDK&amp;diff=563</id>
		<title>NASA World Wind SDK</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=NASA_World_Wind_SDK&amp;diff=563"/>
		<updated>2017-05-25T09:39:40Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bevezetés==&lt;br /&gt;
&lt;br /&gt;
NASA World Wind SDK egy ingyenes, nyílt-forráskódú virtuális földgömb weboldalakhoz és web applikációkhoz.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alapvetően három API-t biztosít:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* Webes&lt;br /&gt;
Ezen wiki oldal témája a webes felhasználás.&lt;br /&gt;
&lt;br /&gt;
Web World Wind-et JavaScriptben írták és egy JavaScript API-t biztosít ahhoz, hogy egy virtuális földgömb összes aspektusát kezelhessük. A Web World Wind lehetővé teszi, hogy a fejlesztők gyorsan és könnyen interaktív vizualizációt készíthessenek különböző földrajzi adatoknak egy 2 dimenziós térképen vagy 3 dimenziós földgömbön.&lt;br /&gt;
&lt;br /&gt;
A világon sok szervezet használja a Web World Wind-et arra, hogy monitorozzanak időjárás mintákat, városokat vizualizáljanak, járművek mozgását kövessék, földrajzi adatokat elemezzenek vagy oktassák az embereket a Földről.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Néhány lehetőség:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sok előre beépített, magas felbontású képpel rendelkezik&lt;br /&gt;
* Sok beépített alakzat megvalósítható&lt;br /&gt;
* Beépített navigációs lehetőségek&lt;br /&gt;
* Több földgömb is megjeleníthető egy oldalon&lt;br /&gt;
* ShapeFile támogatás&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Függőségek&amp;#039;&amp;#039;&amp;#039; (opcionális)&lt;br /&gt;
* Bootstrap&lt;br /&gt;
* JQuery&lt;br /&gt;
* RequireJS&lt;br /&gt;
&lt;br /&gt;
Demo: http://people.inf.elte.hu/hagtabi/web_world_wind/demo.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Keretrendszer&amp;quot; letöltése zipben: [[Fájl:hb0mt7_web_world_wind.zip]]&lt;br /&gt;
&lt;br /&gt;
==Koncepció==&lt;br /&gt;
&lt;br /&gt;
A Web World Wind egy komponens amely beágyazódik a weboldalba. Ezt a komponenst hívjuk World Windownak. &lt;br /&gt;
&lt;br /&gt;
=== World Window ===&lt;br /&gt;
&lt;br /&gt;
A World Window objektum a funkcionalitást egy HTML canvas köré építi. A canvas általában egy &amp;quot;div&amp;quot; és az attribútumként megadott id-val paraméterezzük a World Window objektumot. Egy oldal több World Widow objektumot tartalmazhat, mindegyik canvashoz tartozik egy.&lt;br /&gt;
&lt;br /&gt;
A World Window tartalmaz egy Globe-ot, egy Navigator-t és egy Layer List-et. Ezek automtiusan jönnek létre amikor a World Window konstruálódik. A Globe és Navigator lecserélhető. Ezeken felül a World Window felel még az eseménykezelésért.&lt;br /&gt;
&lt;br /&gt;
A World Window felépítése:&lt;br /&gt;
&lt;br /&gt;
[[Fájl:nasa_world_wind_sdk_architecture1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:relative&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;canvas id=&amp;quot;canvasOne&amp;quot; width=&amp;quot;1000&amp;quot; height=&amp;quot;1000&amp;quot; style=&amp;quot;width: 100%; height: auto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A World Wind mellett a rétegek a legfontosabb objektumok. Ezen rétegek tárolják a World Winden megjelenő összes információt. A képek, alakzatok, dekorációs elemek stb. mind-mind különálló rétegekben tárolódnak.&lt;br /&gt;
&lt;br /&gt;
Minden World Wind objektum tartalmaz egy listát amely a rétegeket tartalmazza. Ezt nevezik Layer List-nek. Ez a lista tartalmazza az összes definiált réteget, és alapesetben üres. Amikor a World Wind rajzol, akkor bejárja ezt a listát és sorrendben megrajzolja a benne lévő rétegeket.&lt;br /&gt;
&lt;br /&gt;
Fontosabb réteg attribútumok:&lt;br /&gt;
&lt;br /&gt;
*displayName : Szöveg, a réteg nevét adhatjuk meg, és később ez megjeleníthető.&lt;br /&gt;
*enabled : Logikai, lehetővé teszi, hogy a réteget kikapcsoljuk, de közben a listában benne marad.&lt;br /&gt;
*pickEnabled : Logikai, megmondja, hogy a réteg és a tartalma &amp;quot;pickelhető-e&amp;quot;.&lt;br /&gt;
*opacity : 0-1 közötti szám a réteg átlátszóságát szabályozza. &lt;br /&gt;
&lt;br /&gt;
Két fontosabb rétegtípus van.&lt;br /&gt;
&lt;br /&gt;
* Kép réteg (Image Layer) : olyan képet tartalmaz amelyet a felszínre vetítünk ki. Ez tipikusan az egész földgömbre kiterjed de ez nem kötelező.&lt;br /&gt;
* Renderelhető réteg (Renderable Layer): akkor használjuk ha alakzatokat szeretnénk megjeleníteni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a  World Window-t&lt;br /&gt;
var wwd = new WorldWind.WorldWindow(&amp;quot;canvasOne&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk és hozzáadjuk a layereket&lt;br /&gt;
wwd.addLayer(new WorldWind.BMNGLayer());&lt;br /&gt;
wwd.addLayer(new WorldWind.BingAerialWithLabelsLayer(null));&lt;br /&gt;
wwd.addLayer(new WorldWind.CompassLayer());&lt;br /&gt;
wwd.addLayer(new WorldWind.CoordinatesDisplayLayer(wwd));&lt;br /&gt;
wwd.addLayer(new WorldWind.ViewControlsLayer(wwd));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alakzatok ===&lt;br /&gt;
&lt;br /&gt;
Alakzatok reprezentálják azokat az információkat amit meg szeretnénk jeleníteni és a földgömbhöz kapcsolódik. Egy ilyen objektum sokféle lehet, az egyszerű helyzet-jelölőtől kezdve a komplex rajzolt alakzatokig. Minden alakzat egy rétegben tárolódik és ez a réteg pedig megtalálható a World Wind Layer List-jében.&lt;br /&gt;
Minden World Wind alakzathoz sokféle attribútum kapcsolható, ezzel vezérelve pl: a színt vagy láthatóságot.&lt;br /&gt;
A legtöbb alakzathoz ez egy ShapeAttributes osztály, de például a helyjelzőnél a szöveget lehet formázni.&lt;br /&gt;
&lt;br /&gt;
Ha egy ilyen attribútum osztály konstruktorának null értéket adunk paraméterül, akkor automatikusan úgy veszi, hogy mindenből a default értéket szeretnénk használni. Ide megadható egy már korábban vagy frissen létrehozott objektum.  Fontos, hogy ha egy alakzathoz hozzárendelünk egy attribútumot az nem másolódik le, így minden változás adott esetben több alakzatot is érinthet. Ezt elkerülendő érdemes minden alakzathoz saját attribútumokat definiálni. (Viszont ez kihasználható, hogy ha több alakzatnak szeretnénk ugyanazokat az attribútumokat beállítani, akkor maradhat egy és azt állítjuk be az alakzatokhoz.)&lt;br /&gt;
&lt;br /&gt;
Az alakzatok kétféle attribútumhalmazt tárolnak. Egyet saját magának, egyet pedig az alakzat kiemelésének. Minden alakzatnak egy egy logikai értéke amely megmondja, hogy az kiemelhető-e (highlighted). Ha ez igaz, akkor érvényesek a kiemelés attribútumai.&lt;br /&gt;
Kezdetben a kiemelés attribútumai null-ok és amennyiben nem adunk meg ilyet, de kiválasztjuk, hogy az alakzat kiemelhető, akkor az alakzat saját attribútumait veszi figyelembe.&lt;br /&gt;
&lt;br /&gt;
==== Út típus ====&lt;br /&gt;
&lt;br /&gt;
Némely alakzatnak van olyan attribútuma amely meghatározza, hogy milyen módon kerül megrajzolásra.&lt;br /&gt;
&lt;br /&gt;
*WorldWind.GREAT_CIRCLE : Az alakzat útjai/élei egy nagy körutat követnek a definiáló pozíciók között. A földgömb görbületét figyelembe veszi.&lt;br /&gt;
*WorldWind.RHUMB_LINE : Az alakzat útjai/élei egy loxodroma-t (egy gömb felületére írt csavarvonal) követnek a definiáló pontok között. A földgömb görbületét figyelembe veszi.&lt;br /&gt;
*WorldWind.LINEAR : Az alakzat útjai vagy élei egy szimla egyenes vonalat követnek a definiáló pozíciók között. A földgömb görbületét nem figyelembe veszi.&lt;br /&gt;
&lt;br /&gt;
Minden alakzatra az alapértelmezett érték WorldWind.GREAT_CIRCLE.&lt;br /&gt;
&lt;br /&gt;
==== Magasság típus ====&lt;br /&gt;
&lt;br /&gt;
Minden alakzat amely a geológiai pozíciójával van megadva, létezik egy attribútum amely megmondja az alakzatát magasságának kapcsolatát a tereppel.&lt;br /&gt;
&lt;br /&gt;
*WorldWind.ABSOLUTE : A magasságot relatív távolságként kezeli az elipszoid felszínéhez képest.&lt;br /&gt;
*WorldWind.RELATIVE_TO_GROUND : A magasságot a terepen lévő pozíció koordinátáitól vett távolságként kezeli.&lt;br /&gt;
*WorldWind.CLAMP_TO_GROUND : A magasságot nem veszi figyelembe és úgy veszi mint ha terepen lenne.&lt;br /&gt;
&lt;br /&gt;
Minden alakzat esetén az alapérték a WorldWind.ABSOLUTE.&lt;br /&gt;
&lt;br /&gt;
===Glóbusz ===&lt;br /&gt;
&lt;br /&gt;
Globe reprezentál egy WGS84 elipszoidot és a területet. továbbá kezeli a különböző 2D-s projekciókat, ami használhatóak a +D-s glóbusz helyett. Alapesetben ezen kívül az alkalmazás nem nagyon lép interakcióba a glóbusszal. Ez alól kivétel például ha az alkalmazásunk a terület emelkedésével szeretne számolni.&lt;br /&gt;
&lt;br /&gt;
Minden World Window-nak eg Globe-ja van és automatikusan létrejön, amikor a World Window is. Az alkalmazásban a Globe lecserélhető egy másikra.&lt;br /&gt;
&lt;br /&gt;
=== Navigátor===&lt;br /&gt;
&lt;br /&gt;
A Navigator objektum felelős azért, hogy a felhasználói interakciókat átalakítsa a földgömbön megjelenő változásokká. Folyamatosan figyeli az egér eseményeket és ezeket alakítja át mozgássá, forgatássá vagy zoomolássá. A Navigator segítségével lehet egy adott pozícióra navigálni.&lt;br /&gt;
&lt;br /&gt;
Minden World Wind objektumnak megvan a saját Navigator objektuma, Ez a Navigator automatikusan jön létre, akkor amikor a World Wind objektumok létrejön. Ez a Navigator lecserélhető, ha a fejlesztő készített egy másképp működőt amely jobban megfelel az igényeknek.&lt;br /&gt;
&lt;br /&gt;
==Főbb funkcionalitások==&lt;br /&gt;
&lt;br /&gt;
=== Alakzatok ===&lt;br /&gt;
&lt;br /&gt;
====Szövegek ====&lt;br /&gt;
&lt;br /&gt;
Egy adott földrajzi ponthoz tartozó szöveget reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Példa adat&lt;br /&gt;
var peaks =&lt;br /&gt;
		[&lt;br /&gt;
			{&lt;br /&gt;
				&amp;#039;name&amp;#039;: &amp;quot;Mount McKinley\n(Denali)&amp;quot;, // Mount McKinley&lt;br /&gt;
				&amp;#039;state&amp;#039;: &amp;quot;Alaska&amp;quot;,&lt;br /&gt;
				&amp;#039;elevation&amp;#039;: 6194,&lt;br /&gt;
				&amp;#039;latitude&amp;#039;: 63.0690,&lt;br /&gt;
				&amp;#039;longitude&amp;#039;: -151.0063&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;#039;name&amp;#039;: &amp;quot;Mauna\nKea&amp;quot;,&lt;br /&gt;
				&amp;#039;state&amp;#039;: &amp;quot;Hawaii&amp;quot;,&lt;br /&gt;
				&amp;#039;elevation&amp;#039;: 4205,&lt;br /&gt;
				&amp;#039;latitude&amp;#039;: 19.8207,&lt;br /&gt;
				&amp;#039;longitude&amp;#039;: -155.4680&lt;br /&gt;
			}];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var text,&lt;br /&gt;
    textAttributes = new WorldWind.TextAttributes(null),&lt;br /&gt;
    textLayer = new WorldWind.RenderableLayer(&amp;quot;Fölrajzi szöveg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Alap attribútumok beállítása (pl: szín)&lt;br /&gt;
textAttributes.color = WorldWind.Color.RED;&lt;br /&gt;
textAttributes.depthTest = false;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a szöveg &amp;quot;alakzatokat&amp;quot;&lt;br /&gt;
for (var i = 0, len = peaks.length; i &amp;lt; len; i++) {&lt;br /&gt;
    var peak = peaks[i],&lt;br /&gt;
    peakPosition = new WorldWind.Position(peak.latitude, peak.longitude, peak.elevation);&lt;br /&gt;
    text = new WorldWind.GeographicText(peakPosition, peak.name + &amp;quot;\n&amp;quot; + peak.state);&lt;br /&gt;
&lt;br /&gt;
    //Beállítjuk az alakzatohoz a szöveget&lt;br /&gt;
    text.attributes = textAttributes;&lt;br /&gt;
&lt;br /&gt;
    //Hozzáadjuk a szöveget a layerhez&lt;br /&gt;
    textLayer.addRenderable(text);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//A szöveg layert hozzáadjuk a globál layerhez&lt;br /&gt;
wwd.addLayer(textLayer);&lt;br /&gt;
&lt;br /&gt;
//Létrehozunk egy managert, hogy tudjuk vezérelni a szöveg réteget.&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Utak====&lt;br /&gt;
&lt;br /&gt;
Egyenes vagy görbe vonalat reprezentál előre megadott pozíciók között. A megrajzolt vonal az alábbi típusú lehet:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.GREAT_CIRCLE&lt;br /&gt;
* WorldWind.RHUMB_LINE&lt;br /&gt;
* WorldWind.LINEAR&lt;br /&gt;
&lt;br /&gt;
Az utat alkotó pontok közötti magasságot meghatározza az út magasság módja amely az alábbiak lehetnek:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.ABSOLUTE&lt;br /&gt;
* WorldWind.RELATIVE_TO_GROUND&lt;br /&gt;
* WorldWind.CLAMP_TO_GROUND&lt;br /&gt;
&lt;br /&gt;
Külön attribútumok tartoznak a normál és a kiemelt megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Úthoz tartozó poziciók létrehozása&lt;br /&gt;
var pathPositions = [];&lt;br /&gt;
pathPositions.push(new WorldWind.Position(40, -100, 1e4));&lt;br /&gt;
pathPositions.push(new WorldWind.Position(45, -110, 1e4));&lt;br /&gt;
pathPositions.push(new WorldWind.Position(46, -122, 1e4));&lt;br /&gt;
&lt;br /&gt;
// Az út létrehozása&lt;br /&gt;
var path = new WorldWind.Path(pathPositions, null);&lt;br /&gt;
path.altitudeMode = WorldWind.RELATIVE_TO_GROUND;&lt;br /&gt;
path.followTerrain = true;&lt;br /&gt;
path.extrude = true;&lt;br /&gt;
path.useSurfaceShapeFor2D = true;&lt;br /&gt;
&lt;br /&gt;
// Az úthoz tartozó attribútumok étrehozása&lt;br /&gt;
var pathAttributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
pathAttributes.outlineColor = WorldWind.Color.BLUE;&lt;br /&gt;
pathAttributes.interiorColor = new WorldWind.Color(0, 1, 1, 0.5);&lt;br /&gt;
pathAttributes.drawVerticals = path.extrude;&lt;br /&gt;
path.attributes = pathAttributes;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Kiemelés létrehozása&lt;br /&gt;
var highlightAttributes = new WorldWind.ShapeAttributes(pathAttributes);&lt;br /&gt;
highlightAttributes.outlineColor = WorldWind.Color.CYAN;&lt;br /&gt;
highlightAttributes.interiorColor = new WorldWind.Color(1, 1, 1, 0.5);&lt;br /&gt;
path.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
//Az utat hozzáadjuk egy layerhez, és betesszük a globális layerbe&lt;br /&gt;
var pathsLayer = new WorldWind.RenderableLayer();&lt;br /&gt;
pathsLayer.displayName = &amp;quot;Paths&amp;quot;;&lt;br /&gt;
pathsLayer.addRenderable(path);&lt;br /&gt;
wwd.addLayer(pathsLayer);&lt;br /&gt;
&lt;br /&gt;
//Layermanager létrehozása&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
//Eseménykezelés a kiemeléshez&lt;br /&gt;
var highlightController = new WorldWind.HighlightController(wwd);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Poligonok====&lt;br /&gt;
&lt;br /&gt;
Egy 3D-s poligont reprezentál. A poligonnak több határt is beállíthatunk, ezzel üres területeteket képezve. A poligon magassága az alábbiak lehetnek:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.WorldWind.ABSOLUTE&lt;br /&gt;
* WorldWind.RELATIVE_TO_GROUND&lt;br /&gt;
* WorldWind.CLAMP_TO_GROUND&lt;br /&gt;
&lt;br /&gt;
Külön attribútumok tartoznak a normál és a kiemelt megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligonokat tároló réteget&lt;br /&gt;
var polygonsLayer = new WorldWind.RenderableLayer();&lt;br /&gt;
polygonsLayer.displayName = &amp;quot;Polygons&amp;quot;;&lt;br /&gt;
wwd.addLayer(polygonsLayer);&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligon határait&lt;br /&gt;
var boundaries = [];&lt;br /&gt;
boundaries[0] = []; // külső határ&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(40, -100, 1e5));&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(45, -110, 1e5));&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(40, -120, 1e5));&lt;br /&gt;
&lt;br /&gt;
boundaries[1] = []; // belső határ&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(41, -103, 1e5));&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(44, -110, 1e5));&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(41, -117, 1e5));&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuka a poligont és hozzáadjuk az attribútumait.&lt;br /&gt;
&lt;br /&gt;
var polygon = new WorldWind.Polygon(boundaries, null);&lt;br /&gt;
polygon.altitudeMode = WorldWind.ABSOLUTE;&lt;br /&gt;
polygon.extrude = true; &lt;br /&gt;
&lt;br /&gt;
var polygonAttributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
polygonAttributes.drawInterior = true;&lt;br /&gt;
polygonAttributes.drawOutline = true;&lt;br /&gt;
polygonAttributes.outlineColor = WorldWind.Color.BLUE;&lt;br /&gt;
polygonAttributes.interiorColor = new WorldWind.Color(0, 1, 1, 0.5);&lt;br /&gt;
polygonAttributes.drawVerticals = polygon.extrude;&lt;br /&gt;
polygonAttributes.applyLighting = true;&lt;br /&gt;
polygon.attributes = polygonAttributes;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligonhoz tartozó kiemelést&lt;br /&gt;
var highlightAttributes = new WorldWind.ShapeAttributes(polygonAttributes);&lt;br /&gt;
highlightAttributes.outlineColor = WorldWind.Color.RED;&lt;br /&gt;
highlightAttributes.interiorColor = new WorldWind.Color(1, 1, 1, 0.5);&lt;br /&gt;
polygon.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
//Hozzáadjuk a layerhez&lt;br /&gt;
polygonsLayer.addRenderable(polygon);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Helyjelző====&lt;br /&gt;
&lt;br /&gt;
Bármilyen pozíción megjelenő képet/címkét reprezentál. Lehet használni a beépített képeket vagy használhatunk sajátot, illetve a html-el is lehet rajzolni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Definiáljuk a képeket amiket helyjelzőnek használunk.&lt;br /&gt;
var images = [&lt;br /&gt;
	&amp;quot;plain-black.png&amp;quot;,&lt;br /&gt;
	&amp;quot;plain-blue.png&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
var pinLibrary = WorldWind.configuration.baseUrl + &amp;quot;images/pushpins/&amp;quot;, // a képek helye&lt;br /&gt;
	placemark,&lt;br /&gt;
	placemarkAttributes = new WorldWind.PlacemarkAttributes(null),&lt;br /&gt;
	highlightAttributes,&lt;br /&gt;
	placemarkLayer = new WorldWind.RenderableLayer(&amp;quot;Placemarks&amp;quot;),&lt;br /&gt;
	latitude = 47.684444,&lt;br /&gt;
	longitude = -121.129722;&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a közös attribútumokat.&lt;br /&gt;
placemarkAttributes.imageScale = 1;&lt;br /&gt;
placemarkAttributes.imageOffset = new WorldWind.Offset(&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.3,&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.0);&lt;br /&gt;
placemarkAttributes.imageColor = WorldWind.Color.WHITE;&lt;br /&gt;
placemarkAttributes.labelAttributes.offset = new WorldWind.Offset(&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.5,&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 1.0);&lt;br /&gt;
placemarkAttributes.labelAttributes.color = WorldWind.Color.YELLOW;&lt;br /&gt;
placemarkAttributes.drawLeaderLine = true;&lt;br /&gt;
placemarkAttributes.leaderLineAttributes.outlineColor = WorldWind.Color.RED;&lt;br /&gt;
&lt;br /&gt;
// Minden képhez létrehozunk egy Placemarkot és címkét&lt;br /&gt;
for (var i = 0, len = images.length; i &amp;lt; len; i++) {&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	placemark = new WorldWind.Placemark(new WorldWind.Position(latitude, longitude + i, 1e2), true, null);&lt;br /&gt;
	placemark.label = &amp;quot;Placemark &amp;quot; + i.toString() + &amp;quot;\n&amp;quot;&lt;br /&gt;
	+ &amp;quot;Lat &amp;quot; + placemark.position.latitude.toPrecision(4).toString() + &amp;quot;\n&amp;quot;&lt;br /&gt;
	+ &amp;quot;Lon &amp;quot; + placemark.position.longitude.toPrecision(5).toString();&lt;br /&gt;
	placemark.altitudeMode = WorldWind.RELATIVE_TO_GROUND;&lt;br /&gt;
&lt;br /&gt;
	.&lt;br /&gt;
	placemarkAttributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
	placemarkAttributes.imageSource = pinLibrary + images[i];&lt;br /&gt;
	placemark.attributes = placemarkAttributes;&lt;br /&gt;
&lt;br /&gt;
	//Létrehozzuk a kiemeléshez tartozó attribútumokat&lt;br /&gt;
	highlightAttributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
	highlightAttributes.imageScale = 1.2;&lt;br /&gt;
	placemark.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
	//Hozzáadjuk a réteghez.&lt;br /&gt;
	placemarkLayer.addRenderable(placemark);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Hozzáadjuk a réteget a globális réteghez.&lt;br /&gt;
wwd.addLayer(placemarkLayer);&lt;br /&gt;
&lt;br /&gt;
// Létrehozunk egy Layermanagert a kezelhetőségért&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====További alakzatok====&lt;br /&gt;
&lt;br /&gt;
*Felszíni alakzatok: Hasonlóak a fent taglalt Poligonokhoz. (Surface Shapes)&lt;br /&gt;
*Képernyő kép: Segítségével képernyő-re képet rajzolhatunk. (Screen Image)&lt;br /&gt;
*Képernyő szöveg : Segítségével szöveget helyezhetünk el a képernyőn. (Screen Text)&lt;br /&gt;
&lt;br /&gt;
=== Eseménykezelés ===&lt;br /&gt;
&lt;br /&gt;
A legtöbb alkalmazás általában figyeli és reagál a különböző JavaScript eseményekre. Mivel itt azonban a Navigator objektum figyeli az egér és kézmozdulat eseményeket amivel a felhasználó manipulálhatja a földgömböt, ezért kénytelen vagyunk valamiféle koordinációt végezni az alkalmazás és a Navigator eseménykezelése között. Fontos, hogy a Web World Wind nem figyeli a billentyűzet eseményeit, így ezt nem kell koordinálni.&lt;br /&gt;
&lt;br /&gt;
Ha az alkalmazásunk mobilon is fut akkor az egér mellett az érzékelés eseményeit is figyelni kell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Egér eseménykezelés ====&lt;br /&gt;
&lt;br /&gt;
Az esemény kezelőt be kell regisztrálni a World Window addEventListener metódusával.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
var wwd = new WorldWind.WorldWindow(&amp;quot;canvasOne&amp;quot;);&lt;br /&gt;
wwd.addEventListener(&amp;quot;mousemove&amp;quot;, function (event) {...});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az így hozzáadott listenerek a Navigator eseménykezelése előtt hívódnak meg.&lt;br /&gt;
Azok az eseménykezelők akik választoktak az eseményre meg kell hívniuk a preventDefault -ot, hogy ezzel jelezzék a Navigatornak és a többi eseménykezelőnek, hogy ignorálják az eseményt. Továbbá az eseménykezelőknek érdemes megvizsgálni, hogy az eseményre válaszolt-e már valaki.&lt;br /&gt;
&lt;br /&gt;
A fentiek alól kivétel a kattintás, mivel azt  ClickRecognizer-el érdemes lekezelni. Ez kapcsolatban áll a Navigator-ral és kézmozdulat felismerőkkel, így elkerülve a duplikált eseménykezelést.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var clickRecognizer = new WorldWind.ClickRecognizer(wwd, &lt;br /&gt;
    function(recognizer) {&lt;br /&gt;
        ...&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Kézmozdulat eseménykezelés ====&lt;br /&gt;
&lt;br /&gt;
Itt is érdemes a beépített TapRecognizer osztályt használni. Ez képes felismerni a különböző képernyőt ért kézmozdulatokat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Általános kézmozdulat kezelő function&lt;br /&gt;
var handleClick = function (recognizer) {&lt;br /&gt;
    // Obtain the event location.&lt;br /&gt;
    var x = recognizer.clientX,&lt;br /&gt;
        y = recognizer.clientY;&lt;br /&gt;
&lt;br /&gt;
    //A felhasználó valahová mutat&lt;br /&gt;
    var pickList = wwd.pick(wwd.canvasCoordinates(x, y));&lt;br /&gt;
&lt;br /&gt;
    //Ha terepre mutatott akkor menjünk oda&lt;br /&gt;
    if (pickList.objects.length == 1 &amp;amp;&amp;amp; pickList.objects[0].isTerrain) {&lt;br /&gt;
        var position = pickList.objects[0].position;&lt;br /&gt;
        goToAnimator.goTo(new WorldWind.Location(position.latitude, position.longitude));&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Figyeljük az egér kattintásokat&lt;br /&gt;
var clickRecognizer = new WorldWind.ClickRecognizer(wwd, handleClick);&lt;br /&gt;
&lt;br /&gt;
// Figyeljük a kézmozdulatokat&lt;br /&gt;
var tapRecognizer = new WorldWind.TapRecognizer(wwd, handleClick);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Navigáció ===&lt;br /&gt;
&lt;br /&gt;
Hacsak nem szeretnénk a felhasználó nézetét programmal változtatni, akkor sose kell interakcióba lépni a navigátorral. De természetesen lehetséges a navigátort az alkalmazásból irányítani.&lt;br /&gt;
&lt;br /&gt;
A Navigator objektumnak elsődlegesen kettő attribútuma felel az irányításért:&lt;br /&gt;
&lt;br /&gt;
*LookAtLocation: Jelzi  a szélességet és hosszúságot ahová a felhasználó nézőpontja néz&lt;br /&gt;
*range: Jelzi a szem távolságát az ellipszoidtól.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Beállítjuk, hogy a Navigator erre pontra nézzen és ilyen magasan legyen.&lt;br /&gt;
wwd.navigator.lookAtLocation.latitude = 65;&lt;br /&gt;
wwd.navigator.lookAtLocation.longitude = -150;&lt;br /&gt;
wwd.navigator.range = 2e6; // 2 millió méterrel az ellipsziod felett&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez azonban azonnal az új nézethez ugrik. Viszont szebben néz ki, fokozatosan és simán mozog oda ahová szeretnénk.&lt;br /&gt;
Ehhez használhatjuk a GoToAnimator-t.&lt;br /&gt;
&lt;br /&gt;
=== Shape File ===&lt;br /&gt;
&lt;br /&gt;
A World Wind Web támogatja a Shape File-opk használatát egy beépített ShapeFile osztály segítségével. Ez értelmezési a kapott Shape File-t és tartalmából alakzatokat készít. A pontokból helyjelzők, a vonalalkból utak, a poligonokból poligonokat csinál.Az értelmezés végén definiálható egy hívás ami akkor történik miután az egészet értelmeztük, de még nem készültek el az alakzatok.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a Shape File mellett található attribútm file is (.dbf), azt automatikusan felismeri és értelmezi a Shape File-al együtt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk azt a callback functiont amely lefut a sikeres tötéskor, de még az alakzat rajzolása előtt&lt;br /&gt;
var shapeConfigurationCallback = function (attributes, record) {&lt;br /&gt;
var configuration = {};&lt;br /&gt;
configuration.name = attributes.values.name || attributes.values.Name || attributes.values.NAME;&lt;br /&gt;
&lt;br /&gt;
if (record.isPointType()) {&lt;br /&gt;
	configuration.name = attributes.values.name || attributes.values.Name || attributes.values.NAME;&lt;br /&gt;
&lt;br /&gt;
	configuration.attributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
&lt;br /&gt;
	if (attributes.values.pop_max) {&lt;br /&gt;
		var population = attributes.values.pop_max;&lt;br /&gt;
		configuration.attributes.imageScale = 0.01 * Math.log(population);&lt;br /&gt;
	}&lt;br /&gt;
} else if (record.isPolygonType()) {&lt;br /&gt;
	configuration.attributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
&lt;br /&gt;
	//Kiszínezztük a kapott poligonokat valamilyen véletlenszerű színnel&lt;br /&gt;
	configuration.attributes.interiorColor = new WorldWind.Color(&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		1.0);&lt;br /&gt;
&lt;br /&gt;
	//Kifestjük a határt valamilyen a belsőnél sötátebb színnel&lt;br /&gt;
	configuration.attributes.outlineColor = new WorldWind.Color(&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.red,&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.green,&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.blue,&lt;br /&gt;
		1.0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return configuration;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Honnan vegye a file-okat&lt;br /&gt;
var shapefileLibrary = &amp;quot;http://worldwindserver.net/webworldwind/data/shapefiles/naturalearth&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a réteget azt adatoknak.&lt;br /&gt;
var worldLayer = new WorldWind.RenderableLayer(&amp;quot;Countries&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a file-t feldolgozó osztályt&lt;br /&gt;
var worldShapefile = new WorldWind.Shapefile(shapefileLibrary + &amp;quot;/ne_110m_admin_0_countries/ne_110m_admin_0_countries.shp&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Betöltjük a file-t&lt;br /&gt;
worldShapefile.load(null, shapeConfigurationCallback, worldLayer);&lt;br /&gt;
&lt;br /&gt;
//Hozzáadjuk a réteget&lt;br /&gt;
wwd.addLayer(worldLayer);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Felhasznált irodalom==&lt;br /&gt;
&lt;br /&gt;
NASA World Wind hivatalos oldal : https://worldwind.arc.nasa.gov/&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=NASA_World_Wind_SDK&amp;diff=562</id>
		<title>NASA World Wind SDK</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=NASA_World_Wind_SDK&amp;diff=562"/>
		<updated>2017-05-25T09:37:09Z</updated>

		<summary type="html">&lt;p&gt;Mate: külső kép beágyazása&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bevezetés==&lt;br /&gt;
&lt;br /&gt;
NASA World Wind SDK egy ingyenes, nyílt-forráskódú virtuális földgömb weboldalakhoz és web applikációkhoz.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alapvetően három API-t biztosít:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* Webes&lt;br /&gt;
Ezen wiki oldal témája a webes felhasználás.&lt;br /&gt;
&lt;br /&gt;
Web World Wind-et JavaScriptben írták és egy JavaScript API-t biztosít ahhoz, hogy egy virtuális földgömb összes aspektusát kezelhessük. A Web World Wind lehetővé teszi, hogy a fejlesztők gyorsan és könnyen interaktív vizualizációt készíthessenek különböző földrajzi adatoknak egy 2 dimenziós térképen vagy 3 dimenziós földgömbön.&lt;br /&gt;
&lt;br /&gt;
A világon sok szervezet használja a Web World Wind-et arra, hogy monitorozzanak időjárás mintákat, városokat vizualizáljanak, járművek mozgását kövessék, földrajzi adatokat elemezzenek vagy oktassák az embereket a Földről.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Néhány lehetőség:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sok előre beépített, magas felbontású képpel rendelkezik&lt;br /&gt;
* Sok beépített alakzat megvalósítható&lt;br /&gt;
* Beépített navigációs lehetőségek&lt;br /&gt;
* Több földgömb is megjeleníthető egy oldalon&lt;br /&gt;
* ShapeFile támogatás&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Függőségek&amp;#039;&amp;#039;&amp;#039; (opcionális)&lt;br /&gt;
* Bootstrap&lt;br /&gt;
* JQuery&lt;br /&gt;
* RequireJS&lt;br /&gt;
&lt;br /&gt;
Demo: http://people.inf.elte.hu/hagtabi/web_world_wind/demo.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Keretrendszer&amp;quot; letöltése zipben: [[Fájl:hb0mt7_web_world_wind.zip]]&lt;br /&gt;
&lt;br /&gt;
==Koncepció==&lt;br /&gt;
&lt;br /&gt;
A Web World Wind egy komponens amely beágyazódik a weboldalba. Ezt a komponenst hívjuk World Windownak. &lt;br /&gt;
&lt;br /&gt;
=== World Window ===&lt;br /&gt;
&lt;br /&gt;
A World Window objektum a funkcionalitást egy HTML canvas köré építi. A canvas általában egy &amp;quot;div&amp;quot; és az attribútumként megadott id-val paraméterezzük a World Window objektumot. Egy oldal több World Widow objektumot tartalmazhat, mindegyik canvashoz tartozik egy.&lt;br /&gt;
&lt;br /&gt;
A World Window tartalmaz egy Globe-ot, egy Navigator-t és egy Layer List-et. Ezek automtiusan jönnek létre amikor a World Window konstruálódik. A Globe és Navigator lecserélhető. Ezeken felül a World Window felel még az eseménykezelésért.&lt;br /&gt;
&lt;br /&gt;
A World Window felépítése:&lt;br /&gt;
&lt;br /&gt;
[[Fájl:nasa_world_wind_sdk_architecture1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:relative&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;canvas id=&amp;quot;canvasOne&amp;quot; width=&amp;quot;1000&amp;quot; height=&amp;quot;1000&amp;quot; style=&amp;quot;width: 100%; height: auto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A World Wind mellett a rétegek a legfontosabb objektumok. Ezen rétegek tárolják a World Winden megjelenő összes információt. A képek, alakzatok, dekorációs elemek stb. mind-mind különálló rétegekben tárolódnak.&lt;br /&gt;
&lt;br /&gt;
Minden World Wind objektum tartalmaz egy listát amely a rétegeket tartalmazza. Ezt nevezik Layer List-nek. Ez a lista tartalmazza az összes definiált réteget, és alapesetben üres. Amikor a World Wind rajzol, akkor bejárja ezt a listát és sorrendben megrajzolja a benne lévő rétegeket.&lt;br /&gt;
&lt;br /&gt;
Fontosabb réteg attribútumok:&lt;br /&gt;
&lt;br /&gt;
*displayName : Szöveg, a réteg nevét adhatjuk meg, és később ez megjeleníthető.&lt;br /&gt;
*enabled : Logikai, lehetővé teszi, hogy a réteget kikapcsoljuk, de közben a listában benne marad.&lt;br /&gt;
*pickEnabled : Logikai, megmondja, hogy a réteg és a tartalma &amp;quot;pickelhető-e&amp;quot;.&lt;br /&gt;
*opacity : 0-1 közötti szám a réteg átlátszóságát szabályozza. &lt;br /&gt;
&lt;br /&gt;
Két fontosabb rétegtípus van.&lt;br /&gt;
&lt;br /&gt;
* Kép réteg (Image Layer) : olyan képet tartalmaz amelyet a felszínre vetítünk ki. Ez tipikusan az egész földgömbre kiterjed de ez nem kötelező.&lt;br /&gt;
* Renderelhető réteg (Renderable Layer): akkor használjuk ha alakzatokat szeretnénk megjeleníteni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a  World Window-t&lt;br /&gt;
var wwd = new WorldWind.WorldWindow(&amp;quot;canvasOne&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk és hozzáadjuk a layereket&lt;br /&gt;
wwd.addLayer(new WorldWind.BMNGLayer());&lt;br /&gt;
wwd.addLayer(new WorldWind.BingAerialWithLabelsLayer(null));&lt;br /&gt;
wwd.addLayer(new WorldWind.CompassLayer());&lt;br /&gt;
wwd.addLayer(new WorldWind.CoordinatesDisplayLayer(wwd));&lt;br /&gt;
wwd.addLayer(new WorldWind.ViewControlsLayer(wwd));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alakzatok ===&lt;br /&gt;
&lt;br /&gt;
Alakzatok reprezentálják azokat az információkat amit meg szeretnénk jeleníteni és a földgömbhöz kapcsolódik. Egy ilyen objektum sokféle lehet, az egyszerű helyzet-jelölőtől kezdve a komplex rajzolt alakzatokig. Minden alakzat egy rétegben tárolódik és ez a réteg pedig megtalálható a World Wind Layer List-jében.&lt;br /&gt;
Minden World Wind alakzathoz sokféle attribútum kapcsolható, ezzel vezérelve pl: a színt vagy láthatóságot.&lt;br /&gt;
A legtöbb alakzathoz ez egy ShapeAttributes osztály, de például a helyjelzőnél a szöveget lehet formázni.&lt;br /&gt;
&lt;br /&gt;
Ha egy ilyen attribútum osztály konstruktorának null értéket adunk paraméterül, akkor automatikusan úgy veszi, hogy mindenből a default értéket szeretnénk használni. Ide megadható egy már korábban vagy frissen létrehozott objektum.  Fontos, hogy ha egy alakzathoz hozzárendelünk egy attribútumot az nem másolódik le, így minden változás adott esetben több alakzatot is érinthet. Ezt elkerülendő érdemes minden alakzathoz saját attribútumokat definiálni. (Viszont ez kihasználható, hogy ha több alakzatnak szeretnénk ugyanazokat az attribútumokat beállítani, akkor maradhat egy és azt állítjuk be az alakzatokhoz.)&lt;br /&gt;
&lt;br /&gt;
Az alakzatok kétféle attribútumhalmazt tárolnak. Egyet saját magának, egyet pedig az alakzat kiemelésének. Minden alakzatnak egy egy logikai értéke amely megmondja, hogy az kiemelhető-e (highlighted). Ha ez igaz, akkor érvényesek a kiemelés attribútumai.&lt;br /&gt;
Kezdetben a kiemelés attribútumai null-ok és amennyiben nem adunk meg ilyet, de kiválasztjuk, hogy az alakzat kiemelhető, akkor az alakzat saját attribútumait veszi figyelembe.&lt;br /&gt;
&lt;br /&gt;
==== Út típus ====&lt;br /&gt;
&lt;br /&gt;
Némely alakzatnak van olyan attribútuma amely meghatározza, hogy milyen módon kerül megrajzolásra.&lt;br /&gt;
&lt;br /&gt;
*WorldWind.GREAT_CIRCLE : Az alakzat útjai/élei egy nagy körutat követnek a definiáló pozíciók között. A földgömb görbületét figyelembe veszi.&lt;br /&gt;
*WorldWind.RHUMB_LINE : Az alakzat útjai/élei egy loxodroma-t (egy gömb felületére írt csavarvonal) követnek a definiáló pontok között. A földgömb görbületét figyelembe veszi.&lt;br /&gt;
*WorldWind.LINEAR : Az alakzat útjai vagy élei egy szimla egyenes vonalat követnek a definiáló pozíciók között. A földgömb görbületét nem figyelembe veszi.&lt;br /&gt;
&lt;br /&gt;
Minden alakzatra az alapértelmezett érték WorldWind.GREAT_CIRCLE.&lt;br /&gt;
&lt;br /&gt;
==== Magasság típus ====&lt;br /&gt;
&lt;br /&gt;
Minden alakzat amely a geológiai pozíciójával van megadva, létezik egy attribútum amely megmondja az alakzatát magasságának kapcsolatát a tereppel.&lt;br /&gt;
&lt;br /&gt;
*WorldWind.ABSOLUTE : A magasságot relatív távolságként kezeli az elipszoid felszínéhez képest.&lt;br /&gt;
*WorldWind.RELATIVE_TO_GROUND : A magasságot a terepen lévő pozíció koordinátáitól vett távolságként kezeli.&lt;br /&gt;
*WorldWind.CLAMP_TO_GROUND : A magasságot nem veszi figyelembe és úgy veszi mint ha terepen lenne.&lt;br /&gt;
&lt;br /&gt;
Minden alakzat esetén az alapérték a WorldWind.ABSOLUTE.&lt;br /&gt;
&lt;br /&gt;
===Glóbusz ===&lt;br /&gt;
&lt;br /&gt;
Globe reprezentál egy WGS84 elipszoidot és a területet. továbbá kezeli a különböző 2D-s projekciókat, ami használhatóak a +D-s glóbusz helyett. Alapesetben ezen kívül az alkalmazás nem nagyon lép interakcióba a glóbusszal. Ez alól kivétel például ha az alkalmazásunk a terület emelkedésével szeretne számolni.&lt;br /&gt;
&lt;br /&gt;
Minden World Window-nak eg Globe-ja van és automatikusan létrejön, amikor a World Window is. Az alkalmazásban a Globe lecserélhető egy másikra.&lt;br /&gt;
&lt;br /&gt;
=== Navigátor===&lt;br /&gt;
&lt;br /&gt;
A Navigator objektum felelős azért, hogy a felhasználói interakciókat átalakítsa a földgömbön megjelenő változásokká. Folyamatosan figyeli az egér eseményeket és ezeket alakítja át mozgássá, forgatássá vagy zoomolássá. A Navigator segítségével lehet egy adott pozícióra navigálni.&lt;br /&gt;
&lt;br /&gt;
Minden World Wind objektumnak megvan a saját Navigator objektuma, Ez a Navigator automatikusan jön létre, akkor amikor a World Wind objektumok létrejön. Ez a Navigator lecserélhető, ha a fejlesztő készített egy másképp működőt amely jobban megfelel az igényeknek.&lt;br /&gt;
&lt;br /&gt;
==Főbb funkcionalitások==&lt;br /&gt;
&lt;br /&gt;
=== Alakzatok ===&lt;br /&gt;
&lt;br /&gt;
====Szövegek ====&lt;br /&gt;
&lt;br /&gt;
Egy adott földrajzi ponthoz tartozó szöveget reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Példa adat&lt;br /&gt;
var peaks =&lt;br /&gt;
		[&lt;br /&gt;
			{&lt;br /&gt;
				&amp;#039;name&amp;#039;: &amp;quot;Mount McKinley\n(Denali)&amp;quot;, // Mount McKinley&lt;br /&gt;
				&amp;#039;state&amp;#039;: &amp;quot;Alaska&amp;quot;,&lt;br /&gt;
				&amp;#039;elevation&amp;#039;: 6194,&lt;br /&gt;
				&amp;#039;latitude&amp;#039;: 63.0690,&lt;br /&gt;
				&amp;#039;longitude&amp;#039;: -151.0063&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;#039;name&amp;#039;: &amp;quot;Mauna\nKea&amp;quot;,&lt;br /&gt;
				&amp;#039;state&amp;#039;: &amp;quot;Hawaii&amp;quot;,&lt;br /&gt;
				&amp;#039;elevation&amp;#039;: 4205,&lt;br /&gt;
				&amp;#039;latitude&amp;#039;: 19.8207,&lt;br /&gt;
				&amp;#039;longitude&amp;#039;: -155.4680&lt;br /&gt;
			}];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var text,&lt;br /&gt;
    textAttributes = new WorldWind.TextAttributes(null),&lt;br /&gt;
    textLayer = new WorldWind.RenderableLayer(&amp;quot;Fölrajzi szöveg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Alap attribútumok beállítása (pl: szín)&lt;br /&gt;
textAttributes.color = WorldWind.Color.RED;&lt;br /&gt;
textAttributes.depthTest = false;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a szöveg &amp;quot;alakzatokat&amp;quot;&lt;br /&gt;
for (var i = 0, len = peaks.length; i &amp;lt; len; i++) {&lt;br /&gt;
    var peak = peaks[i],&lt;br /&gt;
    peakPosition = new WorldWind.Position(peak.latitude, peak.longitude, peak.elevation);&lt;br /&gt;
    text = new WorldWind.GeographicText(peakPosition, peak.name + &amp;quot;\n&amp;quot; + peak.state);&lt;br /&gt;
&lt;br /&gt;
    //Beállítjuk az alakzatohoz a szöveget&lt;br /&gt;
    text.attributes = textAttributes;&lt;br /&gt;
&lt;br /&gt;
    //Hozzáadjuk a szöveget a layerhez&lt;br /&gt;
    textLayer.addRenderable(text);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//A szöveg layert hozzáadjuk a globál layerhez&lt;br /&gt;
wwd.addLayer(textLayer);&lt;br /&gt;
&lt;br /&gt;
//Létrehozunk egy managert, hogy tudjuk vezérelni a szöveg réteget.&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Utak====&lt;br /&gt;
&lt;br /&gt;
Egyenes vagy görbe vonalat reprezentál előre megadott pozíciók között. A megrajzolt vonal az alábbi típusú lehet:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.GREAT_CIRCLE&lt;br /&gt;
* WorldWind.RHUMB_LINE&lt;br /&gt;
* WorldWind.LINEAR&lt;br /&gt;
&lt;br /&gt;
Az utat alkotó pontok közötti magasságot meghatározza az út magasság módja amely az alábbiak lehetnek:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.ABSOLUTE&lt;br /&gt;
* WorldWind.RELATIVE_TO_GROUND&lt;br /&gt;
* WorldWind.CLAMP_TO_GROUND&lt;br /&gt;
&lt;br /&gt;
Külön attribútumok tartoznak a normál és a kiemelt megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Úthoz tartozó poziciók létrehozása&lt;br /&gt;
var pathPositions = [];&lt;br /&gt;
pathPositions.push(new WorldWind.Position(40, -100, 1e4));&lt;br /&gt;
pathPositions.push(new WorldWind.Position(45, -110, 1e4));&lt;br /&gt;
pathPositions.push(new WorldWind.Position(46, -122, 1e4));&lt;br /&gt;
&lt;br /&gt;
// Az út létrehozása&lt;br /&gt;
var path = new WorldWind.Path(pathPositions, null);&lt;br /&gt;
path.altitudeMode = WorldWind.RELATIVE_TO_GROUND;&lt;br /&gt;
path.followTerrain = true;&lt;br /&gt;
path.extrude = true;&lt;br /&gt;
path.useSurfaceShapeFor2D = true;&lt;br /&gt;
&lt;br /&gt;
// Az úthoz tartozó attribútumok étrehozása&lt;br /&gt;
var pathAttributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
pathAttributes.outlineColor = WorldWind.Color.BLUE;&lt;br /&gt;
pathAttributes.interiorColor = new WorldWind.Color(0, 1, 1, 0.5);&lt;br /&gt;
pathAttributes.drawVerticals = path.extrude;&lt;br /&gt;
path.attributes = pathAttributes;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Kiemelés létrehozása&lt;br /&gt;
var highlightAttributes = new WorldWind.ShapeAttributes(pathAttributes);&lt;br /&gt;
highlightAttributes.outlineColor = WorldWind.Color.CYAN;&lt;br /&gt;
highlightAttributes.interiorColor = new WorldWind.Color(1, 1, 1, 0.5);&lt;br /&gt;
path.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
//Az utat hozzáadjuk egy layerhez, és betesszük a globális layerbe&lt;br /&gt;
var pathsLayer = new WorldWind.RenderableLayer();&lt;br /&gt;
pathsLayer.displayName = &amp;quot;Paths&amp;quot;;&lt;br /&gt;
pathsLayer.addRenderable(path);&lt;br /&gt;
wwd.addLayer(pathsLayer);&lt;br /&gt;
&lt;br /&gt;
//Layermanager létrehozása&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
//Eseménykezelés a kiemeléshez&lt;br /&gt;
var highlightController = new WorldWind.HighlightController(wwd);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Poligonok====&lt;br /&gt;
&lt;br /&gt;
Egy 3D-s poligont reprezentál. A poligonnak több határt is beállíthatunk, ezzel üres területeteket képezve. A poligon magassága az alábbiak lehetnek:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.WorldWind.ABSOLUTE&lt;br /&gt;
* WorldWind.RELATIVE_TO_GROUND&lt;br /&gt;
* WorldWind.CLAMP_TO_GROUND&lt;br /&gt;
&lt;br /&gt;
Külön attribútumok tartoznak a normál és a kiemelt megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligonokat tároló réteget&lt;br /&gt;
var polygonsLayer = new WorldWind.RenderableLayer();&lt;br /&gt;
polygonsLayer.displayName = &amp;quot;Polygons&amp;quot;;&lt;br /&gt;
wwd.addLayer(polygonsLayer);&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligon határait&lt;br /&gt;
var boundaries = [];&lt;br /&gt;
boundaries[0] = []; // külső határ&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(40, -100, 1e5));&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(45, -110, 1e5));&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(40, -120, 1e5));&lt;br /&gt;
&lt;br /&gt;
boundaries[1] = []; // belső határ&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(41, -103, 1e5));&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(44, -110, 1e5));&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(41, -117, 1e5));&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuka a poligont és hozzáadjuk az attribútumait.&lt;br /&gt;
&lt;br /&gt;
var polygon = new WorldWind.Polygon(boundaries, null);&lt;br /&gt;
polygon.altitudeMode = WorldWind.ABSOLUTE;&lt;br /&gt;
polygon.extrude = true; &lt;br /&gt;
&lt;br /&gt;
var polygonAttributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
polygonAttributes.drawInterior = true;&lt;br /&gt;
polygonAttributes.drawOutline = true;&lt;br /&gt;
polygonAttributes.outlineColor = WorldWind.Color.BLUE;&lt;br /&gt;
polygonAttributes.interiorColor = new WorldWind.Color(0, 1, 1, 0.5);&lt;br /&gt;
polygonAttributes.drawVerticals = polygon.extrude;&lt;br /&gt;
polygonAttributes.applyLighting = true;&lt;br /&gt;
polygon.attributes = polygonAttributes;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligonhoz tartozó kiemelést&lt;br /&gt;
var highlightAttributes = new WorldWind.ShapeAttributes(polygonAttributes);&lt;br /&gt;
highlightAttributes.outlineColor = WorldWind.Color.RED;&lt;br /&gt;
highlightAttributes.interiorColor = new WorldWind.Color(1, 1, 1, 0.5);&lt;br /&gt;
polygon.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
//Hozzáadjuk a layerhez&lt;br /&gt;
polygonsLayer.addRenderable(polygon);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Helyjelző====&lt;br /&gt;
&lt;br /&gt;
Bármilyen pozíción megjelenő képet/címkét reprezentál. Lehet használni a beépített képeket vagy használhatunk sajátot, illetve a html-el is lehet rajzolni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Definiáljuk a képeket amiket helyjelzőnek használunk.&lt;br /&gt;
var images = [&lt;br /&gt;
	&amp;quot;plain-black.png&amp;quot;,&lt;br /&gt;
	&amp;quot;plain-blue.png&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
var pinLibrary = WorldWind.configuration.baseUrl + &amp;quot;images/pushpins/&amp;quot;, // a képek helye&lt;br /&gt;
	placemark,&lt;br /&gt;
	placemarkAttributes = new WorldWind.PlacemarkAttributes(null),&lt;br /&gt;
	highlightAttributes,&lt;br /&gt;
	placemarkLayer = new WorldWind.RenderableLayer(&amp;quot;Placemarks&amp;quot;),&lt;br /&gt;
	latitude = 47.684444,&lt;br /&gt;
	longitude = -121.129722;&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a közös attribútumokat.&lt;br /&gt;
placemarkAttributes.imageScale = 1;&lt;br /&gt;
placemarkAttributes.imageOffset = new WorldWind.Offset(&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.3,&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.0);&lt;br /&gt;
placemarkAttributes.imageColor = WorldWind.Color.WHITE;&lt;br /&gt;
placemarkAttributes.labelAttributes.offset = new WorldWind.Offset(&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.5,&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 1.0);&lt;br /&gt;
placemarkAttributes.labelAttributes.color = WorldWind.Color.YELLOW;&lt;br /&gt;
placemarkAttributes.drawLeaderLine = true;&lt;br /&gt;
placemarkAttributes.leaderLineAttributes.outlineColor = WorldWind.Color.RED;&lt;br /&gt;
&lt;br /&gt;
// Minden képhez létrehozunk egy Placemarkot és címkét&lt;br /&gt;
for (var i = 0, len = images.length; i &amp;lt; len; i++) {&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	placemark = new WorldWind.Placemark(new WorldWind.Position(latitude, longitude + i, 1e2), true, null);&lt;br /&gt;
	placemark.label = &amp;quot;Placemark &amp;quot; + i.toString() + &amp;quot;\n&amp;quot;&lt;br /&gt;
	+ &amp;quot;Lat &amp;quot; + placemark.position.latitude.toPrecision(4).toString() + &amp;quot;\n&amp;quot;&lt;br /&gt;
	+ &amp;quot;Lon &amp;quot; + placemark.position.longitude.toPrecision(5).toString();&lt;br /&gt;
	placemark.altitudeMode = WorldWind.RELATIVE_TO_GROUND;&lt;br /&gt;
&lt;br /&gt;
	.&lt;br /&gt;
	placemarkAttributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
	placemarkAttributes.imageSource = pinLibrary + images[i];&lt;br /&gt;
	placemark.attributes = placemarkAttributes;&lt;br /&gt;
&lt;br /&gt;
	//Létrehozzuk a kiemeléshez tartozó attribútumokat&lt;br /&gt;
	highlightAttributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
	highlightAttributes.imageScale = 1.2;&lt;br /&gt;
	placemark.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
	//Hozzáadjuk a réteghez.&lt;br /&gt;
	placemarkLayer.addRenderable(placemark);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Hozzáadjuk a réteget a globális réteghez.&lt;br /&gt;
wwd.addLayer(placemarkLayer);&lt;br /&gt;
&lt;br /&gt;
// Létrehozunk egy Layermanagert a kezelhetőségért&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====További alakzatok====&lt;br /&gt;
&lt;br /&gt;
*Felszíni alakzatok: Hasonlóak a fent taglalt Poligonokhoz. (Surface Shapes)&lt;br /&gt;
*Képernyő kép: Segítségével képernyő-re képet rajzolhatunk. (Screen Image)&lt;br /&gt;
*Képernyő szöveg : Segítségével szöveget helyezhetünk el a képernyőn. (Screen Text)&lt;br /&gt;
&lt;br /&gt;
=== Eseménykezelés ===&lt;br /&gt;
&lt;br /&gt;
A legtöbb alkalmazás általában figyeli és reagál a különböző JavaScript eseményekre. Mivel itt azonban a Navigator objektum figyeli az egér és kézmozdulat eseményeket amivel a felhasználó manipulálhatja a földgömböt, ezért kénytelen vagyunk valamiféle koordinációt végezni az alkalmazás és a Navigator eseménykezelése között. Fontos, hogy a Web World Wind nem figyeli a billentyűzet eseményeit, így ezt nem kell koordinálni.&lt;br /&gt;
&lt;br /&gt;
Ha az alkalmazásunk mobilon is fut akkor az egér mellett az érzékelés eseményeit is figyelni kell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Egér eseménykezelés ====&lt;br /&gt;
&lt;br /&gt;
Az esemény kezelőt be kell regisztrálni a World Window addEventListener metódusával.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
var wwd = new WorldWind.WorldWindow(&amp;quot;canvasOne&amp;quot;);&lt;br /&gt;
wwd.addEventListener(&amp;quot;mousemove&amp;quot;, function (event) {...});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az így hozzáadott listenerek a Navigator eseménykezelése előtt hívódnak meg.&lt;br /&gt;
Azok az eseménykezelők akik választoktak az eseményre meg kell hívniuk a preventDefault -ot, hogy ezzel jelezzék a Navigatornak és a többi eseménykezelőnek, hogy ignorálják az eseményt. Továbbá az eseménykezelőknek érdemes megvizsgálni, hogy az eseményre válaszolt-e már valaki.&lt;br /&gt;
&lt;br /&gt;
A fentiek alól kivétel a kattintás, mivel azt  ClickRecognizer-el érdemes lekezelni. Ez kapcsolatban áll a Navigator-ral és kézmozdulat felismerőkkel, így elkerülve a duplikált eseménykezelést.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var clickRecognizer = new WorldWind.ClickRecognizer(wwd, &lt;br /&gt;
    function(recognizer) {&lt;br /&gt;
        ...&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Kézmozdulat eseménykezelés ====&lt;br /&gt;
&lt;br /&gt;
Itt is érdemes a beépített TapRecognizer osztályt használni. Ez képes felismerni a különböző képernyőt ért kézmozdulatokat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Általános kézmozdulat kezelő function&lt;br /&gt;
var handleClick = function (recognizer) {&lt;br /&gt;
    // Obtain the event location.&lt;br /&gt;
    var x = recognizer.clientX,&lt;br /&gt;
        y = recognizer.clientY;&lt;br /&gt;
&lt;br /&gt;
    //A felhasználó valahová mutat&lt;br /&gt;
    var pickList = wwd.pick(wwd.canvasCoordinates(x, y));&lt;br /&gt;
&lt;br /&gt;
    //Ha terepre mutatott akkor menjünk oda&lt;br /&gt;
    if (pickList.objects.length == 1 &amp;amp;&amp;amp; pickList.objects[0].isTerrain) {&lt;br /&gt;
        var position = pickList.objects[0].position;&lt;br /&gt;
        goToAnimator.goTo(new WorldWind.Location(position.latitude, position.longitude));&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Figyeljük az egér kattintásokat&lt;br /&gt;
var clickRecognizer = new WorldWind.ClickRecognizer(wwd, handleClick);&lt;br /&gt;
&lt;br /&gt;
// Figyeljük a kézmozdulatokat&lt;br /&gt;
var tapRecognizer = new WorldWind.TapRecognizer(wwd, handleClick);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Navigáció ===&lt;br /&gt;
&lt;br /&gt;
Hacsak nem szeretnénk a felhasználó nézetét programmal változtatni, akkor sose kell interakcióba lépni a navigátorral. De természetesen lehetséges a navigátort az alkalmazásból irányítani.&lt;br /&gt;
&lt;br /&gt;
A Navigator objektumnak elsődlegesen kettő attribútuma felel az irányításért:&lt;br /&gt;
&lt;br /&gt;
*LookAtLocation: Jelzi  a szélességet és hosszúságot ahová a felhasználó nézőpontja néz&lt;br /&gt;
*range: Jelzi a szem távolságát az ellipszoidtól.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Beállítjuk, hogy a Navigator erre pontra nézzen és ilyen magasan legyen.&lt;br /&gt;
wwd.navigator.lookAtLocation.latitude = 65;&lt;br /&gt;
wwd.navigator.lookAtLocation.longitude = -150;&lt;br /&gt;
wwd.navigator.range = 2e6; // 2 millió méterrel az ellipsziod felett&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez azonban azonnal az új nézethez ugrik. Viszont szebben néz ki, fokozatosan és simán mozog oda ahová szeretnénk.&lt;br /&gt;
Ehhez használhatjuk a GoToAnimator-t.&lt;br /&gt;
&lt;br /&gt;
=== Shape File ===&lt;br /&gt;
&lt;br /&gt;
A World Wind Web támogatja a Shape File-opk használatát egy beépített ShapeFile osztály segítségével. Ez értelmezési a kapott Shape File-t és tartalmából alakzatokat készít. A pontokból helyjelzők, a vonalalkból utak, a poligonokból poligonokat csinál.Az értelmezés végén definiálható egy hívás ami akkor történik miután az egészet értelmeztük, de még nem készültek el az alakzatok.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a Shape File mellett található attribútm file is (.dbf), azt automatikusan felismeri és értelmezi a Shape File-al együtt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk azt a callback functiont amely lefut a sikeres tötéskor, de még az alakzat rajzolása előtt&lt;br /&gt;
var shapeConfigurationCallback = function (attributes, record) {&lt;br /&gt;
var configuration = {};&lt;br /&gt;
configuration.name = attributes.values.name || attributes.values.Name || attributes.values.NAME;&lt;br /&gt;
&lt;br /&gt;
if (record.isPointType()) {&lt;br /&gt;
	configuration.name = attributes.values.name || attributes.values.Name || attributes.values.NAME;&lt;br /&gt;
&lt;br /&gt;
	configuration.attributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
&lt;br /&gt;
	if (attributes.values.pop_max) {&lt;br /&gt;
		var population = attributes.values.pop_max;&lt;br /&gt;
		configuration.attributes.imageScale = 0.01 * Math.log(population);&lt;br /&gt;
	}&lt;br /&gt;
} else if (record.isPolygonType()) {&lt;br /&gt;
	configuration.attributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
&lt;br /&gt;
	//Kiszínezztük a kapott poligonokat valamilyen véletlenszerű színnel&lt;br /&gt;
	configuration.attributes.interiorColor = new WorldWind.Color(&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		1.0);&lt;br /&gt;
&lt;br /&gt;
	//Kifestjük a határt valamilyen a belsőnél sötátebb színnel&lt;br /&gt;
	configuration.attributes.outlineColor = new WorldWind.Color(&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.red,&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.green,&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.blue,&lt;br /&gt;
		1.0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return configuration;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Honnan vegye a file-okat&lt;br /&gt;
var shapefileLibrary = &amp;quot;http://worldwindserver.net/webworldwind/data/shapefiles/naturalearth&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a réteget azt adatoknak.&lt;br /&gt;
var worldLayer = new WorldWind.RenderableLayer(&amp;quot;Countries&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a file-t feldolgozó osztályt&lt;br /&gt;
var worldShapefile = new WorldWind.Shapefile(shapefileLibrary + &amp;quot;/ne_110m_admin_0_countries/ne_110m_admin_0_countries.shp&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Betöltjük a file-t&lt;br /&gt;
worldShapefile.load(null, shapeConfigurationCallback, worldLayer);&lt;br /&gt;
&lt;br /&gt;
//Hozzáadjuk a réteget&lt;br /&gt;
wwd.addLayer(worldLayer);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Felhasznált irodalom==&lt;br /&gt;
&lt;br /&gt;
NASA World Wind hivatalos oldal : https://worldwind.arc.nasa.gov/&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Nasa_world_wind_sdk_architecture1.jpg&amp;diff=561</id>
		<title>Fájl:Nasa world wind sdk architecture1.jpg</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Nasa_world_wind_sdk_architecture1.jpg&amp;diff=561"/>
		<updated>2017-05-25T09:35:59Z</updated>

		<summary type="html">&lt;p&gt;Mate: A World Window felépítése&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A World Window felépítése&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Geomajas&amp;diff=560</id>
		<title>Geomajas</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Geomajas&amp;diff=560"/>
		<updated>2017-05-25T09:33:21Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Áttekintés==&lt;br /&gt;
A Geomajas (http://www.geomajas.org/) egy Java nyelven íródott Open Source Web Mapping Framework. Mind szerver, mind kliensoldali komponenseket kínál. Szerveroldalon Java, Javascript, míg kliensoldalon Java (GWT) és Javascript nyelven tesz megvalósításokat elérhetővé.&lt;br /&gt;
&lt;br /&gt;
A kliensoldal bár használható különálló módon, igazi hatékonyság és funkcióbőség a szerver és a kliens összehangolt működésével érhető el.&lt;br /&gt;
&lt;br /&gt;
Főbb funkciók:&lt;br /&gt;
&lt;br /&gt;
* Integrált szerver-kliens architektúra (Spring)&lt;br /&gt;
* Attribútum és geometria szerkesztés&lt;br /&gt;
* Egyedi attribútumdefiníció&lt;br /&gt;
* Magas szintű query lehetőségek (CQL)&lt;br /&gt;
* Bővíthető plugin mechanizmus&lt;br /&gt;
* Átfogó böngésző támogatás&lt;br /&gt;
* Biztonság (Token)&lt;br /&gt;
&lt;br /&gt;
==Előkészületek==&lt;br /&gt;
A mintaprogramok fordításához és futtatásához Maven-t használnak (https://maven.apache.org/). Ahhoz, hogy futtatni és fordítani tudjuk a github-os projekteket, a Maven telepítési könyvtárában a settings.xml-ben (HOME/.m2/settings.xml) fel kell venni néhány dependency-t, ez az xml a github-os gwt kliensnél megtalálható. (https://github.com/geomajas/geomajas-project-client-gwt2)&lt;br /&gt;
&lt;br /&gt;
Kezdésként a GWT-s standalone applicationt indítsuk el, ez a következő linken érhető el. (https://github.com/geomajas/geomajas-gwt2-quickstart-application) Fordítsuk le a Mavennel a projektet, majd futtassuk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mvn install&lt;br /&gt;
&lt;br /&gt;
mvn jetty: run&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vagy egyben&lt;br /&gt;
&amp;lt;code&amp;gt;mvn install jetty: run&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezután látogassunk el a http://localhost:8080/-ra, ahol megtekinthető az eredmény.&lt;br /&gt;
==Szerver oldal ==&lt;br /&gt;
&lt;br /&gt;
A Geomajas szerveroldali rész felelős az alkalmazás intergálhatóságért, célja a business logika integrálása GIS eszközökbe. A szerveroldalon konfigurálhatóak a layerek, térképek és a szolgáltatások. Bár sok megjelenítéssel kapcsolatos technológát (vektorgrafika, renderelés) tartalmaz, konkrét megjelenítéssel nem foglalkozik. A szolgáltatások dependecy injection-nel vannak összekötve, továbbá az inversion of controlnak hála a szerver nagyon rugalmas.&lt;br /&gt;
&lt;br /&gt;
A Geomajas szerver oldal a Spring framework-öt használja. A szerver az alábbiakat nyújtja:&lt;br /&gt;
* Utasítások: Az utasítások elsődleges interakciós pontok a szerver és a kliens között. A szolgáltatások, térképek, layerek megkeresése mind utasításokkal történit.&lt;br /&gt;
* Layerek: Ezek tárolják a térképek tulajdonságaihoz a hozzáférési pontokat. Egy Layer lehet raszteres, vagy vektor alapú és szerkeszthető. A vektor layer részeit képező objektumok a &amp;quot;feature object&amp;quot;-ként érhetőek el, amit a Geomajas átkovertál számára használható formátumba, ezáltal nem kell interfaceket implementálni, minden POJO-k segítségével megoldható. Ezek a &amp;quot;feature&amp;quot;-ök tartalmazzák a geometriát és az attribútumok halmazát. Az attribútumok lehetnek komplexek: &amp;lt;code&amp;gt;@OneToMany&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;@ManyToOne&amp;lt;/code&amp;gt; is.&lt;br /&gt;
* Pipeline-ok: Minden layerekkel foglalkozó Geomajas rész pipeline-okkal van megoldva. A pipeline-ok utasítások sorozatai, amelyek sorrendben hajtódnak végre. Habár minden layernek van default pipeline működése, ez felülírható.&lt;br /&gt;
* Biztonság: A biztonsági szolgáltatások közé tartozik a tokenes authentikáció, illetve a tokenhez tartozó hozzáféréssel elérhető objektumok megkeresése és visszatérése. Képes továbbá saját security ppolicy olvasására is.&lt;br /&gt;
&lt;br /&gt;
A vektor layer és az &amp;lt;code&amp;gt;InternalFeautre&amp;lt;/code&amp;gt; objektumai közötti konverziót a &amp;lt;code&amp;gt;FeatureModel&amp;lt;/code&amp;gt; mondja meg. Ez a következőképpen néz ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@Api(allMethods = true)&lt;br /&gt;
@UserImplemented&lt;br /&gt;
public interface FeatureModel {&lt;br /&gt;
&lt;br /&gt;
 void setLayerInfo(VectorLayerInfo vectorLayerInfo) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Attribute getAttribute(Object feature, String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Map&amp;lt;String, Attribute&amp;gt; getAttributes(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 String getId(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Geometry getGeometry(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void setAttributes(Object feature, java.util.Map&amp;lt;String, Attribute&amp;gt; attributes) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void setGeometry(Object feature, Geometry geometry) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object newInstance() throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object newInstance(String id) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 int getSrid() throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 String getGeometryAttributeName() throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 boolean canHandle(Object feature);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Geomajas POJO alapú, így nem vár komplex attribútumokat paraméterként, minden sima Java Object. Ez jól látható a vektor layer megvalósításában, amely az alábbi módon néz ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@Api(allMethods = true)&lt;br /&gt;
@UserImplemented&lt;br /&gt;
public interface VectorLayer extends Layer&amp;lt;VectorLayerInfo&amp;gt; {&lt;br /&gt;
&lt;br /&gt;
 boolean isCreateCapable();&lt;br /&gt;
&lt;br /&gt;
 boolean isUpdateCapable();&lt;br /&gt;
&lt;br /&gt;
 boolean isDeleteCapable();&lt;br /&gt;
&lt;br /&gt;
 FeatureModel getFeatureModel();&lt;br /&gt;
&lt;br /&gt;
 Object create(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object saveOrUpdate(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object read(String featureId) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void delete(String featureId) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Iterator&amp;lt;?&amp;gt; getElements(Filter filter, int offset, int maxResultSize) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Envelope getBounds(Filter filter) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Envelope getBounds() throws LayerException;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sok esetben az információ eljuttatása a layer objektumokhoz szabályokat követ:&lt;br /&gt;
* Ha egy primitív attribútum változik meg egy új értékre, akkor ez az új érték lecseréli a régit.&lt;br /&gt;
* Bármely attribútum értéke ha &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;-ra állítódik, törlődik.&lt;br /&gt;
* Ha egy &amp;lt;code&amp;gt;@ManyToOne&amp;lt;/code&amp;gt; attribútum értéke módosul egy létező objektumra, akkor az érték lecserélődik és az állapota frissül.&lt;br /&gt;
* Ha egy &amp;lt;code&amp;gt;@OneToMany&amp;lt;/code&amp;gt; attribútum értéke &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;-ra, vagy üresre módosul, üres kollekció lesz belőle. Az így árván maradt objektumok törléséről, vagy megmaradásáról a &amp;lt;code&amp;gt;FeatureModel&amp;lt;/code&amp;gt;-ben lehet nyilatkozni.&lt;br /&gt;
* Ha egy &amp;lt;code&amp;gt;@OneToMany&amp;lt;/code&amp;gt; attribútum értéke egy új attribútum csoportra változik, akkor a meglévő attribútumok frissülnek, új attribútumok jönnek létre, a hiányzó értékekről pedig a &amp;lt;code&amp;gt;FeatureModel&amp;lt;/code&amp;gt;-ben implementált viselkedés alkalmazódik.&lt;br /&gt;
* Az előző szabályok rekurzívan alkalmazhatóak.&lt;br /&gt;
&lt;br /&gt;
Ezen szabályok betartására példa az &amp;lt;code&amp;gt;Entity&amp;lt;/code&amp;gt; interface, amely az objektum-fák gráf összeillesztésénél játszik szerepet, ugyanis az összeillesztés megvalósítása nem a &amp;lt;code&amp;gt;FeatureModel&amp;lt;/code&amp;gt;-ben található, hanem az &amp;lt;code&amp;gt;EntityAttributeService&amp;lt;/code&amp;gt;-ben, amely feltételezi, hogy minden entitás megvalósítja a már említett interface-t.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@Api(allMethods = true)&lt;br /&gt;
@UserImplemented&lt;br /&gt;
public interface Entity {&lt;br /&gt;
&lt;br /&gt;
 Object getId(String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Entity getChild(String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void setChild(String name, Entity entity) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 EntityCollection getChildCollection(String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void setAttribute(String name, Object value) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object getAttribute(String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Egy gyökérentitástól kezdve a &amp;lt;code&amp;gt;@OneToMany&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;@ManyToOne&amp;lt;/code&amp;gt; kapcsolatok bejárhatóak a &amp;lt;code&amp;gt;getChild()&amp;lt;/code&amp;gt; metódus segítségével.&lt;br /&gt;
&lt;br /&gt;
==A GWT quickstart application==&lt;br /&gt;
A GWT-s projekt általában egy gyökér könyvtárbeli szerver és kliens oldali csomagból áll. A kliens oldali belépési pontot az Application.java fájl tartalmazza, ami a következő helyen található: ..\geomajas-gwt2-quickstart-application-master\src\main\java\org\geomajas\quickstart\gwt2\client. &lt;br /&gt;
&lt;br /&gt;
Ez megvalósítja a com.google.gwt.core.client.EntryPoint interfészt, így implementálni kell az onModuleLoad metódust. A kód egyszerű: létrejön egy ApplicationLayout, majd hozzáadódik a megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import com.google.gwt.core.client.EntryPoint;&lt;br /&gt;
import com.google.gwt.user.client.ui.RootLayoutPanel;&lt;br /&gt;
&lt;br /&gt;
public class Application implements EntryPoint {&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onModuleLoad() {&lt;br /&gt;
		ApplicationLayout layout = new ApplicationLayout();&lt;br /&gt;
		RootLayoutPanel.get().add(layout);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az ApplicationLayout geomajas specifikus layout, a következő módon keletkezik:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public ApplicationLayout() {&lt;br /&gt;
		initWidget(UIBINDER.createAndBindUi(this));&lt;br /&gt;
		ApplicationResource.INSTANCE.css().ensureInjected();&lt;br /&gt;
&lt;br /&gt;
		mapPresenter = GeomajasImpl.getInstance().createMapPresenter();&lt;br /&gt;
		mapPresenter.getEventBus().addMapInitializationHandler(new MyMapInitializationHandler());&lt;br /&gt;
&lt;br /&gt;
		GeomajasServerExtension.getInstance().initializeMap(mapPresenter, &amp;quot;app&amp;quot;, &amp;quot;mapMain&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		mapLayoutPanel = new MapLayoutPanel();&lt;br /&gt;
		mapLayoutPanel.setPresenter(mapPresenter);&lt;br /&gt;
		mapPanel.add(mapLayoutPanel);&lt;br /&gt;
&lt;br /&gt;
		appService = ApplicationService.getInstance();&lt;br /&gt;
		appService.setMapPresenter(mapPresenter);&lt;br /&gt;
		appService.setMapLayoutPanel(mapLayoutPanel);&lt;br /&gt;
&lt;br /&gt;
		appService.getMapPresenter().getEventBus().addHandler(FeatureMouseOverHandler.TYPE, new MyFeatureMouseOverHandler());&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután betöltődik a kontextusthoz szükséges GWT-s modul, létrejön egy MapPresenter, majd hozzá egy default inicializáló. Ezután a szerverkódból inicializáljuk ezt. Ezt követi a Layout beállítása, hozzáadása a megjelenítéshez, valamint egy ApplicationService létrehozása, amely kiszolgálja a ezt a Layert. Ezután hozzáadásra kerül egy egyedi eseménykezelő.&lt;br /&gt;
&lt;br /&gt;
A quickstart application csak a gwt-s kliens egy részét tartalmazza, ezért használja a &amp;lt;code&amp;gt;GeomajasServerExtension&amp;lt;/code&amp;gt;-t, a szerveroldal létező példánya helyett, viszont jó kiindulási pont a framework megismeréséhez.&lt;br /&gt;
&lt;br /&gt;
== Javascript API ==&lt;br /&gt;
A Client Javascript API a Client GWT-t használja. A Javascriptes projektnél a javadoc-os résznél elakad a maven, így csak az API és a gwt2 projekt fordítható le egyenként. A gwt2 projekt tartalma egy javascript api-t használó mintaalkalmazás, így elég csak ezt lefordítani. A dokumentációban említett gs.js fájlt azonban már nem generálja le, csak egy dinamikus azonosítóval ellátott js-t. &lt;br /&gt;
&lt;br /&gt;
A Githubról a Javascript project (https://github.com/geomajas/geomajas-project-javascript) letöltése után, lefordíthatjuk a gwt2-es projektet, ami legenerálja a szükséges javascript fájlokat és létrehozza a megfelelő index.html-eket, mind szerver mind kliens oldalon. Az eredmény ideiglenesen a http://people.inf.elte.hu/bagtaai címen elérhető. Eredeti oldal, ami néha nem megy: (http://dev.geomajas.org/geomajas-project-javascript-gwt2-distribution-1.0.0-SNAPSHOT/).&lt;br /&gt;
&lt;br /&gt;
A map betöltéséhez ez a modul egy &amp;lt;code&amp;gt;onGeomajasLoad&amp;lt;/code&amp;gt; függvényt használ, ami lényegében az inicializációt hajtja végre. Az alábbi kódrészlet mutatja a legenerált index.html-ben szereplő példát.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
	var map;&lt;br /&gt;
	var WMS_BASE_URL = &amp;quot;http://apps.geomajas.org/geoserver/demo_world/ows&amp;quot;;&lt;br /&gt;
	var wmsVersion = &amp;quot;1.3.0&amp;quot;; //default value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	function onGeomajasLoad() {&lt;br /&gt;
		var mapConfig = new gm.MapConfiguration();&lt;br /&gt;
		mapConfig.setCrs(&amp;quot;EPSG:4326&amp;quot;, &amp;quot;DEGREES&amp;quot;);&lt;br /&gt;
		mapConfig.setMinimumResolution(2.1457672119140625E-5)&lt;br /&gt;
		mapConfig.setMaxBounds(new gm.Bbox(-180, -90, 360, 180));&lt;br /&gt;
&lt;br /&gt;
		// Map létrehozása és inicializálása&lt;br /&gt;
			&lt;br /&gt;
		map = new gm.Map(&amp;quot;js-map-element&amp;quot;, mapConfig);&lt;br /&gt;
&lt;br /&gt;
		// Kiürítjük a map-et&lt;br /&gt;
		map.getLayersModel().clear();&lt;br /&gt;
		&lt;br /&gt;
		var tileConfig = new gm.layer.TileConfiguration(256, 256, new gm.Coordinate(-180, -90),&lt;br /&gt;
				map.getViewPort());&lt;br /&gt;
		var layerConfig = new gm.WmsLayerConfiguration();&lt;br /&gt;
&lt;br /&gt;
		layerConfig.setBaseUrl(WMS_BASE_URL);&lt;br /&gt;
		layerConfig.setFormat(&amp;quot;image/png&amp;quot;);&lt;br /&gt;
		layerConfig.setVersion(wmsVersion);&lt;br /&gt;
		layerConfig.setLayers(&amp;quot;demo_world:simplified_country_borders&amp;quot;);&lt;br /&gt;
		layerConfig.setMinimumResolution(2.1457672119140625E-5);&lt;br /&gt;
		layerConfig.setMaximumResolution(Number.MAX_VALUE);&lt;br /&gt;
&lt;br /&gt;
		// Létrehozunk egy WMS Layert és hozzáadjuk a maphez:&lt;br /&gt;
&lt;br /&gt;
		var wmsLayer = new gm.WmsLayer(&amp;quot;Blue Marble&amp;quot;, map, layerConfig, tileConfig);&lt;br /&gt;
		wmsLayer.setMaxBounds(new gm.Bbox(-180, -90, 360, 360));&lt;br /&gt;
		map.getLayersModel().addLayer(wmsLayer);		&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A térkép objektumhoz hozzárendelhetők események: az inicializációhoz, a térkép megszűnéséhez, vagy a térkép betöltéséhez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
    //Maphez hozzárendelhető események&lt;br /&gt;
    map.getEventBus().addLayerAddedHandler(function(event) {&lt;br /&gt;
        // custom code; event contains the added layer&lt;br /&gt;
        alert(&amp;#039;layer added: &amp;#039; + event.getAddedLayer().getTitle());&lt;br /&gt;
    });&lt;br /&gt;
    map.getEventBus().addLayerRemovedHandler(function(event) {&lt;br /&gt;
        // custom code; event contains the removed layer&lt;br /&gt;
	alert(&amp;#039;layer removed: &amp;#039; + event.getRemovedLayer().getTitle());&lt;br /&gt;
    });&lt;br /&gt;
    map.getEventBus().addMapInitializationHandler(function(event) {&lt;br /&gt;
        // custom code&lt;br /&gt;
	alert(&amp;#039;map fully initialized&amp;#039;);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A térkép objektumhoz hozzárendelhetők eseménykezelők, ezek közül az előre definiáltak:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;#039;navigation&amp;#039;&amp;lt;/code&amp;gt;-el elérhető a NavigationController,&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;#039;zoomToRectangle&amp;#039;&amp;lt;/code&amp;gt;-el elérhető a ZoomToRectangleController,&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;#039;featureSelectionDrag&amp;#039;&amp;lt;/code&amp;gt;-al a FeatureSelectionController érhető el a &amp;lt;code&amp;gt;SelectionMethod.CLICK_AND_DRAG&amp;lt;/code&amp;gt;-el együtt,&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;#039;featureSelectionSingle&amp;#039;&amp;lt;/code&amp;gt;-el elérhető a FeatureSelectionController a &amp;lt;code&amp;gt;SelectionMethod.SINGLE_SELECTION&amp;lt;/code&amp;gt;-el.&lt;br /&gt;
&lt;br /&gt;
Hozzáadni az alábbi módon tudunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
map.setMapController(gm.MapControllerFactory.createMapController(&amp;quot;default_kontroller_neve&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Van lehetőség saját &amp;lt;code&amp;gt;MapController&amp;lt;/code&amp;gt; létrehozására is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Üres kontroller létrehozása&lt;br /&gt;
var customMapController = gm.MapControllerFactory.createMapController();&lt;br /&gt;
&lt;br /&gt;
// Egyedi egérmozgás kezelő:&lt;br /&gt;
customMapController.setMouseMoveHandler(function(event) {&lt;br /&gt;
  &lt;br /&gt;
   var screenLocation = mapController.getLocation(event, &amp;quot;screen&amp;quot;);&lt;br /&gt;
   var worldLocation = mapController.getLocation(event, &amp;quot;world&amp;quot;);&lt;br /&gt;
   var screenLocationAsText = &amp;quot;Screen: &amp;quot; + screenLocation.getX() + &amp;quot;, &amp;quot; + screenLocation.getY();&lt;br /&gt;
   var worldLocationAsText = &amp;quot;World: &amp;quot; + worldLocation.getX() + &amp;quot;, &amp;quot; + worldLocation.getY();&lt;br /&gt;
   &lt;br /&gt;
});&lt;br /&gt;
// Egyéb események, amelyek:&lt;br /&gt;
//setMouseOverHandler&lt;br /&gt;
//setMouseOutHandler&lt;br /&gt;
//setDownHandler&lt;br /&gt;
//setUpHandler&lt;br /&gt;
//setDragHandler&lt;br /&gt;
//setDoubleClickHandler&lt;br /&gt;
&lt;br /&gt;
// Kontrollerre köthető események (activation, deactivation):&lt;br /&gt;
customMapController.setActivationHandler(function() {&lt;br /&gt;
   &lt;br /&gt;
   alert(&amp;#039;Custom controller activated!&amp;#039;)&lt;br /&gt;
});&lt;br /&gt;
//setDeactivationHandler&lt;br /&gt;
&lt;br /&gt;
// MapController hozzáadása a térképhez:&lt;br /&gt;
map.setMapController(customMapController);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A layerekhez különböző funkciók társíthatóak, amelyek a &amp;lt;code&amp;gt;FeatureSearchService&amp;lt;/code&amp;gt; segítségével érhetőek el.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var service = map.getFeatureSearchService();&lt;br /&gt;
// A layer egy specifikus műveletének lekérése&lt;br /&gt;
service.searchById(layer, [id], function(featureHolder){&lt;br /&gt;
   var feature = featureHolder.getFeatures()[0];&lt;br /&gt;
   alert(&amp;quot;Feature found: &amp;quot; + feature.getLabel());&lt;br /&gt;
});&lt;br /&gt;
// összes művelet megkeresése&lt;br /&gt;
service.searchInBounds(layer, bounds, function(features) {&lt;br /&gt;
   alert(&amp;quot;Features found: &amp;quot; + featureHolder.getFeatures().size());&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==A Geomajas és a Geosparc==&lt;br /&gt;
&lt;br /&gt;
A geomajas mostanra a geosparc (http://www.geosparc.com/) alapja lett, amivel egyedi webes GIS alkalmazásokat készítenek.&lt;br /&gt;
&lt;br /&gt;
==Hibák==&lt;br /&gt;
A Quickstart application mavenes fordítása és futtatása probléma nélkül megtörtént, azonban a client-gwt2, és a szerveroldali projekt fordítása korántsem volt zökkenőmentes. A javascriptes projekt a javadoc generálásánál elszáll, egyenként az api és a gwt2 projekt rész lefordítható.&lt;br /&gt;
&lt;br /&gt;
===Checkstyle===&lt;br /&gt;
A checkstyle egy kódformázó plugin, amit a régebbi eclipsekben használtak, azonban az újakban már eleve benne van. Kezdetben a plugin (https://maven.apache.org/plugins/maven-checkstyle-plugin/) verzióját nem találta meg a maven, ezt orvosolta a fejlesztők levelezéséből kiderített client-gwt2 projektben található settings.xml megfelelő helyre történő átmozgatása.&lt;br /&gt;
&lt;br /&gt;
===FirefoxBinary===&lt;br /&gt;
A kliensoldali kód azonban így sem fordult le, a tesztek futtatásakor a selenium (http://www.seleniumhq.org/) plugin nem tudta elérni a FirefoxBinary-t és nem tudta lefuttatni a hozzá tartozó részeket. Ezt orvosolta a &amp;lt;code&amp;gt; mvn install -DskipTests &amp;lt;/code&amp;gt; utasítás, ami a teszteket kihagyva képes sikeres fordítást produkálni.&lt;br /&gt;
&lt;br /&gt;
===Javadoc===&lt;br /&gt;
Valamilyen oknál fogva a java, a régebbi javadocos kódrészleteket nem tudja értelmezni a maven a projekteken belül és fordításnál szintaktikai hibát eredményez. A projektek szükséges részei ettől függetlenül egyenként is lefordíthatóak kisebb-nagyobb szerencsével.&lt;br /&gt;
&lt;br /&gt;
===JettyRunner és az eclipse===&lt;br /&gt;
A geomajas fejlesztői oldalán leírtak alapján, a GWT kliens és szerver oldal, az eclipse segítségével is fordítható lett volna, azonban a GWT pluginnal felkonfigurált eclipse a projekt betöltését követően a JettyRunner jetty szerverkonfiguráció futtatásánál elszáll. Az eclipse marketplace-ről letölthető GWT-s pluginnal és az eredeti GWT-s toollal sem sikerült a JettyRunner hibamentes konfigurációja, amely futtatásánál a SpringFramewörk valamiyel nhiányzó layerre panaszkodik.&lt;br /&gt;
&lt;br /&gt;
A fent említett paraméterekkel az eclipse neon.1, neon.2 és a neon.3, illetve a kepler-es verzión is kipróbálva ugyanez a hiba jelentkezett. A kísérlet, minek során a quickstart application fordítására tettem kísérletet, az eclipse a maven-es pom.xml-ben hibát talált, valószínűleg kompatibilitási okokból.   &lt;br /&gt;
&lt;br /&gt;
===Maven-es mintaprojekt===&lt;br /&gt;
A források között található régebbi dokumentációk egyikében hivatkozás van egy alap geomajas projekt létrehozására külső url-ről a maven segítségével, azonban a funkció már nem elérhető.&lt;br /&gt;
&lt;br /&gt;
===Eltérések a dokumentációktól===&lt;br /&gt;
Sok helyen a dokumentációban hivatkozott komponensek nem léteznek, vagy nem elérhetőek. Legjobb példa a Javascriptes kliens kód, amely a dokumentáció alapján letölthető lenne a http://dev.geomajas.org/geomajas-project-javascript-gwt2-distribution-1.0.0-SNAPSHOT/ URL-ről. Ez tartalmazna egy gs.js-t és egy index.html-t. A githubról letölthető Javascript Client (https://github.com/geomajas/geomajas-project-javascript) distribution része ugyanezt a kódot generálja, vagy csak egy részét, ami működik azonban a dokumentációban említett elméletben geomajas javascript fájl helyett egy dinamikusan generált javascript keletkezik. Ez elindításkor nehezményezi a gs.js hiányát, azonban a dokumentációban szereplő példa részletek futtathatóak.&lt;br /&gt;
&lt;br /&gt;
==Forrás, Linkek==&lt;br /&gt;
&lt;br /&gt;
A wiki oldal megírásához az alábbi oldalakat használtam:&lt;br /&gt;
* http://www.geomajas.org/geomajas - Geomajas weboldal.&lt;br /&gt;
* https://github.com/geomajas - Geomajas Github.&lt;br /&gt;
* http://www.geomajas.org/client-javascript/snapshot - Javascript Snapshot és kis konfigurálással működőképessé varázsolható dokumentáció.&lt;br /&gt;
* http://files.geomajas.org/maven/ - A régebbi Geomajas dokumentációk.&lt;br /&gt;
* http://mapservercloud.com:8080/geomajas/applications/tutorial/html/ - Működő bemutató a komponensekről.&lt;br /&gt;
* http://files.geomajas.org/documentation/geomajas-project-server/snapshot/geomajas-server-documenatation/html/master.html - Geomajas szerver oldal dokumentációja.&lt;br /&gt;
&lt;br /&gt;
* http://www.gwtproject.org/ - GWT oldala a pluginekkel.&lt;br /&gt;
* https://maven.apache.org/ - Maven oldala, az utasításokkal, pom.xml felépítésével...&lt;br /&gt;
* http://www.geosparc.com/ - Geosparc hivatalos oldala&lt;br /&gt;
* Előadás és JS minta - [[Fájl:geomajas_JMDTDY.zip]]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=NASA_World_Wind_SDK&amp;diff=559</id>
		<title>NASA World Wind SDK</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=NASA_World_Wind_SDK&amp;diff=559"/>
		<updated>2017-05-25T09:32:47Z</updated>

		<summary type="html">&lt;p&gt;Mate: Külső zip állomány feltöltése a wikibe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bevezetés==&lt;br /&gt;
&lt;br /&gt;
NASA World Wind SDK egy ingyenes, nyílt-forráskódú virtuális földgömb weboldalakhoz és web applikációkhoz.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alapvetően három API-t biztosít:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* Webes&lt;br /&gt;
Ezen wiki oldal témája a webes felhasználás.&lt;br /&gt;
&lt;br /&gt;
Web World Wind-et JavaScriptben írták és egy JavaScript API-t biztosít ahhoz, hogy egy virtuális földgömb összes aspektusát kezelhessük. A Web World Wind lehetővé teszi, hogy a fejlesztők gyorsan és könnyen interaktív vizualizációt készíthessenek különböző földrajzi adatoknak egy 2 dimenziós térképen vagy 3 dimenziós földgömbön.&lt;br /&gt;
&lt;br /&gt;
A világon sok szervezet használja a Web World Wind-et arra, hogy monitorozzanak időjárás mintákat, városokat vizualizáljanak, járművek mozgását kövessék, földrajzi adatokat elemezzenek vagy oktassák az embereket a Földről.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Néhány lehetőség:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sok előre beépített, magas felbontású képpel rendelkezik&lt;br /&gt;
* Sok beépített alakzat megvalósítható&lt;br /&gt;
* Beépített navigációs lehetőségek&lt;br /&gt;
* Több földgömb is megjeleníthető egy oldalon&lt;br /&gt;
* ShapeFile támogatás&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Függőségek&amp;#039;&amp;#039;&amp;#039; (opcionális)&lt;br /&gt;
* Bootstrap&lt;br /&gt;
* JQuery&lt;br /&gt;
* RequireJS&lt;br /&gt;
&lt;br /&gt;
Demo: http://people.inf.elte.hu/hagtabi/web_world_wind/demo.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Keretrendszer&amp;quot; letöltése zipben: [[Fájl:hb0mt7_web_world_wind.zip]]&lt;br /&gt;
&lt;br /&gt;
==Koncepció==&lt;br /&gt;
&lt;br /&gt;
A Web World Wind egy komponens amely beágyazódik a weboldalba. Ezt a komponenst hívjuk World Windownak. &lt;br /&gt;
&lt;br /&gt;
=== World Window ===&lt;br /&gt;
&lt;br /&gt;
A World Window objektum a funkcionalitást egy HTML canvas köré építi. A canvas általában egy &amp;quot;div&amp;quot; és az attribútumként megadott id-val paraméterezzük a World Window objektumot. Egy oldal több World Widow objektumot tartalmazhat, mindegyik canvashoz tartozik egy.&lt;br /&gt;
&lt;br /&gt;
A World Window tartalmaz egy Globe-ot, egy Navigator-t és egy Layer List-et. Ezek automtiusan jönnek létre amikor a World Window konstruálódik. A Globe és Navigator lecserélhető. Ezeken felül a World Window felel még az eseménykezelésért.&lt;br /&gt;
&lt;br /&gt;
Az World Window felépítése:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webworldwind.files.wordpress.com/2015/05/architecture1.jpg]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:relative&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;canvas id=&amp;quot;canvasOne&amp;quot; width=&amp;quot;1000&amp;quot; height=&amp;quot;1000&amp;quot; style=&amp;quot;width: 100%; height: auto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétegek ===&lt;br /&gt;
&lt;br /&gt;
A World Wind mellett a rétegek a legfontosabb objektumok. Ezen rétegek tárolják a World Winden megjelenő összes információt. A képek, alakzatok, dekorációs elemek stb. mind-mind különálló rétegekben tárolódnak.&lt;br /&gt;
&lt;br /&gt;
Minden World Wind objektum tartalmaz egy listát amely a rétegeket tartalmazza. Ezt nevezik Layer List-nek. Ez a lista tartalmazza az összes definiált réteget, és alapesetben üres. Amikor a World Wind rajzol, akkor bejárja ezt a listát és sorrendben megrajzolja a benne lévő rétegeket.&lt;br /&gt;
&lt;br /&gt;
Fontosabb réteg attribútumok:&lt;br /&gt;
&lt;br /&gt;
*displayName : Szöveg, a réteg nevét adhatjuk meg, és később ez megjeleníthető.&lt;br /&gt;
*enabled : Logikai, lehetővé teszi, hogy a réteget kikapcsoljuk, de közben a listában benne marad.&lt;br /&gt;
*pickEnabled : Logikai, megmondja, hogy a réteg és a tartalma &amp;quot;pickelhető-e&amp;quot;.&lt;br /&gt;
*opacity : 0-1 közötti szám a réteg átlátszóságát szabályozza. &lt;br /&gt;
&lt;br /&gt;
Két fontosabb rétegtípus van.&lt;br /&gt;
&lt;br /&gt;
* Kép réteg (Image Layer) : olyan képet tartalmaz amelyet a felszínre vetítünk ki. Ez tipikusan az egész földgömbre kiterjed de ez nem kötelező.&lt;br /&gt;
* Renderelhető réteg (Renderable Layer): akkor használjuk ha alakzatokat szeretnénk megjeleníteni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a  World Window-t&lt;br /&gt;
var wwd = new WorldWind.WorldWindow(&amp;quot;canvasOne&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk és hozzáadjuk a layereket&lt;br /&gt;
wwd.addLayer(new WorldWind.BMNGLayer());&lt;br /&gt;
wwd.addLayer(new WorldWind.BingAerialWithLabelsLayer(null));&lt;br /&gt;
wwd.addLayer(new WorldWind.CompassLayer());&lt;br /&gt;
wwd.addLayer(new WorldWind.CoordinatesDisplayLayer(wwd));&lt;br /&gt;
wwd.addLayer(new WorldWind.ViewControlsLayer(wwd));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alakzatok ===&lt;br /&gt;
&lt;br /&gt;
Alakzatok reprezentálják azokat az információkat amit meg szeretnénk jeleníteni és a földgömbhöz kapcsolódik. Egy ilyen objektum sokféle lehet, az egyszerű helyzet-jelölőtől kezdve a komplex rajzolt alakzatokig. Minden alakzat egy rétegben tárolódik és ez a réteg pedig megtalálható a World Wind Layer List-jében.&lt;br /&gt;
Minden World Wind alakzathoz sokféle attribútum kapcsolható, ezzel vezérelve pl: a színt vagy láthatóságot.&lt;br /&gt;
A legtöbb alakzathoz ez egy ShapeAttributes osztály, de például a helyjelzőnél a szöveget lehet formázni.&lt;br /&gt;
&lt;br /&gt;
Ha egy ilyen attribútum osztály konstruktorának null értéket adunk paraméterül, akkor automatikusan úgy veszi, hogy mindenből a default értéket szeretnénk használni. Ide megadható egy már korábban vagy frissen létrehozott objektum.  Fontos, hogy ha egy alakzathoz hozzárendelünk egy attribútumot az nem másolódik le, így minden változás adott esetben több alakzatot is érinthet. Ezt elkerülendő érdemes minden alakzathoz saját attribútumokat definiálni. (Viszont ez kihasználható, hogy ha több alakzatnak szeretnénk ugyanazokat az attribútumokat beállítani, akkor maradhat egy és azt állítjuk be az alakzatokhoz.)&lt;br /&gt;
&lt;br /&gt;
Az alakzatok kétféle attribútumhalmazt tárolnak. Egyet saját magának, egyet pedig az alakzat kiemelésének. Minden alakzatnak egy egy logikai értéke amely megmondja, hogy az kiemelhető-e (highlighted). Ha ez igaz, akkor érvényesek a kiemelés attribútumai.&lt;br /&gt;
Kezdetben a kiemelés attribútumai null-ok és amennyiben nem adunk meg ilyet, de kiválasztjuk, hogy az alakzat kiemelhető, akkor az alakzat saját attribútumait veszi figyelembe.&lt;br /&gt;
&lt;br /&gt;
==== Út típus ====&lt;br /&gt;
&lt;br /&gt;
Némely alakzatnak van olyan attribútuma amely meghatározza, hogy milyen módon kerül megrajzolásra.&lt;br /&gt;
&lt;br /&gt;
*WorldWind.GREAT_CIRCLE : Az alakzat útjai/élei egy nagy körutat követnek a definiáló pozíciók között. A földgömb görbületét figyelembe veszi.&lt;br /&gt;
*WorldWind.RHUMB_LINE : Az alakzat útjai/élei egy loxodroma-t (egy gömb felületére írt csavarvonal) követnek a definiáló pontok között. A földgömb görbületét figyelembe veszi.&lt;br /&gt;
*WorldWind.LINEAR : Az alakzat útjai vagy élei egy szimla egyenes vonalat követnek a definiáló pozíciók között. A földgömb görbületét nem figyelembe veszi.&lt;br /&gt;
&lt;br /&gt;
Minden alakzatra az alapértelmezett érték WorldWind.GREAT_CIRCLE.&lt;br /&gt;
&lt;br /&gt;
==== Magasság típus ====&lt;br /&gt;
&lt;br /&gt;
Minden alakzat amely a geológiai pozíciójával van megadva, létezik egy attribútum amely megmondja az alakzatát magasságának kapcsolatát a tereppel.&lt;br /&gt;
&lt;br /&gt;
*WorldWind.ABSOLUTE : A magasságot relatív távolságként kezeli az elipszoid felszínéhez képest.&lt;br /&gt;
*WorldWind.RELATIVE_TO_GROUND : A magasságot a terepen lévő pozíció koordinátáitól vett távolságként kezeli.&lt;br /&gt;
*WorldWind.CLAMP_TO_GROUND : A magasságot nem veszi figyelembe és úgy veszi mint ha terepen lenne.&lt;br /&gt;
&lt;br /&gt;
Minden alakzat esetén az alapérték a WorldWind.ABSOLUTE.&lt;br /&gt;
&lt;br /&gt;
===Glóbusz ===&lt;br /&gt;
&lt;br /&gt;
Globe reprezentál egy WGS84 elipszoidot és a területet. továbbá kezeli a különböző 2D-s projekciókat, ami használhatóak a +D-s glóbusz helyett. Alapesetben ezen kívül az alkalmazás nem nagyon lép interakcióba a glóbusszal. Ez alól kivétel például ha az alkalmazásunk a terület emelkedésével szeretne számolni.&lt;br /&gt;
&lt;br /&gt;
Minden World Window-nak eg Globe-ja van és automatikusan létrejön, amikor a World Window is. Az alkalmazásban a Globe lecserélhető egy másikra.&lt;br /&gt;
&lt;br /&gt;
=== Navigátor===&lt;br /&gt;
&lt;br /&gt;
A Navigator objektum felelős azért, hogy a felhasználói interakciókat átalakítsa a földgömbön megjelenő változásokká. Folyamatosan figyeli az egér eseményeket és ezeket alakítja át mozgássá, forgatássá vagy zoomolássá. A Navigator segítségével lehet egy adott pozícióra navigálni.&lt;br /&gt;
&lt;br /&gt;
Minden World Wind objektumnak megvan a saját Navigator objektuma, Ez a Navigator automatikusan jön létre, akkor amikor a World Wind objektumok létrejön. Ez a Navigator lecserélhető, ha a fejlesztő készített egy másképp működőt amely jobban megfelel az igényeknek.&lt;br /&gt;
&lt;br /&gt;
==Főbb funkcionalitások==&lt;br /&gt;
&lt;br /&gt;
=== Alakzatok ===&lt;br /&gt;
&lt;br /&gt;
====Szövegek ====&lt;br /&gt;
&lt;br /&gt;
Egy adott földrajzi ponthoz tartozó szöveget reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Példa adat&lt;br /&gt;
var peaks =&lt;br /&gt;
		[&lt;br /&gt;
			{&lt;br /&gt;
				&amp;#039;name&amp;#039;: &amp;quot;Mount McKinley\n(Denali)&amp;quot;, // Mount McKinley&lt;br /&gt;
				&amp;#039;state&amp;#039;: &amp;quot;Alaska&amp;quot;,&lt;br /&gt;
				&amp;#039;elevation&amp;#039;: 6194,&lt;br /&gt;
				&amp;#039;latitude&amp;#039;: 63.0690,&lt;br /&gt;
				&amp;#039;longitude&amp;#039;: -151.0063&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;#039;name&amp;#039;: &amp;quot;Mauna\nKea&amp;quot;,&lt;br /&gt;
				&amp;#039;state&amp;#039;: &amp;quot;Hawaii&amp;quot;,&lt;br /&gt;
				&amp;#039;elevation&amp;#039;: 4205,&lt;br /&gt;
				&amp;#039;latitude&amp;#039;: 19.8207,&lt;br /&gt;
				&amp;#039;longitude&amp;#039;: -155.4680&lt;br /&gt;
			}];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var text,&lt;br /&gt;
    textAttributes = new WorldWind.TextAttributes(null),&lt;br /&gt;
    textLayer = new WorldWind.RenderableLayer(&amp;quot;Fölrajzi szöveg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Alap attribútumok beállítása (pl: szín)&lt;br /&gt;
textAttributes.color = WorldWind.Color.RED;&lt;br /&gt;
textAttributes.depthTest = false;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a szöveg &amp;quot;alakzatokat&amp;quot;&lt;br /&gt;
for (var i = 0, len = peaks.length; i &amp;lt; len; i++) {&lt;br /&gt;
    var peak = peaks[i],&lt;br /&gt;
    peakPosition = new WorldWind.Position(peak.latitude, peak.longitude, peak.elevation);&lt;br /&gt;
    text = new WorldWind.GeographicText(peakPosition, peak.name + &amp;quot;\n&amp;quot; + peak.state);&lt;br /&gt;
&lt;br /&gt;
    //Beállítjuk az alakzatohoz a szöveget&lt;br /&gt;
    text.attributes = textAttributes;&lt;br /&gt;
&lt;br /&gt;
    //Hozzáadjuk a szöveget a layerhez&lt;br /&gt;
    textLayer.addRenderable(text);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//A szöveg layert hozzáadjuk a globál layerhez&lt;br /&gt;
wwd.addLayer(textLayer);&lt;br /&gt;
&lt;br /&gt;
//Létrehozunk egy managert, hogy tudjuk vezérelni a szöveg réteget.&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Utak====&lt;br /&gt;
&lt;br /&gt;
Egyenes vagy görbe vonalat reprezentál előre megadott pozíciók között. A megrajzolt vonal az alábbi típusú lehet:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.GREAT_CIRCLE&lt;br /&gt;
* WorldWind.RHUMB_LINE&lt;br /&gt;
* WorldWind.LINEAR&lt;br /&gt;
&lt;br /&gt;
Az utat alkotó pontok közötti magasságot meghatározza az út magasság módja amely az alábbiak lehetnek:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.ABSOLUTE&lt;br /&gt;
* WorldWind.RELATIVE_TO_GROUND&lt;br /&gt;
* WorldWind.CLAMP_TO_GROUND&lt;br /&gt;
&lt;br /&gt;
Külön attribútumok tartoznak a normál és a kiemelt megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Úthoz tartozó poziciók létrehozása&lt;br /&gt;
var pathPositions = [];&lt;br /&gt;
pathPositions.push(new WorldWind.Position(40, -100, 1e4));&lt;br /&gt;
pathPositions.push(new WorldWind.Position(45, -110, 1e4));&lt;br /&gt;
pathPositions.push(new WorldWind.Position(46, -122, 1e4));&lt;br /&gt;
&lt;br /&gt;
// Az út létrehozása&lt;br /&gt;
var path = new WorldWind.Path(pathPositions, null);&lt;br /&gt;
path.altitudeMode = WorldWind.RELATIVE_TO_GROUND;&lt;br /&gt;
path.followTerrain = true;&lt;br /&gt;
path.extrude = true;&lt;br /&gt;
path.useSurfaceShapeFor2D = true;&lt;br /&gt;
&lt;br /&gt;
// Az úthoz tartozó attribútumok étrehozása&lt;br /&gt;
var pathAttributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
pathAttributes.outlineColor = WorldWind.Color.BLUE;&lt;br /&gt;
pathAttributes.interiorColor = new WorldWind.Color(0, 1, 1, 0.5);&lt;br /&gt;
pathAttributes.drawVerticals = path.extrude;&lt;br /&gt;
path.attributes = pathAttributes;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Kiemelés létrehozása&lt;br /&gt;
var highlightAttributes = new WorldWind.ShapeAttributes(pathAttributes);&lt;br /&gt;
highlightAttributes.outlineColor = WorldWind.Color.CYAN;&lt;br /&gt;
highlightAttributes.interiorColor = new WorldWind.Color(1, 1, 1, 0.5);&lt;br /&gt;
path.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
//Az utat hozzáadjuk egy layerhez, és betesszük a globális layerbe&lt;br /&gt;
var pathsLayer = new WorldWind.RenderableLayer();&lt;br /&gt;
pathsLayer.displayName = &amp;quot;Paths&amp;quot;;&lt;br /&gt;
pathsLayer.addRenderable(path);&lt;br /&gt;
wwd.addLayer(pathsLayer);&lt;br /&gt;
&lt;br /&gt;
//Layermanager létrehozása&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
//Eseménykezelés a kiemeléshez&lt;br /&gt;
var highlightController = new WorldWind.HighlightController(wwd);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Poligonok====&lt;br /&gt;
&lt;br /&gt;
Egy 3D-s poligont reprezentál. A poligonnak több határt is beállíthatunk, ezzel üres területeteket képezve. A poligon magassága az alábbiak lehetnek:&lt;br /&gt;
&lt;br /&gt;
* WorldWind.WorldWind.ABSOLUTE&lt;br /&gt;
* WorldWind.RELATIVE_TO_GROUND&lt;br /&gt;
* WorldWind.CLAMP_TO_GROUND&lt;br /&gt;
&lt;br /&gt;
Külön attribútumok tartoznak a normál és a kiemelt megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligonokat tároló réteget&lt;br /&gt;
var polygonsLayer = new WorldWind.RenderableLayer();&lt;br /&gt;
polygonsLayer.displayName = &amp;quot;Polygons&amp;quot;;&lt;br /&gt;
wwd.addLayer(polygonsLayer);&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligon határait&lt;br /&gt;
var boundaries = [];&lt;br /&gt;
boundaries[0] = []; // külső határ&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(40, -100, 1e5));&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(45, -110, 1e5));&lt;br /&gt;
boundaries[0].push(new WorldWind.Position(40, -120, 1e5));&lt;br /&gt;
&lt;br /&gt;
boundaries[1] = []; // belső határ&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(41, -103, 1e5));&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(44, -110, 1e5));&lt;br /&gt;
boundaries[1].push(new WorldWind.Position(41, -117, 1e5));&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuka a poligont és hozzáadjuk az attribútumait.&lt;br /&gt;
&lt;br /&gt;
var polygon = new WorldWind.Polygon(boundaries, null);&lt;br /&gt;
polygon.altitudeMode = WorldWind.ABSOLUTE;&lt;br /&gt;
polygon.extrude = true; &lt;br /&gt;
&lt;br /&gt;
var polygonAttributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
polygonAttributes.drawInterior = true;&lt;br /&gt;
polygonAttributes.drawOutline = true;&lt;br /&gt;
polygonAttributes.outlineColor = WorldWind.Color.BLUE;&lt;br /&gt;
polygonAttributes.interiorColor = new WorldWind.Color(0, 1, 1, 0.5);&lt;br /&gt;
polygonAttributes.drawVerticals = polygon.extrude;&lt;br /&gt;
polygonAttributes.applyLighting = true;&lt;br /&gt;
polygon.attributes = polygonAttributes;&lt;br /&gt;
&lt;br /&gt;
//Létrehozzuk a poligonhoz tartozó kiemelést&lt;br /&gt;
var highlightAttributes = new WorldWind.ShapeAttributes(polygonAttributes);&lt;br /&gt;
highlightAttributes.outlineColor = WorldWind.Color.RED;&lt;br /&gt;
highlightAttributes.interiorColor = new WorldWind.Color(1, 1, 1, 0.5);&lt;br /&gt;
polygon.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
//Hozzáadjuk a layerhez&lt;br /&gt;
polygonsLayer.addRenderable(polygon);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Helyjelző====&lt;br /&gt;
&lt;br /&gt;
Bármilyen pozíción megjelenő képet/címkét reprezentál. Lehet használni a beépített képeket vagy használhatunk sajátot, illetve a html-el is lehet rajzolni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Definiáljuk a képeket amiket helyjelzőnek használunk.&lt;br /&gt;
var images = [&lt;br /&gt;
	&amp;quot;plain-black.png&amp;quot;,&lt;br /&gt;
	&amp;quot;plain-blue.png&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
var pinLibrary = WorldWind.configuration.baseUrl + &amp;quot;images/pushpins/&amp;quot;, // a képek helye&lt;br /&gt;
	placemark,&lt;br /&gt;
	placemarkAttributes = new WorldWind.PlacemarkAttributes(null),&lt;br /&gt;
	highlightAttributes,&lt;br /&gt;
	placemarkLayer = new WorldWind.RenderableLayer(&amp;quot;Placemarks&amp;quot;),&lt;br /&gt;
	latitude = 47.684444,&lt;br /&gt;
	longitude = -121.129722;&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a közös attribútumokat.&lt;br /&gt;
placemarkAttributes.imageScale = 1;&lt;br /&gt;
placemarkAttributes.imageOffset = new WorldWind.Offset(&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.3,&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.0);&lt;br /&gt;
placemarkAttributes.imageColor = WorldWind.Color.WHITE;&lt;br /&gt;
placemarkAttributes.labelAttributes.offset = new WorldWind.Offset(&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 0.5,&lt;br /&gt;
	WorldWind.OFFSET_FRACTION, 1.0);&lt;br /&gt;
placemarkAttributes.labelAttributes.color = WorldWind.Color.YELLOW;&lt;br /&gt;
placemarkAttributes.drawLeaderLine = true;&lt;br /&gt;
placemarkAttributes.leaderLineAttributes.outlineColor = WorldWind.Color.RED;&lt;br /&gt;
&lt;br /&gt;
// Minden képhez létrehozunk egy Placemarkot és címkét&lt;br /&gt;
for (var i = 0, len = images.length; i &amp;lt; len; i++) {&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	placemark = new WorldWind.Placemark(new WorldWind.Position(latitude, longitude + i, 1e2), true, null);&lt;br /&gt;
	placemark.label = &amp;quot;Placemark &amp;quot; + i.toString() + &amp;quot;\n&amp;quot;&lt;br /&gt;
	+ &amp;quot;Lat &amp;quot; + placemark.position.latitude.toPrecision(4).toString() + &amp;quot;\n&amp;quot;&lt;br /&gt;
	+ &amp;quot;Lon &amp;quot; + placemark.position.longitude.toPrecision(5).toString();&lt;br /&gt;
	placemark.altitudeMode = WorldWind.RELATIVE_TO_GROUND;&lt;br /&gt;
&lt;br /&gt;
	.&lt;br /&gt;
	placemarkAttributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
	placemarkAttributes.imageSource = pinLibrary + images[i];&lt;br /&gt;
	placemark.attributes = placemarkAttributes;&lt;br /&gt;
&lt;br /&gt;
	//Létrehozzuk a kiemeléshez tartozó attribútumokat&lt;br /&gt;
	highlightAttributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
	highlightAttributes.imageScale = 1.2;&lt;br /&gt;
	placemark.highlightAttributes = highlightAttributes;&lt;br /&gt;
&lt;br /&gt;
	//Hozzáadjuk a réteghez.&lt;br /&gt;
	placemarkLayer.addRenderable(placemark);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Hozzáadjuk a réteget a globális réteghez.&lt;br /&gt;
wwd.addLayer(placemarkLayer);&lt;br /&gt;
&lt;br /&gt;
// Létrehozunk egy Layermanagert a kezelhetőségért&lt;br /&gt;
var layerManger = new LayerManager(wwd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====További alakzatok====&lt;br /&gt;
&lt;br /&gt;
*Felszíni alakzatok: Hasonlóak a fent taglalt Poligonokhoz. (Surface Shapes)&lt;br /&gt;
*Képernyő kép: Segítségével képernyő-re képet rajzolhatunk. (Screen Image)&lt;br /&gt;
*Képernyő szöveg : Segítségével szöveget helyezhetünk el a képernyőn. (Screen Text)&lt;br /&gt;
&lt;br /&gt;
=== Eseménykezelés ===&lt;br /&gt;
&lt;br /&gt;
A legtöbb alkalmazás általában figyeli és reagál a különböző JavaScript eseményekre. Mivel itt azonban a Navigator objektum figyeli az egér és kézmozdulat eseményeket amivel a felhasználó manipulálhatja a földgömböt, ezért kénytelen vagyunk valamiféle koordinációt végezni az alkalmazás és a Navigator eseménykezelése között. Fontos, hogy a Web World Wind nem figyeli a billentyűzet eseményeit, így ezt nem kell koordinálni.&lt;br /&gt;
&lt;br /&gt;
Ha az alkalmazásunk mobilon is fut akkor az egér mellett az érzékelés eseményeit is figyelni kell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Egér eseménykezelés ====&lt;br /&gt;
&lt;br /&gt;
Az esemény kezelőt be kell regisztrálni a World Window addEventListener metódusával.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
var wwd = new WorldWind.WorldWindow(&amp;quot;canvasOne&amp;quot;);&lt;br /&gt;
wwd.addEventListener(&amp;quot;mousemove&amp;quot;, function (event) {...});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az így hozzáadott listenerek a Navigator eseménykezelése előtt hívódnak meg.&lt;br /&gt;
Azok az eseménykezelők akik választoktak az eseményre meg kell hívniuk a preventDefault -ot, hogy ezzel jelezzék a Navigatornak és a többi eseménykezelőnek, hogy ignorálják az eseményt. Továbbá az eseménykezelőknek érdemes megvizsgálni, hogy az eseményre válaszolt-e már valaki.&lt;br /&gt;
&lt;br /&gt;
A fentiek alól kivétel a kattintás, mivel azt  ClickRecognizer-el érdemes lekezelni. Ez kapcsolatban áll a Navigator-ral és kézmozdulat felismerőkkel, így elkerülve a duplikált eseménykezelést.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var clickRecognizer = new WorldWind.ClickRecognizer(wwd, &lt;br /&gt;
    function(recognizer) {&lt;br /&gt;
        ...&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Kézmozdulat eseménykezelés ====&lt;br /&gt;
&lt;br /&gt;
Itt is érdemes a beépített TapRecognizer osztályt használni. Ez képes felismerni a különböző képernyőt ért kézmozdulatokat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Általános kézmozdulat kezelő function&lt;br /&gt;
var handleClick = function (recognizer) {&lt;br /&gt;
    // Obtain the event location.&lt;br /&gt;
    var x = recognizer.clientX,&lt;br /&gt;
        y = recognizer.clientY;&lt;br /&gt;
&lt;br /&gt;
    //A felhasználó valahová mutat&lt;br /&gt;
    var pickList = wwd.pick(wwd.canvasCoordinates(x, y));&lt;br /&gt;
&lt;br /&gt;
    //Ha terepre mutatott akkor menjünk oda&lt;br /&gt;
    if (pickList.objects.length == 1 &amp;amp;&amp;amp; pickList.objects[0].isTerrain) {&lt;br /&gt;
        var position = pickList.objects[0].position;&lt;br /&gt;
        goToAnimator.goTo(new WorldWind.Location(position.latitude, position.longitude));&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Figyeljük az egér kattintásokat&lt;br /&gt;
var clickRecognizer = new WorldWind.ClickRecognizer(wwd, handleClick);&lt;br /&gt;
&lt;br /&gt;
// Figyeljük a kézmozdulatokat&lt;br /&gt;
var tapRecognizer = new WorldWind.TapRecognizer(wwd, handleClick);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Navigáció ===&lt;br /&gt;
&lt;br /&gt;
Hacsak nem szeretnénk a felhasználó nézetét programmal változtatni, akkor sose kell interakcióba lépni a navigátorral. De természetesen lehetséges a navigátort az alkalmazásból irányítani.&lt;br /&gt;
&lt;br /&gt;
A Navigator objektumnak elsődlegesen kettő attribútuma felel az irányításért:&lt;br /&gt;
&lt;br /&gt;
*LookAtLocation: Jelzi  a szélességet és hosszúságot ahová a felhasználó nézőpontja néz&lt;br /&gt;
*range: Jelzi a szem távolságát az ellipszoidtól.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Beállítjuk, hogy a Navigator erre pontra nézzen és ilyen magasan legyen.&lt;br /&gt;
wwd.navigator.lookAtLocation.latitude = 65;&lt;br /&gt;
wwd.navigator.lookAtLocation.longitude = -150;&lt;br /&gt;
wwd.navigator.range = 2e6; // 2 millió méterrel az ellipsziod felett&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez azonban azonnal az új nézethez ugrik. Viszont szebben néz ki, fokozatosan és simán mozog oda ahová szeretnénk.&lt;br /&gt;
Ehhez használhatjuk a GoToAnimator-t.&lt;br /&gt;
&lt;br /&gt;
=== Shape File ===&lt;br /&gt;
&lt;br /&gt;
A World Wind Web támogatja a Shape File-opk használatát egy beépített ShapeFile osztály segítségével. Ez értelmezési a kapott Shape File-t és tartalmából alakzatokat készít. A pontokból helyjelzők, a vonalalkból utak, a poligonokból poligonokat csinál.Az értelmezés végén definiálható egy hívás ami akkor történik miután az egészet értelmeztük, de még nem készültek el az alakzatok.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a Shape File mellett található attribútm file is (.dbf), azt automatikusan felismeri és értelmezi a Shape File-al együtt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk azt a callback functiont amely lefut a sikeres tötéskor, de még az alakzat rajzolása előtt&lt;br /&gt;
var shapeConfigurationCallback = function (attributes, record) {&lt;br /&gt;
var configuration = {};&lt;br /&gt;
configuration.name = attributes.values.name || attributes.values.Name || attributes.values.NAME;&lt;br /&gt;
&lt;br /&gt;
if (record.isPointType()) {&lt;br /&gt;
	configuration.name = attributes.values.name || attributes.values.Name || attributes.values.NAME;&lt;br /&gt;
&lt;br /&gt;
	configuration.attributes = new WorldWind.PlacemarkAttributes(placemarkAttributes);&lt;br /&gt;
&lt;br /&gt;
	if (attributes.values.pop_max) {&lt;br /&gt;
		var population = attributes.values.pop_max;&lt;br /&gt;
		configuration.attributes.imageScale = 0.01 * Math.log(population);&lt;br /&gt;
	}&lt;br /&gt;
} else if (record.isPolygonType()) {&lt;br /&gt;
	configuration.attributes = new WorldWind.ShapeAttributes(null);&lt;br /&gt;
&lt;br /&gt;
	//Kiszínezztük a kapott poligonokat valamilyen véletlenszerű színnel&lt;br /&gt;
	configuration.attributes.interiorColor = new WorldWind.Color(&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		0.375 + 0.5 * Math.random(),&lt;br /&gt;
		1.0);&lt;br /&gt;
&lt;br /&gt;
	//Kifestjük a határt valamilyen a belsőnél sötátebb színnel&lt;br /&gt;
	configuration.attributes.outlineColor = new WorldWind.Color(&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.red,&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.green,&lt;br /&gt;
		0.5 * configuration.attributes.interiorColor.blue,&lt;br /&gt;
		1.0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return configuration;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Honnan vegye a file-okat&lt;br /&gt;
var shapefileLibrary = &amp;quot;http://worldwindserver.net/webworldwind/data/shapefiles/naturalearth&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a réteget azt adatoknak.&lt;br /&gt;
var worldLayer = new WorldWind.RenderableLayer(&amp;quot;Countries&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Létrehozzuk a file-t feldolgozó osztályt&lt;br /&gt;
var worldShapefile = new WorldWind.Shapefile(shapefileLibrary + &amp;quot;/ne_110m_admin_0_countries/ne_110m_admin_0_countries.shp&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Betöltjük a file-t&lt;br /&gt;
worldShapefile.load(null, shapeConfigurationCallback, worldLayer);&lt;br /&gt;
&lt;br /&gt;
//Hozzáadjuk a réteget&lt;br /&gt;
wwd.addLayer(worldLayer);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Felhasznált irodalom==&lt;br /&gt;
&lt;br /&gt;
NASA World Wind hivatalos oldal : https://worldwind.arc.nasa.gov/&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Hb0mt7_web_world_wind.zip&amp;diff=558</id>
		<title>Fájl:Hb0mt7 web world wind.zip</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Hb0mt7_web_world_wind.zip&amp;diff=558"/>
		<updated>2017-05-25T09:31:43Z</updated>

		<summary type="html">&lt;p&gt;Mate: NASA World Wind SDK keretrendszer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NASA World Wind SDK keretrendszer&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Geomajas&amp;diff=557</id>
		<title>Geomajas</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Geomajas&amp;diff=557"/>
		<updated>2017-05-25T09:18:32Z</updated>

		<summary type="html">&lt;p&gt;Mate: Előadás és minta kód wikibe feltöltése&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Áttekintés==&lt;br /&gt;
A Geomajas (http://www.geomajas.org/) egy Java nyelven íródott Open Source Web Mapping Framework. Mind szerver, mind kliensoldali komponenseket kínál. Szerveroldalon Java, Javascript, míg kliensoldalon Java (GWT) és Javascript nyelven tesz megvalósításokat elérhetővé.&lt;br /&gt;
&lt;br /&gt;
A kliensoldal bár használható különálló módon, igazi hatékonyság és funkcióbőség a szerver és a kliens összehangolt működésével érhető el.&lt;br /&gt;
&lt;br /&gt;
Főbb funkciók:&lt;br /&gt;
&lt;br /&gt;
* Integrált szerver-kliens architektúra (Spring)&lt;br /&gt;
* Attribútum és geometria szerkesztés&lt;br /&gt;
* Egyedi attribútumdefiníció&lt;br /&gt;
* Magas szintű query lehetőségek (CQL)&lt;br /&gt;
* Bővíthető plugin mechanizmus&lt;br /&gt;
* Átfogó böngésző támogatás&lt;br /&gt;
* Biztonság (Token)&lt;br /&gt;
&lt;br /&gt;
==Előkészületek==&lt;br /&gt;
A mintaprogramok fordításához és futtatásához Maven-t használnak (https://maven.apache.org/). Ahhoz, hogy futtatni és fordítani tudjuk a github-os projekteket, a Maven telepítési könyvtárában a settings.xml-ben (HOME/.m2/settings.xml) fel kell venni néhány dependency-t, ez az xml a github-os gwt kliensnél megtalálható. (https://github.com/geomajas/geomajas-project-client-gwt2)&lt;br /&gt;
&lt;br /&gt;
Kezdésként a GWT-s standalone applicationt indítsuk el, ez a következő linken érhető el. (https://github.com/geomajas/geomajas-gwt2-quickstart-application) Fordítsuk le a Mavennel a projektet, majd futtassuk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mvn install&lt;br /&gt;
&lt;br /&gt;
mvn jetty: run&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vagy egyben&lt;br /&gt;
&amp;lt;code&amp;gt;mvn install jetty: run&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezután látogassunk el a http://localhost:8080/-ra, ahol megtekinthető az eredmény.&lt;br /&gt;
==Szerver oldal ==&lt;br /&gt;
&lt;br /&gt;
A Geomajas szerveroldali rész felelős az alkalmazás intergálhatóságért, célja a business logika integrálása GIS eszközökbe. A szerveroldalon konfigurálhatóak a layerek, térképek és a szolgáltatások. Bár sok megjelenítéssel kapcsolatos technológát (vektorgrafika, renderelés) tartalmaz, konkrét megjelenítéssel nem foglalkozik. A szolgáltatások dependecy injection-nel vannak összekötve, továbbá az inversion of controlnak hála a szerver nagyon rugalmas.&lt;br /&gt;
&lt;br /&gt;
A Geomajas szerver oldal a Spring framework-öt használja. A szerver az alábbiakat nyújtja:&lt;br /&gt;
* Utasítások: Az utasítások elsődleges interakciós pontok a szerver és a kliens között. A szolgáltatások, térképek, layerek megkeresése mind utasításokkal történit.&lt;br /&gt;
* Layerek: Ezek tárolják a térképek tulajdonságaihoz a hozzáférési pontokat. Egy Layer lehet raszteres, vagy vektor alapú és szerkeszthető. A vektor layer részeit képező objektumok a &amp;quot;feature object&amp;quot;-ként érhetőek el, amit a Geomajas átkovertál számára használható formátumba, ezáltal nem kell interfaceket implementálni, minden POJO-k segítségével megoldható. Ezek a &amp;quot;feature&amp;quot;-ök tartalmazzák a geometriát és az attribútumok halmazát. Az attribútumok lehetnek komplexek: &amp;lt;code&amp;gt;@OneToMany&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;@ManyToOne&amp;lt;/code&amp;gt; is.&lt;br /&gt;
* Pipeline-ok: Minden layerekkel foglalkozó Geomajas rész pipeline-okkal van megoldva. A pipeline-ok utasítások sorozatai, amelyek sorrendben hajtódnak végre. Habár minden layernek van default pipeline működése, ez felülírható.&lt;br /&gt;
* Biztonság: A biztonsági szolgáltatások közé tartozik a tokenes authentikáció, illetve a tokenhez tartozó hozzáféréssel elérhető objektumok megkeresése és visszatérése. Képes továbbá saját security ppolicy olvasására is.&lt;br /&gt;
&lt;br /&gt;
A vektor layer és az &amp;lt;code&amp;gt;InternalFeautre&amp;lt;/code&amp;gt; objektumai közötti konverziót a &amp;lt;code&amp;gt;FeatureModel&amp;lt;/code&amp;gt; mondja meg. Ez a következőképpen néz ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@Api(allMethods = true)&lt;br /&gt;
@UserImplemented&lt;br /&gt;
public interface FeatureModel {&lt;br /&gt;
&lt;br /&gt;
 void setLayerInfo(VectorLayerInfo vectorLayerInfo) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Attribute getAttribute(Object feature, String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Map&amp;lt;String, Attribute&amp;gt; getAttributes(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 String getId(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Geometry getGeometry(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void setAttributes(Object feature, java.util.Map&amp;lt;String, Attribute&amp;gt; attributes) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void setGeometry(Object feature, Geometry geometry) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object newInstance() throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object newInstance(String id) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 int getSrid() throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 String getGeometryAttributeName() throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 boolean canHandle(Object feature);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Geomajas POJO alapú, így nem vár komplex attribútumokat paraméterként, minden sima Java Object. Ez jól látható a vektor layer megvalósításában, amely az alábbi módon néz ki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@Api(allMethods = true)&lt;br /&gt;
@UserImplemented&lt;br /&gt;
public interface VectorLayer extends Layer&amp;lt;VectorLayerInfo&amp;gt; {&lt;br /&gt;
&lt;br /&gt;
 boolean isCreateCapable();&lt;br /&gt;
&lt;br /&gt;
 boolean isUpdateCapable();&lt;br /&gt;
&lt;br /&gt;
 boolean isDeleteCapable();&lt;br /&gt;
&lt;br /&gt;
 FeatureModel getFeatureModel();&lt;br /&gt;
&lt;br /&gt;
 Object create(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object saveOrUpdate(Object feature) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object read(String featureId) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void delete(String featureId) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Iterator&amp;lt;?&amp;gt; getElements(Filter filter, int offset, int maxResultSize) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Envelope getBounds(Filter filter) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Envelope getBounds() throws LayerException;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sok esetben az információ eljuttatása a layer objektumokhoz szabályokat követ:&lt;br /&gt;
* Ha egy primitív attribútum változik meg egy új értékre, akkor ez az új érték lecseréli a régit.&lt;br /&gt;
* Bármely attribútum értéke ha &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;-ra állítódik, törlődik.&lt;br /&gt;
* Ha egy &amp;lt;code&amp;gt;@ManyToOne&amp;lt;/code&amp;gt; attribútum értéke módosul egy létező objektumra, akkor az érték lecserélődik és az állapota frissül.&lt;br /&gt;
* Ha egy &amp;lt;code&amp;gt;@OneToMany&amp;lt;/code&amp;gt; attribútum értéke &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;-ra, vagy üresre módosul, üres kollekció lesz belőle. Az így árván maradt objektumok törléséről, vagy megmaradásáról a &amp;lt;code&amp;gt;FeatureModel&amp;lt;/code&amp;gt;-ben lehet nyilatkozni.&lt;br /&gt;
* Ha egy &amp;lt;code&amp;gt;@OneToMany&amp;lt;/code&amp;gt; attribútum értéke egy új attribútum csoportra változik, akkor a meglévő attribútumok frissülnek, új attribútumok jönnek létre, a hiányzó értékekről pedig a &amp;lt;code&amp;gt;FeatureModel&amp;lt;/code&amp;gt;-ben implementált viselkedés alkalmazódik.&lt;br /&gt;
* Az előző szabályok rekurzívan alkalmazhatóak.&lt;br /&gt;
&lt;br /&gt;
Ezen szabályok betartására példa az &amp;lt;code&amp;gt;Entity&amp;lt;/code&amp;gt; interface, amely az objektum-fák gráf összeillesztésénél játszik szerepet, ugyanis az összeillesztés megvalósítása nem a &amp;lt;code&amp;gt;FeatureModel&amp;lt;/code&amp;gt;-ben található, hanem az &amp;lt;code&amp;gt;EntityAttributeService&amp;lt;/code&amp;gt;-ben, amely feltételezi, hogy minden entitás megvalósítja a már említett interface-t.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@Api(allMethods = true)&lt;br /&gt;
@UserImplemented&lt;br /&gt;
public interface Entity {&lt;br /&gt;
&lt;br /&gt;
 Object getId(String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Entity getChild(String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void setChild(String name, Entity entity) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 EntityCollection getChildCollection(String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 void setAttribute(String name, Object value) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
 Object getAttribute(String name) throws LayerException;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Egy gyökérentitástól kezdve a &amp;lt;code&amp;gt;@OneToMany&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;@ManyToOne&amp;lt;/code&amp;gt; kapcsolatok bejárhatóak a &amp;lt;code&amp;gt;getChild()&amp;lt;/code&amp;gt; metódus segítségével.&lt;br /&gt;
&lt;br /&gt;
==A GWT quickstart application==&lt;br /&gt;
A GWT-s projekt általában egy gyökér könyvtárbeli szerver és kliens oldali csomagból áll. A kliens oldali belépési pontot az Application.java fájl tartalmazza, ami a következő helyen található: ..\geomajas-gwt2-quickstart-application-master\src\main\java\org\geomajas\quickstart\gwt2\client. &lt;br /&gt;
&lt;br /&gt;
Ez megvalósítja a com.google.gwt.core.client.EntryPoint interfészt, így implementálni kell az onModuleLoad metódust. A kód egyszerű: létrejön egy ApplicationLayout, majd hozzáadódik a megjelenítéshez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import com.google.gwt.core.client.EntryPoint;&lt;br /&gt;
import com.google.gwt.user.client.ui.RootLayoutPanel;&lt;br /&gt;
&lt;br /&gt;
public class Application implements EntryPoint {&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onModuleLoad() {&lt;br /&gt;
		ApplicationLayout layout = new ApplicationLayout();&lt;br /&gt;
		RootLayoutPanel.get().add(layout);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az ApplicationLayout geomajas specifikus layout, a következő módon keletkezik:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public ApplicationLayout() {&lt;br /&gt;
		initWidget(UIBINDER.createAndBindUi(this));&lt;br /&gt;
		ApplicationResource.INSTANCE.css().ensureInjected();&lt;br /&gt;
&lt;br /&gt;
		mapPresenter = GeomajasImpl.getInstance().createMapPresenter();&lt;br /&gt;
		mapPresenter.getEventBus().addMapInitializationHandler(new MyMapInitializationHandler());&lt;br /&gt;
&lt;br /&gt;
		GeomajasServerExtension.getInstance().initializeMap(mapPresenter, &amp;quot;app&amp;quot;, &amp;quot;mapMain&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		mapLayoutPanel = new MapLayoutPanel();&lt;br /&gt;
		mapLayoutPanel.setPresenter(mapPresenter);&lt;br /&gt;
		mapPanel.add(mapLayoutPanel);&lt;br /&gt;
&lt;br /&gt;
		appService = ApplicationService.getInstance();&lt;br /&gt;
		appService.setMapPresenter(mapPresenter);&lt;br /&gt;
		appService.setMapLayoutPanel(mapLayoutPanel);&lt;br /&gt;
&lt;br /&gt;
		appService.getMapPresenter().getEventBus().addHandler(FeatureMouseOverHandler.TYPE, new MyFeatureMouseOverHandler());&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután betöltődik a kontextusthoz szükséges GWT-s modul, létrejön egy MapPresenter, majd hozzá egy default inicializáló. Ezután a szerverkódból inicializáljuk ezt. Ezt követi a Layout beállítása, hozzáadása a megjelenítéshez, valamint egy ApplicationService létrehozása, amely kiszolgálja a ezt a Layert. Ezután hozzáadásra kerül egy egyedi eseménykezelő.&lt;br /&gt;
&lt;br /&gt;
A quickstart application csak a gwt-s kliens egy részét tartalmazza, ezért használja a &amp;lt;code&amp;gt;GeomajasServerExtension&amp;lt;/code&amp;gt;-t, a szerveroldal létező példánya helyett, viszont jó kiindulási pont a framework megismeréséhez.&lt;br /&gt;
&lt;br /&gt;
== Javascript API ==&lt;br /&gt;
A Client Javascript API a Client GWT-t használja. A Javascriptes projektnél a javadoc-os résznél elakad a maven, így csak az API és a gwt2 projekt fordítható le egyenként. A gwt2 projekt tartalma egy javascript api-t használó mintaalkalmazás, így elég csak ezt lefordítani. A dokumentációban említett gs.js fájlt azonban már nem generálja le, csak egy dinamikus azonosítóval ellátott js-t. &lt;br /&gt;
&lt;br /&gt;
A Githubról a Javascript project (https://github.com/geomajas/geomajas-project-javascript) letöltése után, lefordíthatjuk a gwt2-es projektet, ami legenerálja a szükséges javascript fájlokat és létrehozza a megfelelő index.html-eket, mind szerver mind kliens oldalon. Az eredmény ideiglenesen a http://people.inf.elte.hu/bagtaai címen elérhető. Eredeti oldal, ami néha nem megy: (http://dev.geomajas.org/geomajas-project-javascript-gwt2-distribution-1.0.0-SNAPSHOT/).&lt;br /&gt;
&lt;br /&gt;
A map betöltéséhez ez a modul egy &amp;lt;code&amp;gt;onGeomajasLoad&amp;lt;/code&amp;gt; függvényt használ, ami lényegében az inicializációt hajtja végre. Az alábbi kódrészlet mutatja a legenerált index.html-ben szereplő példát.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
	var map;&lt;br /&gt;
	var WMS_BASE_URL = &amp;quot;http://apps.geomajas.org/geoserver/demo_world/ows&amp;quot;;&lt;br /&gt;
	var wmsVersion = &amp;quot;1.3.0&amp;quot;; //default value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	function onGeomajasLoad() {&lt;br /&gt;
		var mapConfig = new gm.MapConfiguration();&lt;br /&gt;
		mapConfig.setCrs(&amp;quot;EPSG:4326&amp;quot;, &amp;quot;DEGREES&amp;quot;);&lt;br /&gt;
		mapConfig.setMinimumResolution(2.1457672119140625E-5)&lt;br /&gt;
		mapConfig.setMaxBounds(new gm.Bbox(-180, -90, 360, 180));&lt;br /&gt;
&lt;br /&gt;
		// Map létrehozása és inicializálása&lt;br /&gt;
			&lt;br /&gt;
		map = new gm.Map(&amp;quot;js-map-element&amp;quot;, mapConfig);&lt;br /&gt;
&lt;br /&gt;
		// Kiürítjük a map-et&lt;br /&gt;
		map.getLayersModel().clear();&lt;br /&gt;
		&lt;br /&gt;
		var tileConfig = new gm.layer.TileConfiguration(256, 256, new gm.Coordinate(-180, -90),&lt;br /&gt;
				map.getViewPort());&lt;br /&gt;
		var layerConfig = new gm.WmsLayerConfiguration();&lt;br /&gt;
&lt;br /&gt;
		layerConfig.setBaseUrl(WMS_BASE_URL);&lt;br /&gt;
		layerConfig.setFormat(&amp;quot;image/png&amp;quot;);&lt;br /&gt;
		layerConfig.setVersion(wmsVersion);&lt;br /&gt;
		layerConfig.setLayers(&amp;quot;demo_world:simplified_country_borders&amp;quot;);&lt;br /&gt;
		layerConfig.setMinimumResolution(2.1457672119140625E-5);&lt;br /&gt;
		layerConfig.setMaximumResolution(Number.MAX_VALUE);&lt;br /&gt;
&lt;br /&gt;
		// Létrehozunk egy WMS Layert és hozzáadjuk a maphez:&lt;br /&gt;
&lt;br /&gt;
		var wmsLayer = new gm.WmsLayer(&amp;quot;Blue Marble&amp;quot;, map, layerConfig, tileConfig);&lt;br /&gt;
		wmsLayer.setMaxBounds(new gm.Bbox(-180, -90, 360, 360));&lt;br /&gt;
		map.getLayersModel().addLayer(wmsLayer);		&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A térkép objektumhoz hozzárendelhetők események: az inicializációhoz, a térkép megszűnéséhez, vagy a térkép betöltéséhez.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
    //Maphez hozzárendelhető események&lt;br /&gt;
    map.getEventBus().addLayerAddedHandler(function(event) {&lt;br /&gt;
        // custom code; event contains the added layer&lt;br /&gt;
        alert(&amp;#039;layer added: &amp;#039; + event.getAddedLayer().getTitle());&lt;br /&gt;
    });&lt;br /&gt;
    map.getEventBus().addLayerRemovedHandler(function(event) {&lt;br /&gt;
        // custom code; event contains the removed layer&lt;br /&gt;
	alert(&amp;#039;layer removed: &amp;#039; + event.getRemovedLayer().getTitle());&lt;br /&gt;
    });&lt;br /&gt;
    map.getEventBus().addMapInitializationHandler(function(event) {&lt;br /&gt;
        // custom code&lt;br /&gt;
	alert(&amp;#039;map fully initialized&amp;#039;);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A térkép objektumhoz hozzárendelhetők eseménykezelők, ezek közül az előre definiáltak:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;#039;navigation&amp;#039;&amp;lt;/code&amp;gt;-el elérhető a NavigationController,&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;#039;zoomToRectangle&amp;#039;&amp;lt;/code&amp;gt;-el elérhető a ZoomToRectangleController,&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;#039;featureSelectionDrag&amp;#039;&amp;lt;/code&amp;gt;-al a FeatureSelectionController érhető el a &amp;lt;code&amp;gt;SelectionMethod.CLICK_AND_DRAG&amp;lt;/code&amp;gt;-el együtt,&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;#039;featureSelectionSingle&amp;#039;&amp;lt;/code&amp;gt;-el elérhető a FeatureSelectionController a &amp;lt;code&amp;gt;SelectionMethod.SINGLE_SELECTION&amp;lt;/code&amp;gt;-el.&lt;br /&gt;
&lt;br /&gt;
Hozzáadni az alábbi módon tudunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
map.setMapController(gm.MapControllerFactory.createMapController(&amp;quot;default_kontroller_neve&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Van lehetőség saját &amp;lt;code&amp;gt;MapController&amp;lt;/code&amp;gt; létrehozására is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Üres kontroller létrehozása&lt;br /&gt;
var customMapController = gm.MapControllerFactory.createMapController();&lt;br /&gt;
&lt;br /&gt;
// Egyedi egérmozgás kezelő:&lt;br /&gt;
customMapController.setMouseMoveHandler(function(event) {&lt;br /&gt;
  &lt;br /&gt;
   var screenLocation = mapController.getLocation(event, &amp;quot;screen&amp;quot;);&lt;br /&gt;
   var worldLocation = mapController.getLocation(event, &amp;quot;world&amp;quot;);&lt;br /&gt;
   var screenLocationAsText = &amp;quot;Screen: &amp;quot; + screenLocation.getX() + &amp;quot;, &amp;quot; + screenLocation.getY();&lt;br /&gt;
   var worldLocationAsText = &amp;quot;World: &amp;quot; + worldLocation.getX() + &amp;quot;, &amp;quot; + worldLocation.getY();&lt;br /&gt;
   &lt;br /&gt;
});&lt;br /&gt;
// Egyéb események, amelyek:&lt;br /&gt;
//setMouseOverHandler&lt;br /&gt;
//setMouseOutHandler&lt;br /&gt;
//setDownHandler&lt;br /&gt;
//setUpHandler&lt;br /&gt;
//setDragHandler&lt;br /&gt;
//setDoubleClickHandler&lt;br /&gt;
&lt;br /&gt;
// Kontrollerre köthető események (activation, deactivation):&lt;br /&gt;
customMapController.setActivationHandler(function() {&lt;br /&gt;
   &lt;br /&gt;
   alert(&amp;#039;Custom controller activated!&amp;#039;)&lt;br /&gt;
});&lt;br /&gt;
//setDeactivationHandler&lt;br /&gt;
&lt;br /&gt;
// MapController hozzáadása a térképhez:&lt;br /&gt;
map.setMapController(customMapController);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A layerekhez különböző funkciók társíthatóak, amelyek a &amp;lt;code&amp;gt;FeatureSearchService&amp;lt;/code&amp;gt; segítségével érhetőek el.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var service = map.getFeatureSearchService();&lt;br /&gt;
// A layer egy specifikus műveletének lekérése&lt;br /&gt;
service.searchById(layer, [id], function(featureHolder){&lt;br /&gt;
   var feature = featureHolder.getFeatures()[0];&lt;br /&gt;
   alert(&amp;quot;Feature found: &amp;quot; + feature.getLabel());&lt;br /&gt;
});&lt;br /&gt;
// összes művelet megkeresése&lt;br /&gt;
service.searchInBounds(layer, bounds, function(features) {&lt;br /&gt;
   alert(&amp;quot;Features found: &amp;quot; + featureHolder.getFeatures().size());&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==A Geomajas és a Geosparc==&lt;br /&gt;
&lt;br /&gt;
A geomajas mostanra a geosparc (http://www.geosparc.com/) alapja lett, amivel egyedi webes GIS alkalmazásokat készítenek.&lt;br /&gt;
&lt;br /&gt;
==Hibák==&lt;br /&gt;
A Quickstart application mavenes fordítása és futtatása probléma nélkül megtörtént, azonban a client-gwt2, és a szerveroldali projekt fordítása korántsem volt zökkenőmentes. A javascriptes projekt a javadoc generálásánál elszáll, egyenként az api és a gwt2 projekt rész lefordítható.&lt;br /&gt;
&lt;br /&gt;
===Checkstyle===&lt;br /&gt;
A checkstyle egy kódformázó plugin, amit a régebbi eclipsekben használtak, azonban az újakban már eleve benne van. Kezdetben a plugin (https://maven.apache.org/plugins/maven-checkstyle-plugin/) verzióját nem találta meg a maven, ezt orvosolta a fejlesztők levelezéséből kiderített client-gwt2 projektben található settings.xml megfelelő helyre történő átmozgatása.&lt;br /&gt;
&lt;br /&gt;
===FirefoxBinary===&lt;br /&gt;
A kliensoldali kód azonban így sem fordult le, a tesztek futtatásakor a selenium (http://www.seleniumhq.org/) plugin nem tudta elérni a FirefoxBinary-t és nem tudta lefuttatni a hozzá tartozó részeket. Ezt orvosolta a &amp;lt;code&amp;gt; mvn install -DskipTests &amp;lt;/code&amp;gt; utasítás, ami a teszteket kihagyva képes sikeres fordítást produkálni.&lt;br /&gt;
&lt;br /&gt;
===Javadoc===&lt;br /&gt;
Valamilyen oknál fogva a java, a régebbi javadocos kódrészleteket nem tudja értelmezni a maven a projekteken belül és fordításnál szintaktikai hibát eredményez. A projektek szükséges részei ettől függetlenül egyenként is lefordíthatóak kisebb-nagyobb szerencsével.&lt;br /&gt;
&lt;br /&gt;
===JettyRunner és az eclipse===&lt;br /&gt;
A geomajas fejlesztői oldalán leírtak alapján, a GWT kliens és szerver oldal, az eclipse segítségével is fordítható lett volna, azonban a GWT pluginnal felkonfigurált eclipse a projekt betöltését követően a JettyRunner jetty szerverkonfiguráció futtatásánál elszáll. Az eclipse marketplace-ről letölthető GWT-s pluginnal és az eredeti GWT-s toollal sem sikerült a JettyRunner hibamentes konfigurációja, amely futtatásánál a SpringFramewörk valamiyel nhiányzó layerre panaszkodik.&lt;br /&gt;
&lt;br /&gt;
A fent említett paraméterekkel az eclipse neon.1, neon.2 és a neon.3, illetve a kepler-es verzión is kipróbálva ugyanez a hiba jelentkezett. A kísérlet, minek során a quickstart application fordítására tettem kísérletet, az eclipse a maven-es pom.xml-ben hibát talált, valószínűleg kompatibilitási okokból.   &lt;br /&gt;
&lt;br /&gt;
===Maven-es mintaprojekt===&lt;br /&gt;
A források között található régebbi dokumentációk egyikében hivatkozás van egy alap geomajas projekt létrehozására külső url-ről a maven segítségével, azonban a funkció már nem elérhető.&lt;br /&gt;
&lt;br /&gt;
===Eltérések a dokumentációktól===&lt;br /&gt;
Sok helyen a dokumentációban hivatkozott komponensek nem léteznek, vagy nem elérhetőek. Legjobb példa a Javascriptes kliens kód, amely a dokumentáció alapján letölthető lenne a http://dev.geomajas.org/geomajas-project-javascript-gwt2-distribution-1.0.0-SNAPSHOT/ URL-ről. Ez tartalmazna egy gs.js-t és egy index.html-t. A githubról letölthető Javascript Client (https://github.com/geomajas/geomajas-project-javascript) distribution része ugyanezt a kódot generálja, vagy csak egy részét, ami működik azonban a dokumentációban említett elméletben geomajas javascript fájl helyett egy dinamikusan generált javascript keletkezik. Ez elindításkor nehezményezi a gs.js hiányát, azonban a dokumentációban szereplő példa részletek futtathatóak.&lt;br /&gt;
&lt;br /&gt;
==Forrás, Linkek==&lt;br /&gt;
&lt;br /&gt;
A wiki oldal megírásához az alábbi oldalakat használtam:&lt;br /&gt;
* http://www.geomajas.org/geomajas - Geomajas weboldal.&lt;br /&gt;
* https://github.com/geomajas - Geomajas Github.&lt;br /&gt;
* http://www.geomajas.org/client-javascript/snapshot - Javascript Snapshot és kis konfigurálással működőképessé varázsolható dokumentáció.&lt;br /&gt;
* http://files.geomajas.org/maven/ - A régebbi Geomajas dokumentációk.&lt;br /&gt;
* http://mapservercloud.com:8080/geomajas/applications/tutorial/html/ - Működő bemutató a komponensekről.&lt;br /&gt;
* http://files.geomajas.org/documentation/geomajas-project-server/snapshot/geomajas-server-documenatation/html/master.html - Geomajas szerver oldal dokumentációja.&lt;br /&gt;
&lt;br /&gt;
* http://www.gwtproject.org/ - GWT oldala a pluginekkel.&lt;br /&gt;
* https://maven.apache.org/ - Maven oldala, az utasításokkal, pom.xml felépítésével...&lt;br /&gt;
* http://www.geosparc.com/ - Geosparc hivatalos oldala&lt;br /&gt;
* Előadás és JS minta - [[:Fájl:geomajas_JMDTDY.zip|geomajas_JMDTDY.zip]]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Geomajas_JMDTDY.zip&amp;diff=556</id>
		<title>Fájl:Geomajas JMDTDY.zip</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Geomajas_JMDTDY.zip&amp;diff=556"/>
		<updated>2017-05-25T09:12:12Z</updated>

		<summary type="html">&lt;p&gt;Mate: Előadás és JS minta&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Előadás és JS minta&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=333</id>
		<title>OpenLayers</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=OpenLayers&amp;diff=333"/>
		<updated>2017-04-11T16:46:48Z</updated>

		<summary type="html">&lt;p&gt;Mate: Syntax highlight&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;syntaxhighlight lang=&amp;quot;html&amp;quot;&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;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&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;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var osmSource = new ol.source.OSM();&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 var osmLayer = new ol.layer.Tile({source: osmSource});&lt;br /&gt;
 map.addLayer(osmLayer);&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;html&amp;quot;&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;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir openlayers&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ npm install openlayers&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&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;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;bash&amp;quot;&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;/syntaxhighlight&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;pre&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;/pre&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;syntaxhighlight lang=&amp;quot;html&amp;quot;&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;/syntaxhighlight&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;pre&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;/pre&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;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&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;/syntaxhighlight&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>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GeoTools&amp;diff=332</id>
		<title>GeoTools</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GeoTools&amp;diff=332"/>
		<updated>2017-04-11T16:39:38Z</updated>

		<summary type="html">&lt;p&gt;Mate: Syntax highlight&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== GeoTools ==&lt;br /&gt;
&lt;br /&gt;
A GeoTools egy általános célú nyílt forráskódú (LGPL) térinformatikai Java kód könyvtár, amely OGC szabványoknak megfelelő adatszerkezeten alapul, lehetővé téve vektor, raszter, adatbázis és térinformatikai formátumok kezelését előre definiált interfészen keresztül, mint:&lt;br /&gt;
&lt;br /&gt;
•   WMS: Web Map Service, GIS adatbázisból származó georeferenciával rendelkező térképek internetes továbbítását és megjelenítését teszi lehetővé (a térképi adatokat digitális képpé alakítja) &lt;br /&gt;
&lt;br /&gt;
•   WCS: Web Coverage Service, georeferált digitális képek (légifotó, űrfelvétel) internetes továbbítását teszi lehetővé &lt;br /&gt;
&lt;br /&gt;
•   WFS: Web Feature Service, georeferenciával rendelkező térbeli adatok (vektoros adatok) internetes továbbítását teszi lehetővé (nem alakítja az adatokat digitális képpé)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Története ==&lt;br /&gt;
&lt;br /&gt;
1996-ban kezdődött a GeoTools 1 fejlesztése a leedsi egyetem (University of Leeds, West Yorkshire, Anglia) mesterképzésének keretében, amelynek célja, hogy egy olyan eszközt hozzanak létre az ügyfelek számára, mely lehetővé teszi különböző adatok interaktív földrajzi megjelenítését.&lt;br /&gt;
2002-ben fejlesztők egy nemzetközi csoportjával újraírták, követve az OGC előírásokat, ez a GeoTools 2. Addig a verziószámokat követve frissítették a projekt nevét, majd 2007-ben ezt ejtették és javították egyszerűen GeoTools-ra, a verziószámot pedig külön kezelik.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
Java-ban íródott, nyílt forráskódú platformfüggetlen szoftver/bővítmény, melyet jelenleg is fejlesztenek. Moduláris felépítése lehetővé teszi funkcionalitásának egyszerű bővítését. Másrészről, így szakértői területek szerint tagolódik.&lt;br /&gt;
&lt;br /&gt;
A többi open source szoftverhez hasonlóan a GeoTools is nyílt repozitorival kell, hogy rendelkezzen. Vagyis rendelkezik egy fejlesztői és egy vagy több futó verzióval (stabil és karbantartott). Ez utóbbiak, amelyeket fejlesztenek, ezek új szolgáltatásokat, fejlesztéseket és hibajavításokat tartalmaznak. Verziókezelőnek Git-et használ, ahol major.minor.patch számozási rendszert alkalmaz.&lt;br /&gt;
&lt;br /&gt;
•   major – a növekvő fő verziószámot jelöli (pl.: 8.xy-ról 9.0.0-ra), vagyis olyan jelentős változás következett be, amely tönkreteheti az előző verziókkal való kompatibilitást.&lt;br /&gt;
&lt;br /&gt;
•   minor – kisebb változás (pl.: 8.0.x-ről 9.0.1-re), ahol új funkciók és/vagy javítások következnek, amely nincs hatással a kompatibilitásra&lt;br /&gt;
&lt;br /&gt;
•   patch – csak a patch azonosító változik, azaz kisebb javításokat/változtatásokat eszközöltek az előző verzióhoz képest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Architektúra ==&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Geotools.jpg]]&lt;br /&gt;
&lt;br /&gt;
Egymásra épülő rétegekből áll.&lt;br /&gt;
&lt;br /&gt;
•   Térinformatikai rendszer használatához szükség van: gt-opengis, gt-referencing and gt-metadata,&lt;br /&gt;
&lt;br /&gt;
•   továbbá a használni kívánt adatokhoz a gt-api, gt-data, gt-main, jts, gt-opengis, gt-referencing, gt-opengis, gt-metadata modulokra.&lt;br /&gt;
&lt;br /&gt;
== Tereptárgyak, geometriák ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feature&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A tereptárgy egy olyan objektum, amit a térképen megjeleníthetünk. JAVA-ra fordítva egy tereptárgy egy JAVA objektum (Object). Mint minden objektumnak, a tereptárgyaknak is lehetnek tulajdonságaik, amik a valós tulajdonságait jelölik (például elhelyezkedés, magasság, felület). &lt;br /&gt;
&lt;br /&gt;
A hasonló tereptárgyakat - például települések, repülőterek - csoportosítani lehet, ezek lesznek a JAVA osztályok (class).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ JAVA és GeoSpatial elemek megfeleltetése egymásnak&lt;br /&gt;
|-&lt;br /&gt;
! JAVA&lt;br /&gt;
! GeoSpatial&lt;br /&gt;
|-&lt;br /&gt;
| Object&lt;br /&gt;
| Feature&lt;br /&gt;
|-&lt;br /&gt;
| Class&lt;br /&gt;
| FetureType&lt;br /&gt;
|-&lt;br /&gt;
| Field&lt;br /&gt;
| Attribute &lt;br /&gt;
|-&lt;br /&gt;
| Method&lt;br /&gt;
| Operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FeatureClass&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A GeoToolsban a Feature, a FeatureType és az Attribute külön, a GeoAPI projekt által nyújtott interfészeket használnak.&lt;br /&gt;
Gyakori, hogy egy Featurenek csak szimpla attribútumai vannak (például név, mérési hely, mérr érték), ahelyett, hogy más Featureökre hivatkoznának vagy összetett struktúrákkal tárolnának adatokat. Emiatt lett különválasztva a Featuretől a SimpleFeature nevű objektum. Implementációs szemszögből ez nagyon hasonlít a Java mapekhez. Az attribútumok neve egy kulcs, ehhez a kulcshoz kapcsolódik az attribútum értéke. &lt;br /&gt;
&lt;br /&gt;
[[Fájl:feature.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geometry&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az objektumok és tereptárgyak abban különböznek egymástól, hogy a tereptárgyak tartalmaz valamilyen helyre vonatkozó információt. Ezt az információt tartalmazza a geometria és egy attribútumként lesz tárolva.&lt;br /&gt;
Geometriák reprezentálása a JTS használatával történik. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory( null );&lt;br /&gt;
  WKTReader reader = new WKTReader( geometryFactory );&lt;br /&gt;
  Point point = (Point) reader.read(&amp;quot;POINT (1 1)&amp;quot;); //új pont létrehozása Well-Known-Text formátummal&lt;br /&gt;
  &lt;br /&gt;
  GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory( null );&lt;br /&gt;
  Coordinate coord = new Coordinate( 1, 1 ); //új koordináta létrehozása&lt;br /&gt;
  Point point = geometryFactory.createPoint( coord ); //új pont létrehozása a korábban elkészített koordinátából&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DataStore&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A DataStore API olyan fájlok, szolgáltatások vagy adatbázisok reprezentálására szolgál, amik térbeli adatokat tartalmaznak. A FeatureSource osztály végzi az adatok beolvasását, az ezt implementáló FeatureStore használatos az írási/olvasási engedélyek vizsgálatára.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  String typeNames = dataStore.getTypeNames()[0];&lt;br /&gt;
  SimpleFeatureSource source = store.getfeatureSource( typeName );&lt;br /&gt;
  if( source instanceof SimpleFeatureStore){&lt;br /&gt;
     SimpleFeatureStore store = (SimpleFeatureStore) source; // írási jogosultság&lt;br /&gt;
     store.addFeatures( featureCollection ); //új objektumok hozzáadása a gyűjteményhez&lt;br /&gt;
     store.removeFeatures( filter ); // szűrés, mint az SQL where feltételében&lt;br /&gt;
     store.modifyFeature( attribute, value, filter ); //módosítás&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fájl:datastore.png]]&lt;br /&gt;
&lt;br /&gt;
== Alapfunkciók ==&lt;br /&gt;
&lt;br /&gt;
* Interfészek definiálása alapvető térbeli koncepciókhoz és adatstruktúrákhoz&lt;br /&gt;
** Integrált geometria támogatás a Java Topology Suite (JTS) által&lt;br /&gt;
** Attribútum és térbeli szűrések OGC szabványok alapján&lt;br /&gt;
&lt;br /&gt;
* Letisztult adatelérést biztosító API, tranzakciókezeléshez és szálkezeléshez&lt;br /&gt;
** GIS adatokhoz való hozzáférés többféle fájlformátumból és térbeli adatbázisból&lt;br /&gt;
** Referencia koordináta-rendszerek közötti konverzió támogatása&lt;br /&gt;
** Vetületek széles körű támogatása&lt;br /&gt;
** térbeli és nem-térbeli adatok szűrése és feldolgozása&lt;br /&gt;
&lt;br /&gt;
* Állapotmentes, alacsony memóriaigényű megjelenítőréteg, ami kifejezetten előnyös szerver-oldali környezetekben&lt;br /&gt;
** Térképek szerkesztése és megjelenítése összetett stílusokkal&lt;br /&gt;
** Címkék, színek kezelése bővítményeken keresztül&lt;br /&gt;
&lt;br /&gt;
* Hatékony séma alapú XML feldolgozás &lt;br /&gt;
&lt;br /&gt;
* Beépülő modulok: nyílt plugin rendszer nem támogatott formátumok feldolgozására&lt;br /&gt;
&lt;br /&gt;
* GeoTools Extensions: további térbeli funkcionalitást ad az alapfunkciókhoz&lt;br /&gt;
** Gráfok és hálózatok támogatása (például legrövidebb utak meghatározásához)&lt;br /&gt;
** Webes térképszerver és kliens&lt;br /&gt;
&lt;br /&gt;
* GeotTools által nem támogatott bővítményeken&lt;br /&gt;
**Swing támogatás, lokális és webes folyamattámogatás, új formátumok, négyzetrácsok generálása és ISO geometriák implementációja &lt;br /&gt;
&lt;br /&gt;
== Modulok ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OpenGIS&amp;#039;&amp;#039;&amp;#039; (gt-opengis) – &amp;#039;&amp;#039;Térinformatikai koncepciók&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Térinformatikai elemzések a következőkre: környezettudomány, élettan, ökológia, geológia, járványtan. A GIS célja, hogy rögzítse, tárolja, elemezze, kezelni és megjeleníteni tudja a más-más típusú földrajzi adatokat, s azt különböző kontextusokban, műveletekben és alkalmazásokban felhasználja. Az adatok OGC vagy ISO szabvány szerint definiáltak.&lt;br /&gt;
Interfészek: gt-main, gt-coverage, gt-referencing, gt-metadata&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JTS&amp;#039;&amp;#039;&amp;#039; (Java Topology Suite) – &amp;#039;&amp;#039;Geometriai adatokat alkalmazásához&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Geometriai műveletek, tranformációk számítása&lt;br /&gt;
Interfészek: gt-api, gt-main&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;API&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Helper osztályokat tartalmaz, melyek geometriai adatokat fordítanak&lt;br /&gt;
Interfészek: gt-main&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Metadata&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Térinformatikai adatok és szolgáltatások leírása&lt;br /&gt;
Interfészek: gt-opengis&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Referencing&amp;#039;&amp;#039;&amp;#039; – (EPSG[http://www.epsg-registry.org/]) &amp;#039;&amp;#039;Referencia információk&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A hivatkozott terület adatait, koordinátáit tartalmazza&lt;br /&gt;
Interfészek: gt-opengis&lt;br /&gt;
Coverage – Raszter adatok használata&lt;br /&gt;
Lehetőséget biztosít különféle távérzékelési, térinformatikai, térképészeti, földmérési adatokat tartalmazó raszter képfájlok használatához (GeoTIFF) vagy többdimenziós mátrixhoz (NetCDF). A TIFF formátumú képek digitális műholdas felvételek tárolására és szállítására alkalmas, ami lehet légi fotó, terepmodell, térkép vagy különféle földrajzi elemzések.&lt;br /&gt;
Interfészek: gt-opengis&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Main&amp;#039;&amp;#039;&amp;#039; – &amp;#039;&amp;#039;Szűrők, funkciók, stílusok&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Alapértelmezett implementációkat tartalmaz a gt-api és gt-opengis interfészek számára, mint szűrők, funkciók, stílusok használata, ezek összessége már elegendő egy alkalmazás készítéséhez.&lt;br /&gt;
Interfészek: gt-opengis&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Támogatja a hozzáférést a különböző információkhoz, például vektorgrafikus adatok elérése, külső szolgáltatások, lemezfájlok használata az alkalmazásban. &lt;br /&gt;
Interfészek: gt-api&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JDBC&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Hozzáférést biztosít a különböző adatbázisokhoz a Java JDBC segítségével.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CQL&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A térinformatikai adatokkal való munkához, olyan ember által olvasható szűrőkifejezésekre van szükségünk, mint a gt-cql modulban található kontextus leíró nyelv. (ítéletlogika)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
XML használatával támogatja a térinformatikai adatok elemzését és kódolását.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Render&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Java2D felhasználásával térinformatikai adatok képi megjelenítését teszi lehetővé a térképen.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Module.png]]&lt;br /&gt;
&lt;br /&gt;
==Java Topolgy Suite==&lt;br /&gt;
&lt;br /&gt;
A GeoTools erősen épít a Java Topology Suite (JTS) nyújtotta szolgáltatásokra.&lt;br /&gt;
&lt;br /&gt;
A JTS is egy nyílt forráskódú könyvtár, az Euklideszi lineáris síkgeometria informatikai alkalmazásaihoz szolgáltat különböző eszközöket. Alapvetően GIS szoftverek részeként használt, az OpenGIS konzorcium által definiált geometriai modelleket és API-kat implementálja.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geometriai modell&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A geometria osztályok pontok, vonalláncok (Linestring), poligonok és gyűjtemények (collection) modellezését támogatják. A geometriák határai egyértelműen megfogalmazottak, a 2 dimenziós euklideszi térben definiáltak. Ugyanakkor egy Z értéket is tartalmazhatnak az objektumok. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geometriai funkciók&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Topológiai érvényesség vizsgálata&lt;br /&gt;
* Terület és távolság funkciók&lt;br /&gt;
* Fedési funkciók, mint például metszet, különbség, unió, szimmetrikus differencia&lt;br /&gt;
* Bufferek számítása&lt;br /&gt;
* Konvex burok&lt;br /&gt;
* Geometriai egyszerűsítések&lt;br /&gt;
* Geometriai sűrítés&lt;br /&gt;
* Lineáris vonatkoztatás&lt;br /&gt;
* Delaunay háromszögelés&lt;br /&gt;
* Voronoi diagramm generálása&lt;br /&gt;
* Legkisebb befoglaló háromszög&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Térbeli struktúrák és algoritmusok &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Vonalszegmensek metszete&lt;br /&gt;
* Pont a poligonban hatékony meghatározása&lt;br /&gt;
* Térbeli indexstruktúrák, mint például a negyedelő-fa&lt;br /&gt;
* Planáris gráfstruktúrák és algoritmusok&lt;br /&gt;
&lt;br /&gt;
== Lekérdezések használata ==&lt;br /&gt;
&lt;br /&gt;
A GeoTools programcsomag többféle lekérdezési műveletet és adatbázisok széles körét támogatja. Lehetőség van fájlokból (például shapefile) adatokat betölteni és raktuk lekérdezéseket elvégezni valamint lokális és távoli szerveren elérhető adatbázishoz csatlakozni és ott térbeli lekérdezéseket (spatial query) végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A GeoTools adatbázis kezelő rétegének felépítése&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Adatbázisból úgynevezett Filterek segítségével tudunk lekérdezni. A filterek a CQL nyelv segítségével fogalmazhatjuk meg. A CQL hasonló az SQL nyelv where záradékában használt feltételekhez. Az adatbázist egy DataStore nevű objektum reprezentálja. A CQL nyelv segítségével lehetőségünk van különféle térbeli lekérdezéseket (példáull legkisebb befoglaló négyzet, terület, kerület, távolság meghatározása) elvégezni, de lehetséges nem-térbeli lekérdezések végrehajtása is.&lt;br /&gt;
&lt;br /&gt;
Az adatbázis-kapcsolat felépítésében egy beépített, JDataStoreWizard nevű komponens nyújt segítséget. Itt csak be kell paramétereznünk, hogy milyen adatbázisból vagy fájlból szeretnénk kinyírni az adatokat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Példa kódrészletek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JDataStoreWizard inícializálása&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  JDataStoreWizard wizard = new JDataStoreWizard(format);&lt;br /&gt;
  int result = wizard.showModalDialog();&lt;br /&gt;
  if (result == JWizard.FINISH) {&lt;br /&gt;
     Map&amp;lt;String, Object&amp;gt; connectionParameters = wizard.getConnectionParameters();&lt;br /&gt;
     dataStore = DataStoreFinder.getDataStore(connectionParameters);&lt;br /&gt;
     if (dataStore == null) {&lt;br /&gt;
        JOptionPane.showMessageDialog(null, &amp;quot;Could not connect - check parameters&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
     updateUI();&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Szűrések&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  Filter filter = CQL.toFilter(&amp;quot;BBOX(ATTR1, 151.12, 151.14, -33.5, -33.51)&amp;quot;);&lt;br /&gt;
  SimpleFeatureCollection features = source.getFeatures(filter);&lt;br /&gt;
  FeatureCollectionTableModel model = new FeatureCollectionTableModel(features);&lt;br /&gt;
  table.setModel(model);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Az első sorban létrehozzuk a Filter objektumot. A Filter az argumentumban megadott CQL lekérdezés eredményét - jelen esetben a pontok által határolt befoglaló négyszögben lévő térobjektumokat - adja vissza.&lt;br /&gt;
&lt;br /&gt;
A második sorban lévő kód végzi a tényleges szűrést: egy FeatureCollection-be tölti be a lekérdezésnek eleget tevő tereptárgyakat. &lt;br /&gt;
&lt;br /&gt;
Ez után létrehozunk egy modellt, amit később egy táblázatban meg tudunk jeleníteni grafikusan.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Példa lekérdezés az elemek számlálásához&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  String typeName = (String) featureTypeCBox.getSelectedItem();&lt;br /&gt;
  SimpleFeatureSource source = dataStore.getFeatureSource(typeName); //adatforrás definiálása&lt;br /&gt;
  Filter filter = CQL.toFilter(&amp;quot;city_population &amp;gt; 350000&amp;quot;); //szűrjünk a 350.000-nél több lakosú városokra&lt;br /&gt;
  SimpleFeatureCollection features = source.getFeatures(filter); //leszűrt elemek&lt;br /&gt;
  int count = features.size(); //elemek száma&lt;br /&gt;
  JOptionPane.showMessageDialog(text, &amp;quot;A feltételeknek megfelelő elemek száma: &amp;quot; + count); //eredmény kiíratása egy dialógusablakba&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lekérdezés megjelenítése grafikusan&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A lekérdezett tereptárgyakat grafikus úton a következőképpen tudjuk megjeleníteni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  StyleBuilder styleBuilder = new StyleBuilder();&lt;br /&gt;
  PolygonSymbolizer restrictedSymb = styleBuilder.createPolygonSymbolizer(Color.BLUE, Color.BLACK, 0);&lt;br /&gt;
  Style myStyle = styleBuilder.createStyle(restrictedSymb);&lt;br /&gt;
  FeatureLayer layer = new FeatureLayer(features, myStyle);&lt;br /&gt;
  layer.setTitle(text.getText());&lt;br /&gt;
  mapFrame.getMapContent().addLayer(layer);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A StyleBuilder osztállyal tudunk egyéni megjelenítési stílust létrehozni.&amp;lt;br /&amp;gt;&lt;br /&gt;
A 2. sorban beállítjuk, hogy fekete kontúrú, kék színnel kitöltött objektumok keletkezzenek. &amp;lt;br /&amp;gt;&lt;br /&gt;
Ezután létrehozunk egy FeatureBuildert, ami a tereptárgyak megjelenítésében segít. Erre a rétegre helyezzük fel a különböző objektumokat. Később ezt a réteget tudjuk megjeleníteni a térképen.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Geotools_terkep.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
Rövid magyarázat a képhez:&lt;br /&gt;
# Rétegek neve, színek, láthatósága&lt;br /&gt;
# Lekérdezések eredményének táblázatos megjelenítése az összes attribútummal együtt&lt;br /&gt;
# A lekérdezés eredményét (vörös) és az eredeti adathalmazt megjelenítő térkép&lt;br /&gt;
# A térkép nagyítására, kicsinyítésére és mozgatására használható eszköztár&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Az elkészített térkép elmentése képként&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
A GeoTools különböző eszközöket biztosít a stílusokkal formázott térképek képként való mentéséhez.&lt;br /&gt;
&lt;br /&gt;
  String[] writers = ImageIO.getWriterFormatNames();&lt;br /&gt;
  //Formátumot és nevet bekérő panel létrehozása&lt;br /&gt;
  String format = (String) JOptionPane.showInputDialog(mapFrame,&lt;br /&gt;
      &amp;quot;Térkép kiterjesztése:&amp;quot;, &amp;quot;Kiterjesztés kiválasztása&amp;quot;,&lt;br /&gt;
      JOptionPane.PLAIN_MESSAGE, null, writers, &amp;quot;png&amp;quot;);&lt;br /&gt;
  String localDirectory = SAVE_DIR;&lt;br /&gt;
  ...&lt;br /&gt;
  //Szerkesztett térképpanel elkérése&lt;br /&gt;
  JMapPane mapPane = mapFrame.getMapPane();&lt;br /&gt;
  ImageOutputStream outputImageFile = null;&lt;br /&gt;
  FileOutputStream fileOutputStream = null;&lt;br /&gt;
     try {&lt;br /&gt;
        fileOutputStream = new FileOutputStream(new File(localDirectory));&lt;br /&gt;
        outputImageFile = ImageIO.createImageOutputStream(fileOutputStream);&lt;br /&gt;
        //a lekért térkép képét kiírjuk fájlba&lt;br /&gt;
        RenderedImage bufferedImage = mapPane.getBaseImage();        &lt;br /&gt;
        ImageIO.write(bufferedImage, outputType, outputImageFile);&lt;br /&gt;
     } catch (IOException ex) {&lt;br /&gt;
        LOGGER.error(ex);&lt;br /&gt;
     } finally {&lt;br /&gt;
        try {&lt;br /&gt;
           if (outputImageFile != null) {&lt;br /&gt;
              outputImageFile.flush();&lt;br /&gt;
              outputImageFile.close();&lt;br /&gt;
              fileOutputStream.flush();&lt;br /&gt;
              fileOutputStream.close();&lt;br /&gt;
           }&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
              LOGGER.error(e);&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Használata ==&lt;br /&gt;
&lt;br /&gt;
Telepítést nem igényel, mivel ez egy könyvtár. Szükség van fejlesztői környezetre (Eclipse, NetBeans), valamint magára a könyvtárra[http://sourceforge.net/projects/geotools/files/], ahol a 11-es verziótól kezdődően Java 1.7 SDK szükséges.&lt;br /&gt;
&lt;br /&gt;
Maven használata (ajánlott) Eclipse-ben:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.&amp;#039;&amp;#039;&amp;#039;    Válasszuk a File &amp;gt; New &amp;gt; Other menüpontot&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2.&amp;#039;&amp;#039;&amp;#039;    A varázslóban a Maven &amp;gt; Maven project pontot&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3.&amp;#039;&amp;#039;&amp;#039;    A New Maven varázslójában menjünk tovább, majd az alapértelmezett maven-archtype-quickstart –ot választjuk és tovább megyünk&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4.&amp;#039;&amp;#039;&amp;#039;    A következő pontban meg kell adnunk a projekt adatait:&lt;br /&gt;
&lt;br /&gt;
•   Group Id: org.geotools&lt;br /&gt;
&lt;br /&gt;
•   Artifact Id: tutorial&lt;br /&gt;
&lt;br /&gt;
•   Version: 0.0.1-SNAPSHOT (default)&lt;br /&gt;
&lt;br /&gt;
•   Package: org.geotools.tutorial&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5.&amp;#039;&amp;#039;&amp;#039;    Finish-re kattintva létrejött az új projekt&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;6.&amp;#039;&amp;#039;&amp;#039;    Az App.java futtatásakor megjelenik a konzolon a „Hello World!”&lt;br /&gt;
&lt;br /&gt;
A pom.xml fájlban a különböző pluginokhoz tartozó Jar fájlokat a Maven projekt letölti az ún. „local repository”-ba.&lt;br /&gt;
A GeoTools használatához adjuk hozzá a következőket a pom.xml fájlunkhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;properties&amp;gt;&lt;br /&gt;
           &amp;lt;project.build.sourceEncoding&amp;gt;UTF-8&amp;lt;/project.build.sourceEncoding&amp;gt;&lt;br /&gt;
           &amp;lt;geotools.version&amp;gt;12-RC1&amp;lt;/geotools.version&amp;gt;&lt;br /&gt;
       &amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;dependencies&amp;gt;&lt;br /&gt;
        &amp;lt;dependency&amp;gt;&lt;br /&gt;
            &amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;&lt;br /&gt;
            &amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
            &amp;lt;version&amp;gt;4.11&amp;lt;/version&amp;gt;&lt;br /&gt;
            &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;
        &amp;lt;/dependency&amp;gt;&lt;br /&gt;
        &amp;lt;dependency&amp;gt;&lt;br /&gt;
            &amp;lt;groupId&amp;gt;org.geotools&amp;lt;/groupId&amp;gt;&lt;br /&gt;
            &amp;lt;artifactId&amp;gt;gt-shapefile&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
            &amp;lt;version&amp;gt;${geotools.version}&amp;lt;/version&amp;gt;&lt;br /&gt;
        &amp;lt;/dependency&amp;gt;&lt;br /&gt;
        &amp;lt;dependency&amp;gt;&lt;br /&gt;
            &amp;lt;groupId&amp;gt;org.geotools&amp;lt;/groupId&amp;gt;&lt;br /&gt;
            &amp;lt;artifactId&amp;gt;gt-swing&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
            &amp;lt;version&amp;gt;${geotools.version}&amp;lt;/version&amp;gt;&lt;br /&gt;
        &amp;lt;/dependency&amp;gt;&lt;br /&gt;
      &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
              &amp;lt;id&amp;gt;maven2-repository.dev.java.net&amp;lt;/id&amp;gt;&lt;br /&gt;
              &amp;lt;name&amp;gt;Java.net repository&amp;lt;/name&amp;gt;&lt;br /&gt;
              &amp;lt;url&amp;gt;&amp;lt;nowiki&amp;gt;http://download.java.net/maven/2&amp;lt;/nowiki&amp;gt;&amp;lt;/url&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
              &amp;lt;id&amp;gt;osgeo&amp;lt;/id&amp;gt;&lt;br /&gt;
              &amp;lt;name&amp;gt;Open Source Geospatial Foundation Repository&amp;lt;/name&amp;gt;&lt;br /&gt;
              &amp;lt;url&amp;gt;&amp;lt;nowiki&amp;gt;http://download.osgeo.org/webdav/geotools/&amp;lt;/nowiki&amp;gt;&amp;lt;/url&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
      &amp;lt;/repositories&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Példaprogram shapefájlok megjelenítésére ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.&amp;#039;&amp;#039;&amp;#039;    Az előző Maven projektben hozzunk létre egy új csomagot org.geotools.tutorial.quickstart névvel a következő osztállyal &amp;lt;code&amp;gt;org.geotools.tutorial.quickstart.Quickstart&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2.&amp;#039;&amp;#039;&amp;#039;    Egy fájlválasztó létrehozásával megkönnyítjük a shapefájlok kiválasztásához&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  File file = JFileDataStoreChooser.showOpenFile(&amp;quot;shp&amp;quot;, null);&lt;br /&gt;
        if (file == null) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        FileDataStore store = FileDataStoreFinder.getDataStore(file);&lt;br /&gt;
        SimpleFeatureSource featureSource = store.getFeatureSource();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3.&amp;#039;&amp;#039;&amp;#039;    Betöltjük a shapefájlt&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   MapContent map = new MapContent();&lt;br /&gt;
        map.setTitle(&amp;quot;Quickstart&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        Style style = SLD.createSimpleStyle(featureSource.getSchema());&lt;br /&gt;
        Layer layer = new FeatureLayer(featureSource, style);&lt;br /&gt;
        map.addLayer(layer);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4.&amp;#039;&amp;#039;&amp;#039;    Megjelenítjük&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   JMapFrame.showMap(map);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Programozási megoldások ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GeoServer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1.&amp;#039;&amp;#039;&amp;#039;    Telepítés után a következő linken érjük el: http://localhost:8080/geoserver/web/&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2.&amp;#039;&amp;#039;&amp;#039;    Hozzunk létre egy új Workspace-t&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3.&amp;#039;&amp;#039;&amp;#039;    Ehhez adjunk egy új adattárat, amely shapefájlokat tartalmaz, tehát válasszuk a Directory of spatial files (shapefiles) lehetőséget&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4.&amp;#039;&amp;#039;&amp;#039;    A GeoServer telepítési helyét keressük meg a számítógépen, ebben a Server Status menüpont szolgál segítségül. Majd a data_dir mappába másoljunk kedvünk szerint shapefájlokat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5.&amp;#039;&amp;#039;&amp;#039;    Válasszuk ki a 2. pontban létrehozott Workspace-t, töltsük ki az erre a pontra vonatkozó leírást, valamint válasszuk ki a GeoServer data_dir mappájába azt a mappát, amely tartalmazza a használni kívánt shapefájlokat és mentsünk.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;6.&amp;#039;&amp;#039;&amp;#039;    A Layers menüpontban tegyük nyilvánossá azokat a shapefájlokat, amelyeket használni szeretnénk a továbbiakban. Ehhez szükséges egy SRS kód, ami legyen 4326 (WSG – földmérési adatokat tartalmaz). Ezek után a határok számítása következik, ezt kitölti az oldal a Compute linkekre kattintva. Mentsünk.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;7.&amp;#039;&amp;#039;&amp;#039;    A Layers Group menüpontban hozzunk létre egy csoportját az új rétegeknek. Adjunk nevet és leírást a csoportnak. Majd adjuk hozzá a használni kívánt rétegeket (shapefájlokat). Ezeket kirajzolásuk szerinti sorrendbe helyezhetjük. Mentsünk.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;8.&amp;#039;&amp;#039;&amp;#039;    A Layer Prewiev menüpontban keressük meg azt a csoportot, amit az előző pontban létrehoztunk, majd kattintsunk az OpenLayers hivatkozásra. Ekkor egy új lapon kirajzolódnak a shapefájlok.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Geoserver.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Felhasználási helye ==&lt;br /&gt;
&lt;br /&gt;
* GeoServer&lt;br /&gt;
** Nyílt forráskódú szerver alkalmazás, térbeli adatok megosztására&lt;br /&gt;
&lt;br /&gt;
* uDig&lt;br /&gt;
** Teljeskörű JAVA asztali megoldás GIS adatok feldolgozására, GIS szoftverek készítéséhez&lt;br /&gt;
&lt;br /&gt;
* GeoPublisher&lt;br /&gt;
&lt;br /&gt;
* Geomajas&lt;br /&gt;
** Nyílt forráskódú GIS könyvtárak, eszközök és API-k gyűjteménye, szerver-alapú térképészeti megoldások támogatásához&lt;br /&gt;
&lt;br /&gt;
* Postgresql/PostGIS&lt;br /&gt;
&lt;br /&gt;
* 52N&lt;br /&gt;
&lt;br /&gt;
* Atlas Styler&lt;br /&gt;
** Térképszerkesztő szoftver, fejlesztése mára megszűnt, azonban a forráskód szabadon elérhető  ([http://en.geopublishing.org//])&lt;br /&gt;
&lt;br /&gt;
== Felhasználási lehetőségek ==&lt;br /&gt;
&lt;br /&gt;
- Térinformatikai adatok, szimbólumok megjelenítése és szűrése OGC szabványból (CQL, SLD, SFS, WCS, WCPS, WFS, WMS, WMTS, WPS)&lt;br /&gt;
&lt;br /&gt;
- JTS - az Euklideszi vektorteren végzett geometriai transzformációk modellezéséhez&lt;br /&gt;
&lt;br /&gt;
- Rácshálók, shape fájlok és raszter felvételek olvasása&lt;br /&gt;
&lt;br /&gt;
- Grafikonok és hálózatok készítése, elemzése&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Jellemző funkciók ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Térbeli fogalmakra és adatszerkezetekre meghatározott interfészek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
•   Attribútum és térbeli szűrőkkel OGC adatok használata&lt;br /&gt;
&lt;br /&gt;
•   Geometriai transzformációk modellezése&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatelérés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
•   Térbeli adatbázisok és GIS adatok számos formátumának támogatása&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alacsony memóriahasználat&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
•   Disk-ről renderel, nem a memóriába ír. Különösen hasznos szerveroldali környezetben.&lt;br /&gt;
&lt;br /&gt;
•   Bonyolult térképek megjelenítése&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Támogatott formátumok ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Raszter formátum:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
arcsde, arcgrid, geotiff, grassraster, gtopo30, image (JPEG, TIFF, GIF, PNG), imageio-ext-gdal, imagemoasaic, imagepyramid, JP2K, matlab&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatbázis “jdbc-ng” támogatás:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
db2, h2, mysql, oracle, postgis, spatialite, sqlserver&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vektor formátum:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
app-schema, arcsde, csv, dxf, edigeo, excel, geojson, org, property, shapefile, wfs&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XML:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
xsd-core (xml simple types), fes, filter, gml2, gml3, kml, ows, sld, wcs, wfs, wms, wps, vpf.&lt;br /&gt;
&lt;br /&gt;
== Implementált szabványok ==&lt;br /&gt;
&lt;br /&gt;
* OGC Styled Layer Descriptor&lt;br /&gt;
** Tereptárgyak, felületek felhasználó által definiálható szimbolizálása, színezése&lt;br /&gt;
&lt;br /&gt;
* OGC General Feature Model&lt;br /&gt;
&lt;br /&gt;
* Raszteres adatok OGC Grid Coverage reprezentációja&lt;br /&gt;
&lt;br /&gt;
* OGC Filter and Common Constraint Language (CQL)&lt;br /&gt;
&lt;br /&gt;
* ISO 19107 Geometry&lt;br /&gt;
** A tereptárgyakat leíró objektumok alapvetó karakterisztikáját írja le&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://geotools.org/&lt;br /&gt;
&lt;br /&gt;
http://www.geoapi.org/&lt;br /&gt;
&lt;br /&gt;
http://geoserver.org/&lt;br /&gt;
&lt;br /&gt;
http://www.opengeospatial.org/&lt;br /&gt;
&lt;br /&gt;
Mi az az OGC? - https://www.youtube.com/watch?v=bfkCdir-yO8&lt;br /&gt;
&lt;br /&gt;
http://svn.osgeo.org/geotools/trunk/modules/plugin/&lt;br /&gt;
&lt;br /&gt;
https://github.com/geotools/geotools/wiki&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/geotools/files/&lt;br /&gt;
&lt;br /&gt;
http://www.naturalearthdata.com/&lt;br /&gt;
&lt;br /&gt;
http://www.epsg-registry.org/&lt;br /&gt;
&lt;br /&gt;
http://spatialreference.org/ref/epsg/wgs-84/&lt;br /&gt;
&lt;br /&gt;
http://docs.geotools.org/latest/userguide/tutorial/filter/query.html&lt;br /&gt;
&lt;br /&gt;
https://github.com/geopublishing/atlasframework&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/JTS_Topology_Suite&lt;br /&gt;
&lt;br /&gt;
http://docs.geotools.org/latest/userguide/tutorial/feature/csv2shp.html&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=DotSpatial&amp;diff=331</id>
		<title>DotSpatial</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=DotSpatial&amp;diff=331"/>
		<updated>2017-04-11T16:34:09Z</updated>

		<summary type="html">&lt;p&gt;Mate: Syntax highlight&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;DotSpatial&amp;#039;&amp;#039;&amp;#039; egy nyílt forráskódú térinformatikai programkönyvtár, amely különböző funkcionalitásokat biztosít téradat kezelés, betöltés és mentés, valamint elemzési feladatokra. A programkönyvtár &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/C_Sharp C#]&amp;lt;/span&amp;gt;-ban íródott és a &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/.NET_keretrendszer .NET 4.0 keretrendszeren]&amp;lt;/span&amp;gt; alapszik. Elsősorban asztali alkalmazások elkészítését segíti elő, amely a &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://en.wikipedia.org/wiki/Windows_Forms Windows Forms]&amp;lt;/span&amp;gt; platformra épülnek. A programcsomag &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/GNU_Lesser_General_Public_License GNU LGPL]&amp;lt;/span&amp;gt; licenc alatt használható.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Története ==&lt;br /&gt;
&lt;br /&gt;
A könyvtár létrehozását az Idaho állami egyetemen (&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://en.wikipedia.org/wiki/Idaho_State_University Idaho State University]&amp;lt;/span&amp;gt;) fejlesztett [[MapWindow]] alkalmazás ihlette. Kezdetben csak a saját belső fejlesztésüket szerették volna megkönnyíteni különféle központi funkciók kiszervezésével, idővel azonban a felhalmozott szolgáltatások száma elérte azt a méretet, hogy a fejlesztők úgy érezték, érdemes kiadni a nagyközönség számára is. &lt;br /&gt;
Sajnos a folyamatosan rétegződő, és központi koncepció nélküli fejlesztés rányomta a bélyegét a kódbázisra. Ennek megfelelően modulonként, vagy akár azokon belül is erősen eltérő megközelítéseket láthatunk a forráskódban.&lt;br /&gt;
&lt;br /&gt;
== Szolgáltatások ==&lt;br /&gt;
&lt;br /&gt;
* Térinformatikai adatok megjelenítése &amp;#039;&amp;#039;.Net Windows Form&amp;#039;&amp;#039;, vagy Web alkalmazásokban&lt;br /&gt;
* Shapefájlok, rácshálók valamint raszter felvételek olvasása.&lt;br /&gt;
* Menet közbeni projektálás&lt;br /&gt;
* Tudományos analízis&lt;br /&gt;
* GPS adatok olvasása&lt;br /&gt;
&lt;br /&gt;
== Kik használják? ==&lt;br /&gt;
&lt;br /&gt;
* [http://mapwindow6.codeplex.com/ MapWindow 6]&lt;br /&gt;
* [http://hydrodesktop.codeplex.com/ HydroDesktop]&lt;br /&gt;
* [http://mad.codeplex.com/ MAD]&lt;br /&gt;
* [http://linesiter.codeplex.com/ LineSiter]&lt;br /&gt;
* [http://cetamon.codeplex.com/ Marine Life]&lt;br /&gt;
* [https://pvdesktop.codeplex.com/ PVMapper Site Designer]&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
Telepítést nem igényel, ha használni szeretnénk, akkor két lehetőségünk közül választhatunk.&lt;br /&gt;
&lt;br /&gt;
* Letölthetjük azt össze modult egyben a http://dotspatial.codeplex.com/ oldalról, majd később a szükséges projektekbe referenciázzuk őket.&lt;br /&gt;
* &amp;#039;&amp;#039;Visual Studio&amp;#039;&amp;#039; 2010-től felfelé használhatjuk a &amp;#039;&amp;#039;NuGet&amp;#039;&amp;#039; csomagkezelő, ahonnan telepíthetjük az egyes modulokat a kiválasztott projektek alá. Nagy előnye, hogy csomag frissülése esetén automatikusan eljut hozzánk is az új csomag.&lt;br /&gt;
&lt;br /&gt;
== Windows Forms vezérlők ==&lt;br /&gt;
&lt;br /&gt;
A DotSpatialt egyik legnagyobb előnye az előre megírt kontrolok, amiket a már jól megszokott Windows Formsos recept alapján akár vizuális szerkesztőben is összeállíthatunk.&lt;br /&gt;
&lt;br /&gt;
=== DotSpatialt vezérlők telepítése ===&lt;br /&gt;
&lt;br /&gt;
Ha szeretnénk használni a grafikus szerkesztőt, akkor mindenekelőtt hozzá kell adnunk a &amp;#039;&amp;#039;Toolbox&amp;#039;&amp;#039;-hoz a DotSpatialt vezérlőit.&lt;br /&gt;
&lt;br /&gt;
# Jobbklikk a Toolboxon, majd válasszuk ki az &amp;#039;&amp;#039;Add Tab&amp;#039;&amp;#039; menüpontot.&lt;br /&gt;
# Nevezzük az előbb hozzáadott fület.&lt;br /&gt;
# Ismét jobbklikk az új fülön, és válasszuk ki a Choose Item opciót.&lt;br /&gt;
# A felugró ablakból válasszuk ki a &amp;#039;&amp;#039;DotSpatial.Controls.dll&amp;#039;&amp;#039;-t, ha nem találjuk a listából, akkor manuálisan adjuk hozz.&lt;br /&gt;
&lt;br /&gt;
Most már ugyanúgy használhatjuk DotSpatial vezérlőit, mit a .NET  alapértelmezettjeit.&lt;br /&gt;
&lt;br /&gt;
== Vezérlők demonstrációja ==&lt;br /&gt;
&lt;br /&gt;
A DotSpatial vezérlők segítségével rendkívül gyorsan tudjuk alkalmazásunkat felruházni térinformatikai képességekkel. A következő alkalmazás remek példa az előbbiekre. &lt;br /&gt;
Először készítsük el a felületet az alapértelmezett .NET, illetve a már ismertetett DotSpatial vezérlőkből.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;KÉP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután megfelelően elneveztük a felületre elhelyezett elemeket, a hozzájuk tartozó kód mindössze ennyi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot; line=&amp;quot;line&amp;quot;&amp;gt;&lt;br /&gt;
public partial class DesktopMapping : Form&lt;br /&gt;
    {&lt;br /&gt;
        private AppManager _AppManager;&lt;br /&gt;
&lt;br /&gt;
        public DesktopMapping()&lt;br /&gt;
        {&lt;br /&gt;
            InitializeComponent();&lt;br /&gt;
&lt;br /&gt;
            _AppManager = new AppManager();&lt;br /&gt;
            _AppManager.LoadExtensions();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void uxOpenFile_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            uxMap.AddLayer();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void uxZoomIn_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            uxMap.ZoomIn();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void uxZoomWide_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            uxMap.ZoomToMaxExtent();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void uxPan_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            uxMap.FunctionMode = DotSpatial.Controls.FunctionMode.Pan;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void uxGenShp_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            var rnd = new Random();&lt;br /&gt;
            var pg = new Polygon[100];&lt;br /&gt;
            var f = new Feature();&lt;br /&gt;
            var fs = new FeatureSet(f.FeatureType);&lt;br /&gt;
             &lt;br /&gt;
            for (int i = 0; i &amp;lt; 100; i++)&lt;br /&gt;
            {&lt;br /&gt;
                var center = new Coordinate((rnd.Next(50) * 360) - 180, (rnd.Next(60) * 180) - 90);&lt;br /&gt;
                var coord = new Coordinate[50];&lt;br /&gt;
                for (int ii = 0; ii &amp;lt; 50; ii++)&lt;br /&gt;
                {&lt;br /&gt;
                    coord[ii] = new Coordinate(center.X + Math.Cos((ii * 10) * Math.PI / 10), center.Y + (ii * 10) * Math.PI / 10);&lt;br /&gt;
                }&lt;br /&gt;
                coord[35] = new Coordinate(coord[0].X, coord[0].Y);&lt;br /&gt;
                pg[i] = new Polygon(coord);&lt;br /&gt;
                fs.Features.Add(pg[i]);&lt;br /&gt;
            }&lt;br /&gt;
            fs.SaveAs(&amp;quot;C:\\Temp\\test.shp&amp;quot;, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bővítmények ==&lt;br /&gt;
Lehetőségünk van bővítmények készítésére, amelyek akár a már kész alkalmazásokba is könnyedén integrálódnak (ilyen például a MapWindow).&lt;br /&gt;
&lt;br /&gt;
=== Példaprogram beépülő modulra ===&lt;br /&gt;
&lt;br /&gt;
A bemutatásra kerülő bővítménnyel lehetőségünk lesz vonalakat rajzolni, réteget létrehozni, illetve megjeleníthetünk velük kapcsolatos magassági adatokat.&lt;br /&gt;
Elsőnek le kell töltenünk az online megtalálható [http://visualstudiogallery.msdn.microsoft.com/92919cee-a2b0-43c6-8993-aeac965bc4b5 sémával].&lt;br /&gt;
&lt;br /&gt;
==== Diagram készítése ====&lt;br /&gt;
&lt;br /&gt;
A magassági adatok megjelenítéséhez egy Windows Form alkalmazást készítünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot; line=&amp;quot;line&amp;quot;&amp;gt;&lt;br /&gt;
public void Plot(double[] data)&lt;br /&gt;
{&lt;br /&gt;
    chart1.Series.Clear();&lt;br /&gt;
    var series = chart1.Series.Add(&amp;quot;Elevation (meters)&amp;quot;);&lt;br /&gt;
    series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;&lt;br /&gt;
    series.Points.DataBindY(data);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Raszter adatok kinyerése ====&lt;br /&gt;
&lt;br /&gt;
A DotSpatial segítségével könnyedén kinyerhetjük a szükséges magassági adatokat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot; line=&amp;quot;line&amp;quot;&amp;gt;&lt;br /&gt;
private static double GetElevation(IMapRasterLayer raster, Coordinate coordinate)&lt;br /&gt;
{&lt;br /&gt;
    RcIndex rowColumn = raster.DataSet.Bounds.ProjToCell(coordinate);&lt;br /&gt;
    double elevation = raster.DataSet.Value[rowColumn.Row, rowColumn.Column];&lt;br /&gt;
    return elevation;&lt;br /&gt;
}&lt;br /&gt;
private static double GetDistance(double x1, double y1, double x2, double y2)&lt;br /&gt;
{&lt;br /&gt;
    return Math.Sqrt(((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1)));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Koordináták kinyerése ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot; line=&amp;quot;line&amp;quot;&amp;gt;&lt;br /&gt;
private List&amp;lt;Coordinate&amp;gt; GetCoordinatesFromLine(IMapLineLayer lineLayer)&lt;br /&gt;
{&lt;br /&gt;
    IFeatureSet featureSet = lineLayer.DataSet;&lt;br /&gt;
&lt;br /&gt;
    // The coordinates should be the first feature of the feature set.&lt;br /&gt;
    IList&amp;lt;Coordinate&amp;gt; lineCoordinates = featureSet.Features[0].Coordinates;&lt;br /&gt;
&lt;br /&gt;
    // Though the original line may only have a few points, we split&lt;br /&gt;
    // each line segment into many points&lt;br /&gt;
    List&amp;lt;Coordinate&amp;gt; pathCoordinates = new List&amp;lt;Coordinate&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
    for (int i = 0; i &amp;lt; lineCoordinates.Count - 1; i++)&lt;br /&gt;
    {&lt;br /&gt;
        Coordinate startCoord = lineCoordinates[i];&lt;br /&gt;
        Coordinate endCoord = lineCoordinates[i + 1];&lt;br /&gt;
        List&amp;lt;Coordinate&amp;gt; segmentCoordinates = SplitSegment(startCoord.X, startCoord.Y, endCoord.X, endCoord.Y);&lt;br /&gt;
&lt;br /&gt;
        //add list of points from this line segment to the complete list&lt;br /&gt;
        pathCoordinates.AddRange(segmentCoordinates);&lt;br /&gt;
    }&lt;br /&gt;
    return pathCoordinates;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private static List&amp;lt;Coordinate&amp;gt; SplitSegment(double startX, double startY, double endX, double endY)&lt;br /&gt;
{&lt;br /&gt;
    const int MinimumDistanceBetweenPoints = 15;&lt;br /&gt;
&lt;br /&gt;
    double points = Math.Floor(GetDistance(startX, startY, endX, endY) / MinimumDistanceBetweenPoints);&lt;br /&gt;
    int PointsPerSegment = (int)Math.Max(points, 1);&lt;br /&gt;
&lt;br /&gt;
    double curX = startX;&lt;br /&gt;
    double curY = startY;&lt;br /&gt;
    double constXdif = ((endX - startX) / PointsPerSegment);&lt;br /&gt;
    double constYdif = ((endY - startY) / PointsPerSegment);&lt;br /&gt;
&lt;br /&gt;
    List&amp;lt;Coordinate&amp;gt; pathPointList = new List&amp;lt;Coordinate&amp;gt;(PointsPerSegment);&lt;br /&gt;
    for (int i = 0; i &amp;lt;= PointsPerSegment; i++)&lt;br /&gt;
    {&lt;br /&gt;
        if (i == 0)&lt;br /&gt;
        {&lt;br /&gt;
            curX = startX;&lt;br /&gt;
            curY = startY;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            curX = curX + constXdif;&lt;br /&gt;
            curY = curY + constYdif;&lt;br /&gt;
        }&lt;br /&gt;
        Coordinate coordinate = new Coordinate(curX, curY);&lt;br /&gt;
        pathPointList.Add(coordinate);&lt;br /&gt;
    }&lt;br /&gt;
    return pathPointList;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void ShowElevation()&lt;br /&gt;
{&lt;br /&gt;
    if (!map.GetRasterLayers().Any())&lt;br /&gt;
    {&lt;br /&gt;
        MessageBox.Show(&amp;quot;Please add a DEM raster layer to the map.&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (!map.GetLineLayers().Any())&lt;br /&gt;
    {&lt;br /&gt;
        MessageBox.Show(&amp;quot;Please create a path by left clicking to add points and right-clicking to complete the path.&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
        IMapRasterLayer rasterLayer = map.GetRasterLayers().First();&lt;br /&gt;
        IMapLineLayer pathLayer = map.GetLineLayers().First();&lt;br /&gt;
        var coords = GetCoordinatesFromLine(pathLayer);&lt;br /&gt;
&lt;br /&gt;
        double[] elevation = new double[coords.Count];&lt;br /&gt;
        for (int i = 0; i &amp;lt; coords.Count; i++)&lt;br /&gt;
        {&lt;br /&gt;
            elevation[i] = GetElevation(rasterLayer, coords[i]);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        ChartForm chart = new ChartForm();&lt;br /&gt;
        chart.Plot(elevation);&lt;br /&gt;
        chart.Show();&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception ex)&lt;br /&gt;
    {&lt;br /&gt;
        MessageBox.Show(&amp;quot;Error calculating elevation. The whole path should be inside the DEM area. &amp;quot; + ex.Message);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SimpleActionItem használata (menüelem) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot; line=&amp;quot;line&amp;quot;&amp;gt;&lt;br /&gt;
public void ButtonClick(object sender, EventArgs e)&lt;br /&gt;
{&lt;br /&gt;
    // We&amp;#039;re expecting this extension to only be run in a Windows Forms application.&lt;br /&gt;
    // We&amp;#039;ll depend on a few Windows Forms (Map) features like MouseDown, so we cast&lt;br /&gt;
    // the App.Map as a Map and store a reference to it.&lt;br /&gt;
    map = App.Map as Map;&lt;br /&gt;
&lt;br /&gt;
    // remove any existing path if needed.&lt;br /&gt;
    if (_PathLineLayer != null)&lt;br /&gt;
        map.Layers.Remove(_PathLineLayer);&lt;br /&gt;
&lt;br /&gt;
    _PathLineLayer = null;&lt;br /&gt;
    _LineFeature = null;&lt;br /&gt;
&lt;br /&gt;
    // Let the user know we are ready for them to set points by changing the cursor.&lt;br /&gt;
    map.Cursor = Cursors.Cross;&lt;br /&gt;
    map.MouseDown += map_MouseDown;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Vektor réteg létrehozása ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot; line=&amp;quot;line&amp;quot;&amp;gt;&lt;br /&gt;
private void map_MouseDown(object sender, MouseEventArgs e)&lt;br /&gt;
{&lt;br /&gt;
    if (e.Button == MouseButtons.Left)&lt;br /&gt;
    {&lt;br /&gt;
        // Encourage the user to select a raster, if they haven&amp;#039;t done so.&lt;br /&gt;
        if (!map.GetRasterLayers().Any())&lt;br /&gt;
        {&lt;br /&gt;
            map.AddRasterLayer();&lt;br /&gt;
            map.ZoomToMaxExtent();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        StartOrContinueDrawingPath(e.Location);&lt;br /&gt;
        App.ProgressHandler.Progress(null, 0, &amp;quot;Point registered. Click again to add line segment. Right-click to finish.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else if (e.Button == MouseButtons.Right)&lt;br /&gt;
    {&lt;br /&gt;
        EndDrawingPath();&lt;br /&gt;
        ShowElevation();&lt;br /&gt;
        App.ProgressHandler.Progress(null, 0, &amp;quot;Ready.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private IFeature AddLineFeatureSetToMap()&lt;br /&gt;
{&lt;br /&gt;
    FeatureSet lineFeatureSet = new FeatureSet(FeatureType.Line);&lt;br /&gt;
    lineFeatureSet.Projection = map.Projection;&lt;br /&gt;
&lt;br /&gt;
    // Initialize the featureSet attribute table by creating columns&lt;br /&gt;
    DataColumn column = new DataColumn(&amp;quot;ID&amp;quot;, typeof(short));&lt;br /&gt;
    lineFeatureSet.DataTable.Columns.Add(column);&lt;br /&gt;
    DataColumn column2 = new DataColumn(&amp;quot;Number of Points&amp;quot;, typeof(int));&lt;br /&gt;
    lineFeatureSet.DataTable.Columns.Add(column2);&lt;br /&gt;
    DataColumn column3 = new DataColumn(&amp;quot;Description&amp;quot;);&lt;br /&gt;
    lineFeatureSet.DataTable.Columns.Add(column3);&lt;br /&gt;
&lt;br /&gt;
    // Add the featureSet as map layer&lt;br /&gt;
    _PathLineLayer = (MapLineLayer)map.Layers.Add(lineFeatureSet);&lt;br /&gt;
    _PathLineLayer.Symbolizer = new LineSymbolizer(Color.Blue, 2);&lt;br /&gt;
    _PathLineLayer.LegendText = &amp;quot;Path Layer&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    var newList = new List&amp;lt;Coordinate&amp;gt;();&lt;br /&gt;
    LineString lineGeometry = new LineString(newList);&lt;br /&gt;
&lt;br /&gt;
    // AddFeature creates the point and a row in the DataTable&lt;br /&gt;
    return lineFeatureSet.AddFeature(lineGeometry);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void StartOrContinueDrawingPath(System.Drawing.Point mouseLocation)&lt;br /&gt;
{&lt;br /&gt;
    Coordinate coord = map.PixelToProj(mouseLocation);&lt;br /&gt;
&lt;br /&gt;
    if (_LineFeature == null)&lt;br /&gt;
    {&lt;br /&gt;
        // This is the first time we see a left click; create empty line feature.&lt;br /&gt;
        _LineFeature = AddLineFeatureSetToMap();&lt;br /&gt;
&lt;br /&gt;
        // Add first coordinate to the line feature.&lt;br /&gt;
        _LineFeature.Coordinates.Add(coord);&lt;br /&gt;
&lt;br /&gt;
        // Set the line feature attribute. This line may have multiple points,&lt;br /&gt;
        // but there is only one row in the attribute table for the entire feature (line).&lt;br /&gt;
        _LineFeature.DataRow[&amp;quot;ID&amp;quot;] = 0;&lt;br /&gt;
        _LineFeature.DataRow[&amp;quot;Description&amp;quot;] = &amp;quot;Path (line)&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        // Second or later click - add points to the existing feature&lt;br /&gt;
        _LineFeature.BasicGeometry.Coordinates.Add(coord);&lt;br /&gt;
        _LineFeature.ParentFeatureSet.InitializeVertices();&lt;br /&gt;
&lt;br /&gt;
        // Draw the line.&lt;br /&gt;
        map.ResetBuffer();&lt;br /&gt;
&lt;br /&gt;
        // Update the attribute table.&lt;br /&gt;
        _LineFeature.DataRow[&amp;quot;Number of Points&amp;quot;] = _LineFeature.BasicGeometry.Coordinates.Count;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void EndDrawingPath()&lt;br /&gt;
{&lt;br /&gt;
    // The path is complete.&lt;br /&gt;
    map.ResetBuffer();&lt;br /&gt;
    map.Cursor = Cursors.Arrow;&lt;br /&gt;
    map.MouseDown -= map_MouseDown;&lt;br /&gt;
    _LineFeature = null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=PgRouting&amp;diff=330</id>
		<title>PgRouting</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=PgRouting&amp;diff=330"/>
		<updated>2017-04-11T16:27:50Z</updated>

		<summary type="html">&lt;p&gt;Mate: Syntax highlight&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;pgRouting&amp;#039;&amp;#039;&amp;#039; egy &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/Ny%C3%ADlt_forr%C3%A1sk%C3%B3d%C3%BA_szoftver nyílt forráskódú]&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/C%2B%2B C++]&amp;lt;/span&amp;gt; nyelven írt bővítmény a [[PostGIS]]/&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/PostgreSQL PostgreSQL]&amp;lt;/span&amp;gt; térinformatikai adatbázisokhoz. Lehetővé teszi &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/Gr%C3%A1f gráf adatszerkezetek]&amp;lt;/span&amp;gt; kezelését, így például legrövidebb utakat, csomópontok távolságát és egyéb hálózati elemzést igénylő feladatokat oldhatunk meg vele. A programcsomag &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/GNU_General_Public_License GNU GPL v2]&amp;lt;/span&amp;gt; licenc alatt használható.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
A PostGIS újabb verziói (2.0+) már tartalmazzák a pgRouting csomagot, így nem szükséges külön telepíteni, csak aktiválni kell, a következő módon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE EXTENSION pgrouting;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A teljes telepítési útmutató elérhető a pgRouting honlapján.&lt;br /&gt;
&lt;br /&gt;
== Felépítés ==&lt;br /&gt;
&lt;br /&gt;
A pgRouting két fő összetevőből áll:&lt;br /&gt;
* Egy C modul, amely egy PostgreSQL-ben átadott lekérdezést használ a gráf felépítéséhez.&lt;br /&gt;
* C++ modulok, amelyek a lekérdezést úgynevezett boost gráffá alakítják, és futtatják az útvonal-választást.&lt;br /&gt;
&lt;br /&gt;
Hogy mely összetevőt használja a program futása során, az az algoritmus fajtájától függ.&lt;br /&gt;
&lt;br /&gt;
A függvénykönyvtár szerkezete pedig a következőképp néz ki:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  cmake/                 - cmake fájlok&lt;br /&gt;
  CMakeLists.txt         - Top level cmake &lt;br /&gt;
  doc/                   - Top level doc, a nem forrásalgoritmus-specifikus dokumentáció helye&lt;br /&gt;
    themes/              - Sphinx téma a doc-nak&lt;br /&gt;
    static/              - dokumentáció képei&lt;br /&gt;
  src/                  &lt;br /&gt;
    astar/               - A* algoritmus&lt;br /&gt;
    common/              - pgRouting projektekben szükséges közös fájlok&lt;br /&gt;
    dijkstra/            - Dijkstra algoritmus&lt;br /&gt;
    driving_distance/    - Vezetési távolság&lt;br /&gt;
    trsp/                - Legrövidebb utak kanyarodási korlátokkal&lt;br /&gt;
    tsp/                 - Utazó ügynök&lt;br /&gt;
  tools/                 - Tesztelési eszközök&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az src mappa minden könyvtárában &amp;lt;code&amp;gt;doc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sql&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, és &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; almappák találhatók, melyekbe értelemszerűen a következők kerülnek:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;doc&amp;#039;&amp;#039;&amp;#039;: Az adott algoritmushoz szükséges összes dokumentáció ReStructuredText formátumban. Ennek célja, hogy a függvények leírásával, input és output paraméterek megadásával a felhasználók számára érthetővé tegye, hogyan működik az algoritmus.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;sql&amp;#039;&amp;#039;&amp;#039;: Az sql burkolók a C kódhoz.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;src&amp;#039;&amp;#039;&amp;#039;: C/C++ kód az algoritmushoz.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;test&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;test.conf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*.data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*.test&amp;lt;/code&amp;gt;, és &amp;lt;code&amp;gt;*.rest&amp;lt;/code&amp;gt; fájlok az algoritmus teszteléséhez.&lt;br /&gt;
&lt;br /&gt;
Fejlesztési célból a programot klónozhatjuk Git-en keresztül, majd telepítjük a következők szerint:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 git clone git@github.com:pgRouting/pgrouting.git&lt;br /&gt;
 cd pgrouting&lt;br /&gt;
 cmake -DWITH_TSP=ON -DWITH_DD=ON .&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok betöltése&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A vektoros térképi adatok adatbázis-táblába betöltésére számos eszköz áll rendelkezésre, például:&lt;br /&gt;
*	&amp;#039;&amp;#039;&amp;#039;osm2po&amp;#039;&amp;#039;&amp;#039;: OpenStreetMap (OSM) adatok konvertálása SQL formátumba, pgRouting-nak megfelelő formátumban.&lt;br /&gt;
*	&amp;#039;&amp;#039;&amp;#039;shp2pgsql&amp;#039;&amp;#039;&amp;#039;:	PostgreSQL shapefile betöltője.&lt;br /&gt;
*	&amp;#039;&amp;#039;&amp;#039;ogr2ogr&amp;#039;&amp;#039;&amp;#039;:	Vektoros adatok konverziója.&lt;br /&gt;
*	&amp;#039;&amp;#039;&amp;#039;osm2pgsql&amp;#039;&amp;#039;&amp;#039;:	OSM adat betöltése postgreSQL-be.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeldolgozás&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Amikor egy GIS fájlt olvasunk be az adatbázisunkba a pgRouting számára, nem feltétlenül követnek alkalmas topológiát a rekordok. A helytelen topológia hibás útvonalakhoz vezetne. Hogy használható adattáblát kapjunk, csomópontokra van szükségünk minden egyes útkereszteződésnél. Az útvonalhálózat megfelelő topológiájának kialakítását segítheti a pgr_createTopology  vagy a pgr_nodeNetwork parancs. Működésük hasonló. Az utóbbi beolvassa a „csúcstalan” hálózat adatbázis-tábláját, majd egy új táblába írja a már felcsúcsozott éleket. Paraméterei&lt;br /&gt;
*	éltábla neve, &lt;br /&gt;
*	tolerancia: a toleranciaértéken belüli csomópontok egy csomópontot fognak alkotni,&lt;br /&gt;
*	id, az éltábla elsődleges kulcsa,&lt;br /&gt;
*	geometriát tartalmazó oszlop,&lt;br /&gt;
*	kimeneti tábla szuffixe. Alapértelmezetten edge_table_noded.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lekérdezés szintaxis&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Minden pgRouting lekérdezés az alábbi formátumot követi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT pgr_&amp;lt;algorithm&amp;gt;(&amp;lt;SQL for edges&amp;gt;, start, end, &amp;lt;additonal options&amp;gt;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;pgr_&amp;lt;/code&amp;gt;előtaggal hívjuk meg a lentebb ismertetett algoritmusok egyikét. A belső SQL lekérdezéssel adjuk meg a táblát, amelyre az algoritmust futtatjuk, a kezdő- és végponto(ka)t, valamint opcionális további szűrési feltételeket. Például, ha a [http://http://docs.pgrouting.org/latest/en/doc/src/developer/sampledata.html#sampledata pgRouting dokumentációjában] bemutatott mintaadatokkal dolgozunk, az alábbi lekérdezéssel a 2. sorszámú csúcsból a 3. sorszámúba vezető legrövidebb utat kapjuk meg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT * FROM pgr_dijkstra(&lt;br /&gt;
      &amp;#039;SELECT id, source, target, cost, reverse_cost &lt;br /&gt;
      FROM edge_table&amp;#039;, 2, 3);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
=== Dijkstra algoritmus ===&lt;br /&gt;
A &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://hu.wikipedia.org/wiki/Dijkstra-algoritmus Dijkstra algoritmus]&amp;lt;/span&amp;gt; egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer.  Az algoritmus csak nem negatív élsúlyok esetén működik. Jelölje a súlyfüggvényt &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. Az algoritmus mohó módszert használ. Legyen a kiindulási pont &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a célállomás pedig &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. Az algoritmus egy &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazban tárolja azon csúcsokat, amelyeknek már ismerjük az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből hozzájuk vezető legrövidebb út hosszát. Ezen kívül minden &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; csúcsról nyilvántartunk az algoritmus futása során egy &amp;lt;math&amp;gt;D[u]&amp;lt;/math&amp;gt; értéket, ami az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ba vezető addig megismert legrövidebb út hossza.&lt;br /&gt;
&lt;br /&gt;
Kezdetben &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; üres, &amp;lt;math&amp;gt;D[s]=0&amp;lt;/math&amp;gt; és minden más &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcsra &amp;lt;math&amp;gt;D[v]=\infty&amp;lt;/math&amp;gt;. Ezután minden iterációban kiválasztunk a &amp;lt;math&amp;gt;V\setminus H&amp;lt;/math&amp;gt; halmazból egy olyan &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; csúcsot, amelyre &amp;lt;math&amp;gt;D[x]&amp;lt;/math&amp;gt; minimális, áttesszük &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;-et &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ba, majd &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; minden olyan &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; szomszédjára, amely nincs &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ban frissítjük a &amp;lt;math&amp;gt;D[v]&amp;lt;/math&amp;gt; értéket:&lt;br /&gt;
&amp;lt;math&amp;gt;D[v]=\min\{D[v],D[x]+w(x,v)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Az algoritmus véget ér, amikor &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; átkerül &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ba, ekkor &amp;lt;math&amp;gt;D[t]&amp;lt;/math&amp;gt; egy legrövidebb &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be vezető út hossza. Az algoritmus kis módosítással egy legrövidebb utat is megad &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be.&lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége szomszédsági mátrixos gráfábrázolás esetén &amp;lt;math&amp;gt;O(|V|^2)&amp;lt;/math&amp;gt;, szomszédsági listás gráfábrázolás esetén Fibonacci kupacot használva&lt;br /&gt;
&amp;lt;math&amp;gt;O(|E|+|V|\log |V|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Kétirányú Dijkstra algoritmus ===&lt;br /&gt;
A kétirányú Dijkstra algoritmus szintén egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer.  Az algoritmus csak nem negatív élsúlyok esetén működik.  Legyen a kiindulási pont &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a célállomást pedig &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. A Dijkstra algoritmust futtatjuk a kiindulási pontból az eredeti gráfon, és párhuzamosan a célállomásból a transzponált gráfon (amelyet úgy kapunk az eredeti gráfból, hogy az élek irányítását megfordítjuk).  Akkor állunk meg, ha egy &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcs mindkét irányból bekerül a Dijkstra algoritmusnál definiált &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazba (pontosabban a &amp;lt;math&amp;gt;H_s&amp;lt;/math&amp;gt; és a &amp;lt;math&amp;gt;H_t&amp;lt;/math&amp;gt; halmazba is). Egy alternatív lehetőség, hogy a &amp;lt;math&amp;gt;H_s&amp;lt;/math&amp;gt; és a &amp;lt;math&amp;gt;H_t&amp;lt;/math&amp;gt; halmazok közül minden egyes iterációban csak azt bővítjük, amelyiknél &amp;lt;math&amp;gt;D[x]&amp;lt;/math&amp;gt; kisebb. Az algoritmus kis módosítással egy legrövidebb utat is megad &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be.&lt;br /&gt;
&lt;br /&gt;
=== k-Dijkstra algoritmus ===&lt;br /&gt;
A &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-Dijkstra algoritmus egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából több adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer. Valójában a Dijkstra algoritmus a gráf egy adott csúcsából az összes többi csúcsba vezető legrövidebb utat megtalálja, így akárhány célállomást megadhatunk. Az algoritmus akkor fejeződik be, amikor minden egyes célállomás bekerült a Dijkstra algoritmusnál definiált &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazba. Az algoritmus kis módosítással magukat a legrövidebb utakat is megadja.&lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége szomszédsági mátrixos gráfábrázolás esetén &amp;lt;math&amp;gt;O(|V|^2)&amp;lt;/math&amp;gt;, szomszédsági listás gráfábrázolás esetén Fibonacci kupacot használva&lt;br /&gt;
&amp;lt;math&amp;gt;O(|E|+|V|\log |V|)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== A* algoritmus ===&lt;br /&gt;
Az [https://en.wikipedia.org/wiki/A*_search_algorithm &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus] egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer.  Az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus a Dijkstra algoritmus általánosítása, és szintén csak nem negatív élsúlyok esetén működik. Jelölje a súlyfüggvényt &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. Az algoritmus mohó módszert használ. Legyen a kiindulási pont &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a célállomás pedig &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. Az algoritmus egy &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazban tárolja azon csúcsokat, amelyeknek már ismerjük az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből hozzávezető legrövidebb út hosszát, egy &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; halmazban pedig azokat, amelyeket már elértünk &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből, de az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből hozzájuk vezető legrövidebb út hosszát még nem ismerjük. Minden &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; csúcsról nyilvántartunk az algoritmus futása során három értéket: &amp;lt;math&amp;gt;D[u]&amp;lt;/math&amp;gt; az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ba vezető addig megismert legrövidebb út hossza, &amp;lt;math&amp;gt;C[u]&amp;lt;/math&amp;gt; egy nem negatív heurisztikus alsó becslés az &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ból &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be vezető legrövidebb út hosszára, amelyre az is teljesül, hogy az &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ból bármely &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcsba vezető legrövidebb út hosszára &lt;br /&gt;
&amp;lt;math&amp;gt;C[u]-C[v]&amp;lt;/math&amp;gt; alsó korlát (például egy térkép esetén &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; légvonalban mért távolsága), végül &amp;lt;math&amp;gt;B[u]=D[u]+C[u]&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Kezdetben &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; üres, &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;-ben csak az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; csúcs van, és &amp;lt;math&amp;gt;B[s]=0&amp;lt;/math&amp;gt;. Ezután minden iterációban kiválasztunk az &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; halmazból egy olyan &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; csúcsot, amelyre &amp;lt;math&amp;gt;B[x]&amp;lt;/math&amp;gt; minimális, áttesszük &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;-et &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ba, majd &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; minden olyan &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; szomszédjára, amely nincs &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ban frissítjük először a &amp;lt;math&amp;gt;D[v]&amp;lt;/math&amp;gt; értéket: &lt;br /&gt;
&amp;lt;math&amp;gt;D[v]=\min\{D[v],D[x]+w(x,v)\}&amp;lt;/math&amp;gt;,&lt;br /&gt;
majd a &amp;lt;math&amp;gt;B[v]&amp;lt;/math&amp;gt; értéket: &lt;br /&gt;
&amp;lt;math&amp;gt;B[v]=\min\{B[v],D[v]+C[v]\}&amp;lt;/math&amp;gt;,&lt;br /&gt;
végül áttesszük &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;-t &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;-be. Az algoritmus véget ér, amikor &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; átkerül &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt;-ba, ekkor &amp;lt;math&amp;gt;B[t]&amp;lt;/math&amp;gt; egy legrövidebb &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be vezető út hossza. Az algoritmus kis módosítással egy legrövidebb utat is megad &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;-be.&lt;br /&gt;
&lt;br /&gt;
A tapasztalat azt mutatja, hogy az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus számos esetben hatékonyabb, mint a Dijkstra algoritmust.&lt;br /&gt;
&lt;br /&gt;
=== Kétirányú &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus ===&lt;br /&gt;
A kétirányú &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út megtalálására szolgáló módszer.  Az algoritmus csak nem negatív élsúlyok esetén működik.  Legyen a kiindulási pont &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, a célállomást pedig &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. Az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt;  algoritmust futtatjuk a kiindulási pontból az eredeti gráfon, és párhuzamosan a célállomásból a transzponált gráfon (amelyet úgy kapunk az eredeti gráfból, hogy az élek irányítását megfordítjuk).  Akkor állunk meg, ha egy &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcs mindkét irányból bekerül az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmusnál definiált &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; halmazba (pontosabban a &amp;lt;math&amp;gt;H_s&amp;lt;/math&amp;gt; és a &amp;lt;math&amp;gt;H_t&amp;lt;/math&amp;gt; halmazba is). Az algoritmus kis módosítással egy legrövidebb utat is megad s-ből t-be.&lt;br /&gt;
&lt;br /&gt;
=== Yen algoritmus ===&lt;br /&gt;
A [https://en.wikipedia.org/wiki/Yen%27s_algorithm Yen algoritmus] egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf egy adott csúcsából egy adott másik csúcsába vezető legrövidebb út mellett megtalálja a második, harmadik, …, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-adik legrövidebb (egyszerű) utat is. Az algoritmus csak nem negatív élsúlyok esetén működik. &lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége &lt;br /&gt;
&amp;lt;math&amp;gt;O(k|V|(|E|+|V|\log |V|))&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Floyd-Warshall algoritmus ===&lt;br /&gt;
A [https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm Floyd-Warshall algoritmus] egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf bármely két csúcsa közötti legrövidebb út megtalálására szolgáló módszer. Az algoritmus negatív élsúlyok esetén is működik, ha a gráf nem tartalmaz negatív összhosszúságú irányított kört. Jelölje a súlyfüggvényt &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. Az algoritmus dinamikus programozást használ. Legyen a gráf csúcshalmaza &amp;lt;math&amp;gt;\{v_1,v_2,\ldots,v_n\}&amp;lt;/math&amp;gt;. Az algoritmus minden &amp;lt;math&amp;gt;0\leqslant k\leqslant n&amp;lt;/math&amp;gt; esetén meghatározza a &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;-ből &lt;br /&gt;
&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;-be menő legrövidebb olyan (egyszerű) út &amp;lt;math&amp;gt;T_k[v_i,v_j]&amp;lt;/math&amp;gt; hosszát, amelyen a közbülső csúcsok a &amp;lt;math&amp;gt;\{v_1,v_2,\ldots,v_k\}&amp;lt;/math&amp;gt; halmazból kerülnek ki: &lt;br /&gt;
&amp;lt;math&amp;gt;T_0[v_i,v_j]=w(v_i,v_j)&amp;lt;/math&amp;gt;, és &amp;lt;math&amp;gt;T_k[v_i,v_j]=\min\{T_{k-1}[v_i,v_j],T_{k-1}[v_i,v_k]+T_{k-1}[v_k,v_j]\}&amp;lt;/math&amp;gt; ha &amp;lt;math&amp;gt;k&amp;gt;0&amp;lt;/math&amp;gt;. Az algoritmus kis módosítással magukat a legrövidebb utakat is megadja.&lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége &amp;lt;math&amp;gt;O(|V|^3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Johnson algoritmus ===&lt;br /&gt;
A [https://en.wikipedia.org/wiki/Johnson%27s_algorithm Johnson algoritmus] egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf bármely két csúcsa közötti legrövidebb út megtalálására szolgáló módszer. Az algoritmus negatív élsúlyok esetén is működik, ha a gráf nem tartalmaz negatív összhosszúságú irányított kört. Jelölje a súlyfüggvényt &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. Az algoritmus ritka gráfokon teljesít igazán jól. &lt;br /&gt;
&lt;br /&gt;
Vegyünk fel egy új &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; csúcsot, és vezessünk &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-ből nulla súlyú éleket &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; csúcsaiba. Jelölje az így kapott gráfot &amp;lt;math&amp;gt;G&amp;#039;&amp;lt;/math&amp;gt;. Futtassuk le &amp;lt;math&amp;gt;G&amp;#039;&amp;lt;/math&amp;gt;-re a Bellman-Ford algoritmust az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; kezdőcsúccsal. Az algoritmus által szolgáltatott távolságérték a gráf egy &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcsára legyen &lt;br /&gt;
&amp;lt;math&amp;gt;D[v]&amp;lt;/math&amp;gt;. Átsúlyozzuk a &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; gráf éleit: legyen &amp;lt;math&amp;gt;w&amp;#039;(u,v)=w(u,v)+D[u]-D[v]&amp;lt;/math&amp;gt; minden &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt; élre. Most &amp;lt;math&amp;gt;w&amp;#039;&amp;lt;/math&amp;gt; egy nem negatív súlyfüggvény &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;-n. Futtassuk ezzel a súlyfüggvénnyel a Dijkstra algoritmust a &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; gráf minden csúcsából. Egy legrövidebb &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-ból &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;-be vezető út hossza ezután a kapott érték mínusz &amp;lt;math&amp;gt;D[u]-D[v]&amp;lt;/math&amp;gt;. Az algoritmus kis módosítással magukat a legrövidebb utakat is megadja.&lt;br /&gt;
&lt;br /&gt;
Az algoritmus költsége szomszédsági listás gráfábrázolás esetén Fibonacci kupacot használva&lt;br /&gt;
&amp;lt;math&amp;gt;O(|V|(|E|+|V|\log |V|))&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Utazó ügynök probléma === &lt;br /&gt;
Az [https://hu.wikipedia.org/wiki/Az_utaz%C3%B3_%C3%BCgyn%C3%B6k_probl%C3%A9m%C3%A1ja utazó ügynök probléma] a következő. Adott városoknak egy listája, és adott bármely két város között a távolság. Határozzunk meg egy olyan körutat, amely minden városon pontosan egyszer halad át, és a hossza minimális. A problémára nem ismert polinomiális költségű algoritmus. A program ún. simulated annealing technikán alapuló algoritmust használ egy jó közelítő megoldás meghatározására.&lt;br /&gt;
&lt;br /&gt;
=== Legrövidebb utak kanyarodási korlátokkal ===&lt;br /&gt;
Az algoritmus egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráf adott csúcsából egy másik adott csúcsába vezető legrövidebb út meghatározásakor képes figyelembe venni, hogy két csatlakozó él egymás utáni bejárása extra költséggel bírhat. Ezeket a megszorításokat egy külön táblában adhatjuk meg. Tapasztalat szerint az algoritmus közel olyan gyors, mint az &amp;lt;math&amp;gt;A^\ast&amp;lt;/math&amp;gt; algoritmus.&lt;br /&gt;
&lt;br /&gt;
=== Vezetési távolság === &lt;br /&gt;
Az algoritmus egy súlyozott élű, irányított &amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt; gráfban a Dijkstra algoritmus felhasználásával megadja azon csúcsokat, melyekbe egy vagy több adott csúcsból egy adott értéknél rövidebb úton el lehet jutni.&lt;br /&gt;
&lt;br /&gt;
== Kapcsolódó alkalmazások ==&lt;br /&gt;
Útvonal-meghatározásra alkalmas adathalmazt például [[OpenStreetMap]] (OSM) térképekből nyerhetünk ki. Ehhez egyik alkalmas segédeszköz az [[OSM2PO]]  alkalmazás, amely megfelelő topológiájú SQL fájlt állít elő a megadott térképrészlethez, amely egyből alkalmas a pgRouting-gal vagy QGIS-szel való feldolgozásra. [[Fájl:Osm.png|thumb|450px|Útvonal megjelenítése OSM2PO webszolgáltatásként]]&lt;br /&gt;
Az OSM2PO révén vizualizálhatjuk is a legrövidebb utakat. A programmal előállított SQL táblákban minden útkereszteződéshez tartozik egy rekord, melyben a következőket tároljuk:&lt;br /&gt;
*	koordináták (&amp;lt;code&amp;gt;x1, x2, y1, y2&amp;lt;/code&amp;gt;), &lt;br /&gt;
*	név (&amp;lt;code&amp;gt;osm_name&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	csomópont azonosító (&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	lehetséges továbbhaladási irány (&amp;lt;code&amp;gt;osm_source_id, osm_target_id&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	útszakasz hossza (&amp;lt;code&amp;gt;km&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	megengedett sebesség (&amp;lt;code&amp;gt;kmh&amp;lt;/code&amp;gt;),&lt;br /&gt;
*	költség (&amp;lt;code&amp;gt;cost&amp;lt;/code&amp;gt;),&lt;br /&gt;
*       geometria (&amp;lt;code&amp;gt;geom_way&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;demo.bat&amp;lt;/code&amp;gt; fájl szerkesztésével specifikálhatjuk térképünk paramétereit, például, hogy mely térképrészleten dolgozzunk. A [https://mapzen.com/data/metro-extracts/ Mapzen] oldalán kész &amp;lt;code&amp;gt;.pbf&amp;lt;/code&amp;gt; formátumú városrészleteket találhatunk, melyeket kompatibilisek az Osm2Po-val. A fájl futtatásával előáll egy &amp;lt;code&amp;gt;.sql&amp;lt;/code&amp;gt; fájl is, melyet importálhatunk a postGIS adatbázisunkba, és akár pgRouting lekérdezéseket is futtathatunk rajta. &lt;br /&gt;
Amíg fut a program, helyi webszerveren (&amp;lt;code&amp;gt;localhost:8888/Osm2poService&amp;lt;/code&amp;gt;) jeleníthető meg az importált térképrészlet, melyen az útkeresést is kipróbálhatjuk.&lt;br /&gt;
&lt;br /&gt;
== Szakirodalom ==&lt;br /&gt;
&lt;br /&gt;
* Regina O. Obe, Leo S. Hsu. [https://locatepress.com/pgrouting &amp;quot;pgRouting: A Practical Guide&amp;quot;], &amp;#039;&amp;#039;Locate Press&amp;#039;&amp;#039;, 2016.&lt;br /&gt;
* Regina O. Obe, Leo S. Hsu. [https://www.manning.com/books/postgis-in-action-second-edition &amp;quot;PostGIS in Action (Second Edition)&amp;quot;], &amp;#039;&amp;#039;Manning Publictions&amp;#039;&amp;#039; (ISBN 9781617291395). 2015. pp 286-290.&lt;br /&gt;
* Lijing Zhang, Xuanhui He. [http://link.springer.com/chapter/10.1007%2F978-3-642-25349-2_133 &amp;quot;Route Search Base on pgRouting&amp;quot;], &amp;#039;&amp;#039;Software Engineering and Knowledge Engineering: Theory and Practice Vol 2.&amp;#039;&amp;#039;. Springer-Verlag Berlin Heidelberg, 2012. pp 1003-1007.&lt;br /&gt;
&lt;br /&gt;
== Külső hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
* [http://pgrouting.org/ A pgRouting hivatalos honlapja]&lt;br /&gt;
* [http://docs.pgrouting.org/latest/en/doc/index.html pgRouting Dokumentáció]&lt;br /&gt;
* [http://www.postgresonline.com/journal/archives/362-An-almost-idiots-guide-to-install-PostgreSQL-9.5,-PostGIS-2.2-and-pgRouting-2.1.0-with-Yum.html Fejlesztőkörnyezet telepítési útmutató]&lt;br /&gt;
* [http://workshop.pgrouting.org/index.html pgRouting Workshop]&lt;br /&gt;
* [http://www.bostongis.com/PrinterFriendly.aspx?content_name=pgrouting_osm2po_1 OpenStreetMap fájl betöltése Osm2Po-val és útvonalkeresés]&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Kezd%C5%91lap&amp;diff=284</id>
		<title>Kezdőlap</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Kezd%C5%91lap&amp;diff=284"/>
		<updated>2017-03-14T14:45:46Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Üdvözlet a GIS Wikin!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A GIS Wiki az [http://www.elte.hu Eötvös Loránd Tudományegyetem] [http://www.inf.elte.hu Informatikai Karának] egy belső információs oldala, amelynek célja alapvetően &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://hu.wikipedia.org/wiki/F%C3%B6ldrajzi_inform%C3%A1ci%C3%B3s_rendszer térinformatikai rendszerrek]&amp;lt;/span&amp;gt;kel kapcsolatos ismeretek gyűjtése. A szócikkek anyagát elsősorban a [http://mcserep.web.elte.hu/elte/ttaf/ Térinformatikai és Távérzékelési Alkalmazások fejlesztése] tárgy hallgatói biztosították.&lt;br /&gt;
&lt;br /&gt;
Jelenleg elérhető szócikkek:&lt;br /&gt;
&lt;br /&gt;
* [[DotSpatial]]&lt;br /&gt;
* [[GeoTools]]&lt;br /&gt;
* [[GDAL/OGR]]&lt;br /&gt;
* [[MapServer]]&lt;br /&gt;
* [[OpenLayers]]&lt;br /&gt;
* [[PgRouting]]&lt;br /&gt;
* [[SharpMap]]&lt;br /&gt;
* [[SUMO]]&lt;br /&gt;
&lt;br /&gt;
Az oldalt [http://people.inf.elte.hu/groberto Giachetta Roberto] és [http://mcserep.web.elte.hu Cserép Máté] szerkeszti.&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Kezd%C5%91lap&amp;diff=276</id>
		<title>Kezdőlap</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Kezd%C5%91lap&amp;diff=276"/>
		<updated>2017-02-21T13:12:49Z</updated>

		<summary type="html">&lt;p&gt;Mate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Üdvözlet a GIS Wikin!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A GIS Wiki az [http://www.elte.hu Eötvös Loránd Tudományegyetem] [http://www.inf.elte.hu Informatikai Karának] egy belső információs oldala, amelynek célja alapvetően &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://hu.wikipedia.org/wiki/F%C3%B6ldrajzi_inform%C3%A1ci%C3%B3s_rendszer térinformatikai rendszerrek]&amp;lt;/span&amp;gt;kel kapcsolatos ismeretek gyűjtése. A szócikkek anyagát elsősorban a [http://people.inf.elte.hu/groberto/elte_ttaf/ Térinformatikai és Távérzékelési Alkalmazások fejlesztése] tárgy hallgatói biztosították.&lt;br /&gt;
&lt;br /&gt;
Jelenleg elérhető szócikkek:&lt;br /&gt;
&lt;br /&gt;
* [[DotSpatial]]&lt;br /&gt;
* [[GeoTools]]&lt;br /&gt;
* [[GDAL/OGR]]&lt;br /&gt;
* [[MapServer]]&lt;br /&gt;
* [[OpenLayers]]&lt;br /&gt;
* [[PgRouting]]&lt;br /&gt;
* [[SharpMap]]&lt;br /&gt;
* [[SUMO]]&lt;br /&gt;
&lt;br /&gt;
Az oldalt [http://people.inf.elte.hu/groberto Giachetta Roberto] és [http://mcserep.web.elte.hu Cserép Máté] szerkeszti.&lt;/div&gt;</summary>
		<author><name>Mate</name></author>
		
	</entry>
</feed>