Webprogramoza s szakko r

Hasonló dokumentumok
Google Maps használata OSM, mint alternatív térkép

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

Stateless Session Bean

Objektumorientált programozás

Az image objektum. Az image eseménykezel i. Képek el zetes betöltése. Feladat. Váltóképek készítése

Google Maps V2. OpenStreetMap, Mapsforge

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

"Egységes erdélyi felnőttképzés Kárpát-medencei hálózatban" JAVA ALAPÚ WEBPROGRAMOZÁS. M6 Modul: A DOM Modell

Webprogramozás szakkör

5-ös lottó játék. Felhasználói dokumentáció

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

(ArcCatalog, ArcMap)

Számológép. Bármilyen számítógépen működik, amin található böngésző és Java alkalmazás. Indító képernyő

Sakk-játék. Bármilyen számítógépen működik, amin található böngésző és Java alkalmazás. Indító képernyő

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010.

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Tili-Toli játék. Felhasználói dokumentáció

Böngésző kompatibilitás

Google Maps használata Alternatív térképek

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Eseményvezérelt alkalmazások

Web programozás. 3. előadás

Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával

ANDROID ALKALMAZÁSFEJLESZTÉS

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Web-fejlesztés NGM_IN002_1

Memória játék. Felhasználói dokumentáció

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Információs technológiák 2. Gy: CSS, JS alapok

Bevezetés Működési elv AJAX keretrendszerek AJAX

Pick Pack Pont kereső és boltválasztó alkalmazás

Web-fejlesztés NGM_IN002_1

Stíluslapok használata (CSS)

Sakk játék. Feladat: JavaScript segítségével olyan programot kell írni, ami egy sakktáblát szimulál. Kiválasztásra változtatják a helyüket.

mikroformátumok avagy a kisbetűs szemantikus web SZÁNTAI KÁROLY Magyarországi Web Konferencia 2008

Webshop készítése ASP.NET 3.5 ben I.

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

12.óra jquery Framework #1. Gyimesi Ákos

HTML sablon tervezése

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

A JavaScript főbb tulajdonságai

Kő, Papír, Olló. Felhasználói dokumentáció

és az instanceof operátor

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

Tartalom. A JavaScript haladó lehet ségei. Megjelenés. Viselkedés. Progresszív fejlesztés. A progresszív fejlesztés alapelvei

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Programozási technológia

Az Educatio weboldalain elhelyezhető hirdetések technikai paraméterei

Tájékoztató. Használható segédeszköz: -

Bevezetés a programozásba. 8. Előadás: Függvények 2.

ANDROID ALKALMAZÁSFEJLESZTÉS

GeoServer, OpenLayers és WFS. Dolleschall János

A HTML5 hirdetések előkészítéséhez szükséges műszaki előírások

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Osztályok. 4. gyakorlat

C#---Access adatbáziskezelési gyakorlat

HTML. Ismerkedés a JavaScripttel. A JavaScript lehet ségei. A JavaScript kód helye. Önálló JavaScript fájlok

1. Alapok. Programozás II

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

AJAX Framework építés. Nagy Attila Gábor Wildom Kft.

3. Osztályok II. Programozás II

Lenyíló menük készítése. Összetett programok készítése

Swing GUI készítése NetBeans IDE segítségével

Smalltalk 2. Készítette: Szabó Éva

Térkép szerver (MapServer)

E-Freight beállítási segédlet

Bevezetés a QGIS program használatába Összeálította dr. Siki Zoltán

Építésügyi Monitoring Rendszer (ÉMO) komplex működését biztosító településrendezési tervek digitalizálása EKOP /B kiemelt projekt megvalósítása

QGIS tanfolyam (ver.2.0)

Cikktípusok készítése a Xarayában

HTML és CSS. Horváth Árpád május 6. Óbudai Egyetem Alba Regia M szaki Kar (AMK) Székesfehérvár

Javacript alapismeretek

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Google Web Toolkit. Elek Márton. Drótposta kft.

Felhasználói kézikönyv - Android kliens

Tájékoztató. Használható segédeszköz: -

Navigációs GPS adatok kezelése QGIS programmal (1.4 verzió) Összeállította dr. Siki Zoltán

Internet TV Broadcaster kézikönyv

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

A WEB programozása - Bevezetés őszi félév Dr. Gál Tibor

Bevezetés a programozásba. 9. Előadás: Rekordok

VALUTAISMERTETŐ FUNKCIÓNÁLIS SPECIFIKÁCIÓ

Hasznos gyűjtemények:

Képnézeget. Gépigény: Bármilyen számítógépen m ködik, amin található böngész és Internet elérés.

BME MOGI Gépészeti informatika 7.

Adatbázis-kezelés ODBC driverrel

Magyar Nemzeti Bank - Elektronikus Rendszer Hitelesített Adatok Fogadásához ERA. Elektronikus aláírás - felhasználói dokumentáció

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Programozás II. 4. Dr. Iványi Péter

Ajax és Echo 2. Bokor Attila

Mobil Telefonon Keresztüli Felügyelet Felhasználói Kézikönyv

9.óra CodeIgniter Framework #1. Gyimesi Ákos

WEB PROGRAMOZÁS 3.ELŐADÁS. Űrlapok

OTP Egészségpénztár OTP Nyugdíjpénztár OTP SZÉP Kártya OTP Cafeteria Nyilatkoztató. Készítette: Konyicsák Zoltán

Átírás:

Webprogramoza s szakko r Előadás 10 (2013.05.21) Google Maps API API: Application Programming Interface (alkalmazásprogramozási felület) Egy programhoz tartozó kiajánlott függvények, változók és konstansok összességét jelenti, melyeket más programok fel tudnak használni, és ezzel saját szolgáltatásokat készíteni az adott program felhasználásával. Az API fogalmába még bele szokták érteni a hozzá tartozó dokumentációt is, amiből megérthető a használata. A Google Maps esetében a program maga a Google Maps, amit a hétköznapi életben mi is használhatunk, de fejlesztőként felmerülhet az igény térképet használó alkalmazás készítésére. Saját magunknak interaktív térképet készíteni szinte lehetetlen feladat lenne, de a Google Maps-hez közzétettek fejlesztők számára egy JavaScript nyelvű API-t. Ennek a függvényei, eljárásai lehetővé teszik, hogy a Google Maps szolgáltatásra épülve, saját igényeinknek megfelelően fejlesszünk programokat. Minden API más! Más objektumokat, függvényeket, változókat, konstansokat használ, így azt nem tudjuk megtanulni, hogyan lehet mindet használni. Azt viszont elsajátíthatjuk, hogyan álljunk neki egy API-ra épülő alkalmazás fejlesztéséhez. Az előző alkalommal a jquery-ről volt szó, amit önmagában is érdemes megtanulni, hiszen széleskörűen használható programozás technikai szempontból. A mostani példa egy hasznos API lesz, ahol azt az utat járjuk, hogy a dokumentációból megpróbáljuk megismerni a működést. Hogy ne a keresgéléssel teljen rengeteg idő, így minden feladatnál a Tippek segítenek, hol találunk leírást vagy példakódot az adott feladat megoldásához. Feladat 0 Ismerjük meg a Google Maps API elérhetőségét, dokumentációját https://developers.google.com/maps/documentation/javascript/ Fontosabb menüpontok: API Reference Code Samples Feladat 1 Készítsünk egy HTML oldalt egy Google Maps térképpel Code Samples / Basics / Simple map Szent Angéla Webprogramozási szakkör (Paksy Patrik) 1

HTML A HTML kód szinte végig ugyanaz marad, csak a külön készített JavaScript fájlt kell változtatni. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>google Maps API</title> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> <script src="feladat_01.js"></script> </head> <body> <div id="map-canvas" style="width:900px;height:500px;"></div> </body> </html> JavaScript // JavaScript Document var map; maptypeid: google.maps.maptypeid.roadmap ; google.maps.event.adddomlistener(window, 'load', initialize); Eddigi ismereteinkből mi került elő? HTML + CSS JavaScript o Változó (globális - map, lokális - mapoptions) o Függvény (initialize()) o Objektumok mapoptions new kulcsszóval való példányosítás (google.maps.map globális, a Google Maps API-ban lévő térkép objektum) o HTML DOM elérése (document.getelementbyid()) PÁROS MUNKA: Párokban oldjuk meg a következő feladatokat. A feladatok után zárójelben az adott feladat nehézsége olvasható (1 = könnyű, 2 = közepes, 3 = nehéz). A nehéz feladat kihagyható, ha nem sikerül gyorsan megoldani. Feladat 2 A térképre kattintva helyezzünk el jelölőket (Nehézség: 2) API Reference: Overlays / Marker Szent Angéla Webprogramozási szakkör (Paksy Patrik) 2

Code Samples: Events / Accessing arguments in UI events // JavaScript Document var map; maptypeid: google.maps.maptypeid.roadmap ; google.maps.event.addlistener(map, 'click', function(e) { placemarker(e.latlng); ); function placemarker(position) { map: map ); google.maps.event.adddomlistener(window, 'load', initialize); Feladat 3 A térképen található vezérlőelemeken (pl. zoom-olás, nézet váltás) változtassunk (Nehézség: 1): Tüntessük el az úgynevezett pancontrol -t (ez a bal felső sarokban lévő 4 nyíl) A jobb felső sarokban lévő nézetválasztó legördülő menüben jelenjen meg API Reference: Map / MapOptions / pancontrol és maptypecontroloptions Code Samples: Controls / Adding controls to the map és Controls / Control options maptypeid: google.maps.maptypeid.roadmap, maptypecontroloptions: { style: google.maps.maptypecontrolstyle.dropdown_menu, pancontrol: false ; Feladat 4/a A jelölőre való kattintáskor egy információs ablakban jelenítsünk meg tetszőleges szöveget (Nehézség: 2) API Reference: Overlays / InfoWindow Code Samples: Events / Using closures in event listeners Szent Angéla Webprogramozási szakkör (Paksy Patrik) 3

Feladat 4/b A jelölőre való kattintáskor egy információs ablakban jelenítsük meg az adott hely címét, ehhez használjuk a visszafelé való címkódolást (Reverse Geocoding) (Nehézség: 3) API Reference: Services / Geocoder Code Samples: Services / Reverse Geocoding // JavaScript Document var map; var geocoder; geocoder = new google.maps.geocoder(); maptypeid: google.maps.maptypeid.roadmap ; google.maps.event.addlistener(map, 'click', function(e) { placemarker(e.latlng); ); function placemarker(position) { map: map ); google.maps.event.addlistener(marker, 'click', function() { getaddress(marker); ); function getaddress(marker) { geocoder.geocode({'latlng': marker.getposition(), function(results, status) { if (status == google.maps.geocoderstatus.ok) { if (results[1]) { createinfowindow(marker, results[1].formatted_address); else { alert('no results found'); else { alert('geocoder failed due to: ' + status); ); function createinfowindow(marker, content) { var infowindow = new google.maps.infowindow(); infowindow.setcontent(content); infowindow.open(marker.get('map'), marker); google.maps.event.adddomlistener(window, 'load', initialize); Feladat 5 Cseréljük le a jelölőikont (új ikonkép a kezdőcsomagban van) (Nehézség: 1) Szent Angéla Webprogramozási szakkör (Paksy Patrik) 4

API Reference: Overlays / Marker és MarkerOptions Code Samples: Overlays / Simple icons function placemarker(position) { map: map, icon: 'images/icon.png' ); google.maps.event.addlistener(marker, 'click', function() { getaddress(marker); ); Feladat 6 Készítsünk animációt a jelölőkhöz (Nehézség: 1) API Reference: Overlays / Marker és MarkerOptions Code Samples: Overlays / Marker animations function placemarker(position) { map: map, animation: google.maps.animation.drop, icon: 'images/icon.png' ); google.maps.event.addlistener(marker, 'click', function() { getaddress(marker); togglebounce(marker); ); function togglebounce(marker) { if (marker.getanimation()!= null) { marker.setanimation(null); else { marker.setanimation(google.maps.animation.bounce); Feladat 7 Minden egyes újabb kattintás (jelölő letevés) a térképen rajzoljon ki egy útvonalat (Nehézség: 2) API Reference: Overlays / Polyline Code Samples: Overlays / Complex polylines Szent Angéla Webprogramozási szakkör (Paksy Patrik) 5

var poly; geocoder = new google.maps.geocoder(); maptypeid: google.maps.maptypeid.roadmap, maptypecontroloptions: { style: google.maps.maptypecontrolstyle.dropdown_menu, pancontrol: false ; var polyoptions = { strokecolor: '#000000', strokeopacity: 1.0, strokeweight: 3 poly = new google.maps.polyline(polyoptions); poly.setmap(map); google.maps.event.addlistener(map, 'click', addlatlng); function addlatlng(event) { var path = poly.getpath(); path.push(event.latlng); placemarker(event.latlng); Feladat 8 Jelenítsünk meg a forgalmi adatokat mutató réteget a térképen (Nehézség: 1) API Reference: Layers / Traffic layer Code Samples: Layers / Traffic layer Szent Angéla Webprogramozási szakkör (Paksy Patrik) 6

geocoder = new google.maps.geocoder(); maptypeid: google.maps.maptypeid.roadmap, maptypecontroloptions: { style: google.maps.maptypecontrolstyle.dropdown_menu, pancontrol: false ; var polyoptions = { strokecolor: '#000000', strokeopacity: 1.0, strokeweight: 3 poly = new google.maps.polyline(polyoptions); poly.setmap(map); var trafficlayer = new google.maps.trafficlayer(); trafficlayer.setmap(map); google.maps.event.addlistener(map, 'click', addlatlng); Feladat 9 Tegyük lehetővé, hogy a jobb egérgomb kattintásra is jelölőket helyezhessünk el, és azokra jelölőkre működjön a fogd és vidd művelet (drag & drop) (Nehézség: 1) API Reference: Map / Map google.maps.event.addlistener(map, 'click', addlatlng); google.maps.event.addlistener(map, 'rightclick', function(e) { placemarker(e.latlng, true); ); function addlatlng(event) { var path = poly.getpath(); path.push(event.latlng); placemarker(event.latlng, false); function placemarker(position, isdragable) { map: map, animation: google.maps.animation.drop, draggable: isdragable, icon: 'images/icon.png' ); Szent Angéla Webprogramozási szakkör (Paksy Patrik) 7

Feladat 10 Bővítsük a HTML kódot egy szövegmezővel és egy gombbal. Minden új jelölő lehelyezésekor írjuk ki a szövegmezőbe az új jelölő koordinátáit. A gombra kattintáskor állítsuk vissza a térkép középpontját az eredeti helyére. (Nehézség: 1) API Reference: Overlays / Markers; Map / Map; Base / LatLng HTML <body> <div id="map-canvas" style="width:900px;height:500px;"></div> <div> <input type="text" id="coords" size="75" /> <input type="button" id="setcenter" value="set map center" onclick="setmapcenter()" /> </div> </body> JavaScript var mapcenter = new google.maps.latlng(47.49, 19.04); center: mapcenter, maptypeid: google.maps.maptypeid.roadmap, maptypecontroloptions: { style: google.maps.maptypecontrolstyle.dropdown_menu, pancontrol: false ; function placemarker() { document.getelementbyid('coords').value = position.tostring(); function setmapcenter() { map.setcenter(mapcenter); Szent Angéla Webprogramozási szakkör (Paksy Patrik) 8

Teljes JavaScript kód var map; var geocoder; var poly; var mapcenter = new google.maps.latlng(47.49, 19.04); geocoder = new google.maps.geocoder(); center: mapcenter, maptypeid: google.maps.maptypeid.roadmap, maptypecontroloptions: { style: google.maps.maptypecontrolstyle.dropdown_menu, pancontrol: false ; var polyoptions = { strokecolor: '#000000', strokeopacity: 1.0, strokeweight: 3 poly = new google.maps.polyline(polyoptions); poly.setmap(map); var trafficlayer = new google.maps.trafficlayer(); trafficlayer.setmap(map); google.maps.event.addlistener(map, 'click', addlatlng); google.maps.event.addlistener(map, 'rightclick', function(e) { placemarker(e.latlng, true); ); function addlatlng(event) { var path = poly.getpath(); path.push(event.latlng); placemarker(event.latlng, false); function placemarker(position, isdragable) { map: map, animation: google.maps.animation.drop, draggable: isdragable, icon: 'images/icon.png' ); document.getelementbyid('coords').value = position.tostring(); google.maps.event.addlistener(marker, 'click', function() { getaddress(marker); togglebounce(marker); ); Szent Angéla Webprogramozási szakkör (Paksy Patrik) 9

function getaddress(marker) { geocoder.geocode({'latlng': marker.getposition(), function(results, status) { if (status == google.maps.geocoderstatus.ok) { if (results[1]) { createinfowindow(marker, results[1].formatted_address); else { alert('no results found'); else { alert('geocoder failed due to: ' + status); ); function createinfowindow(marker, content) { var infowindow = new google.maps.infowindow(); infowindow.setcontent(content); infowindow.open(marker.get('map'), marker); function togglebounce(marker) { if (marker.getanimation()!= null) { marker.setanimation(null); else { marker.setanimation(google.maps.animation.bounce); function setmapcenter() { map.setcenter(mapcenter); google.maps.event.adddomlistener(window, 'load', initialize); Szent Angéla Webprogramozási szakkör (Paksy Patrik) 10

Google Maps API Kivonat Térkép létrehozása maptypeid: google.maps.maptypeid.roadmap ; var Beállításokat egy objektumban adjuk meg (mapoptions), a térképet pedig a google.maps.map objektum példányosításával hozhatjuk létre. Eseménykezelés google.maps.event.addlistener(mire, MILYEN ESEMÉNY, MI TÖRTÉNJEN HA MEGTÖRTÉNIK); google.maps.event.addlistener(map, click, fuggvenyhivas()); fuggvenyhivas(event) { // amit itt adunk meg, az tortenik a terkepre kattintaskor // event parametert kap, ami tartalmazza pl. a kattintás helyét (koordináta) Réteg hozzáadása var trafficlayer = new google.maps.trafficlayer(); trafficlayer.setmap(map); Címkódolás geocoder.geocode({'latlng': marker.getposition(), function(results, status) { if (status == google.maps.geocoderstatus.ok) { if (results[1]) { alert(results[1].formatted_address); else { alert('no results found'); else { alert('geocoder failed due to: ' + status); ); Animáció paraméter érték példák google.maps.animation.bounce google.maps.animation.drop Szent Angéla Webprogramozási szakkör (Paksy Patrik) 11