szakma

Google Maps API használata – 1. Helló Google Térkép!

Az elmúlt hetekben két honlap elkészítésénél is előkerült a Google térkép beillesztés lehetősége. Egyedi megoldás kellett, nem volt elég a Drupal Gmap és Location modulok használata. Beleástam hát magam az API használatába, és kiderült, hogy rengeteg izgalmas dolgot tud.

Ezért úgy döntöttem írok egy bejegyzés sorozatot, amiben megmutatom az Google Maps Javascript API használatát. Tőlem szokatlan módon, rövid, egyszerű példa kódok használatával mutatom be a lehetőségeket. Vágjunk is bele:

A legegyszerűbb példa

Nézzük meg a létező legegyszerűbb HTML és JavaScript kódot, amivel beépíthetünk egy Google térképet az oldalunkba a Javascript API használatával. Ennél egyszerűbb példa nincs.

HTML

<body onload="initialize()">
  <div id="terkep"></div>
</body>

Egy terkep id-vel rendelkező div-et helyezünk ez al oldalon, ebbe kerül majd a térkép. Az oldal betöltődésekor pedig meghívjuk az initialize() függvényt.

CSS

<style type="text/css">
  #terkep {
    height: 400px;
    width: 600px;
  }
</style>

Semmi izgalmas nem történik itt, DIV#terkep-nek megadjuk a szélességét és a magasságát.

A Google Maps API importálása

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>

Külső Javascript kódként hivatkozunk az Google Térkép programozói felületére, rendes nevén az API-ra. A sensor=false paraméter jelentése, hogy egy olyan eszközön fogjuk használni a térkép szolgáltatást, aminek nincs hely meghatározó szenzora. Egy webes böngésző ilyen. Egy okostelefon esetében már lehetne igazra állítani a sensor paramétert.

A lényeg, az inicializáló függvény

<script type="text/javascript">
  var map;

  function initialize() {
    var latlng = new google.maps.LatLng(47.193445480491455, 19.514465109374996);
    var myOptions = {
      zoom: 7,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };   

    map = new google.maps.Map(document.getElementById("terkep"), myOptions);
  }
</script>

Elérkeztünk a lényeghez.

Először egy latlng nevű objektumot hozunk létre, a google.maps.LatLng nevű függvénnyel. Ez lesz majd a térkép közepe. Két paramétere van, a szélességi és hosszúsági koordináták.

A myOptions objektummal fogjuk felparaméterezni a készülő térképet. A zoom értéke azt hiszem egyértelmű, 1 esetén vagyunk a legtávolabb a földtől, ahogy növekszik, úgy „közeledünk” a földhöz. A center az imént létrehozott középpontot határozza meg. A mapTypeId pedig a térkép típusát határozza meg, jelen esetben a normál térkép nézet, ahol csak utakat látunk. Magyarul, nincsenek szatellit képek.

Végül, az utolsó sorban, felhasználva a fentieket létrehozzuk a térképet a google.maps.Map nevű függvénnyel/objektummal, kinek, hogy tetszik. Első paramétere az a DOM objektum, ahova a térkép kerülni fog, második paramétere pedig a fent létrehozott myOptions beállítások. A DOM objektumot a szokásos document.getElementById függvénnyel szerezhetjük meg.

Demo

Az egész működés közben itt nézhető meg:
http://edgarpe.hu/sites/default/files/gmaps-api-1-hello-terkep.html

Megjegyzések

A Googme Térkép szolgáltatását nem csak JavaScript-el használhatjuk, hanem például Flashben is.

A teljes Google Maps API dokumentációja angolul:
http://code.google.com/apis/maps/index.html

A példa kódok a fenti dokumentáció alapján készültek, az ott található kódok átalakított változatai.

Egy-két példa már be van tárazva, de ha leírjátok mit nézzünk, akkor lesznek olyan példák is. Persze, csak ha meg tudom oldani :)

Munka: Profi webdesignert és sitebuildert keresek

Ügyfelek megbízására készülő weboldalak elkészítéséhez keresek profi webdesignert és Drupal sitebuildert, lehetőleg egy személyben. (Sitebuild = PSD-ből HTML + CSS készítés). Az sem baj, ha még soha nem láttál Drupalt, de ha együtt dolgozunk, akkor fogsz :)

A munkafolyamat a következőképpen néz ki:

  1. Az ügyféllel történt előzetes megbeszélések után elkészítesz egy látványtervet és esetenként logót, lehetőleg Photoshop-ban.
  2. Közben én elkészítem az oldal funkcionalitását Drupal-ban.
  3. A funkcionálisan működő oldalra ráhúzod az ügyfél által jóváhagyott látványtervet. Itt egy működő sitehoz kapsz hozzáférést, kész HTML struktúrával és sablon CSS-ekkel (Drupal Zen smink vagy Fusion, Tao, Genesis, stb...). A munka 95% megoldható a CSS átírásával. Ha a HTML struktúrán kell változtatni, szólsz és én megoldom.

Ha magadra ismertél és a fenti munkafolyamat szerint tudsz dolgozni, kérlek jelentkezz a hello (csiga) edgarpe (pont) hu címen vagy a kapcsolat űrlapon.

Kérlek írj minél több referenciát és alaposan írd le azt is, hogy az egyes projektekben mi volt a feladatod, hogyan készült el a site design része. Azt is írd meg, hogy hozzávetőlegesen milyen árakkal dolgozol, a fenti módszerrel elkészülő webdesign esetén. Számlaképességet is jelezd légyszives.

A munka távolról is végezhető, Skypeon keresztül tartjuk majd a kapcsolatot.

Végül, ha nem Te vagy az én emberem de ismersz olyat akit érdekelhet kérlek juttasd el hozzá ezt a bejegyzést a lenti közösségi megosztók segítségével, vagy a linket közvetlenül:

http://edgarpe.hu/munka-profi-webdesigner-sitebuilder

Mi történt a Facebook Like-al?

Zoli barátom az F1világ.hu-nál szombat délelőtt 10:30-kor írt egy email-t, hogy nem megy az oldalon a Facebook Like gomb, nézzek rá mi lehet a gond. Ha rákattintok felvillan a számláló, de rögtön vissza is áll alapállapotba.

Hamar kiderült, hogy nem minden cikket érint, de elég sokat, az F1világnál legalább a cikkek felénél ez van.

Hamar kiderült az is, hogy nem csak minket érint a dolog. Az Index-en sem megy a Like sok helyen, az Origo-n sem, és a SocialTimes.hu oldalon sem. És senki nem szól egy árva szót sem a neten.

Néhány példa, ahol nem megy a Like gomb

Index
Origo
HVG
SocialTimes.hu
F1világ

Aki tud szavazni a „Tetszik” gombbal, írjon hozzászólást, hogy nála megy. Mert én még nem találkoztam senkivel (a szűk baráti körömben) aki tudott volna lájkolni.

Az első észlelés óra eltelt több 48 óra és még mindig nem mennek a gombok. Az internet világában 2 óra leállás már világvége :)

Mi történt?

Két ötletem van, de mindkettő elég X-akta szerű.

A) A napokban vezette be az Index és az Origo az oldalain a Like gombot és ez olyan váratlan terhelést adott egy Magyarországért felelős Facebook szervernek, ami pár nap alatt lebénította a működést (beteltek a merevlemezek)

B) Valami titkos összeesküvés van a háttérben, mert az esemény nagyjából egybeesik azzal, hogy tömegesen lehet regisztrálni a keresőóriás új, közösségi szolgáltatására, a Google+ oldalra.

Szerintetek mi áll a háttérben?

A közösségi média most először tényleg számít a keresőoptimalizálásban

Azt már eddig is tudtuk, hogy a Facebook és Twitter aktivitás közvetett módon, és valószínűleg nagyon kis mértékben, képes befolyásolni a Google találati lista sorrendjét. Miközben a fenti közösségi oldalak szép nagyra megnőttek, a Google folyamatosan próbálta létrehozni a saját közösségi hálózatát, általában kevesebb, mint több sikerrel. Legújabb próbálkozásukról, a Google +1 gombról áprilisban már kifejtettem a véleményemet. Persze lehetett sejteni, hogy komolyan gondolják a Google-nél a +1 gombot, hiszen elég sok saját termékbe azonnal integrálták is, többek között a Youtube-ra is. Először csak néhány kiválasztott partner helyezhete el saját oldalán a gombot, de most már bárki megteheti ezt.

Mindenki látja

Miért a súlyos cím, mi változott most? A SearchEngineLand publikálta a hírt, hogy néhány keresésnél a találati oldalon megjelenik az adott oldalhoz tartozó összes +1 szavazat. Eddig csak bejelentkezve lehetett látni a +1-eket és csak a barátaink szavazatait mutatta a Google. Azt hiszem nem kell nagyon ecsetelni, hogy miért nagyon fontos változás ez a közösségi média és a keresőoptimalizálás kapcsolatában. Népszerűségünk a közösségi oldalakon +1 szavazatokként ölt testet. Ha pedig a szavazatok összege megjelenik a találati oldalon, akkor ez bizony jelentősen átrendezheti a kattintási arányokat az első 10 találat között.

Így jelenik meg

Magyar találati oldalon egyelőre nem sikerült elcsípni az új funkciót, így a SearchEngineLand képeit használom én is illusztrációnak. Kijelentkezett állapotban így nézhet ki a találati lista egy eleme (az utolsó sort érdemes figyelni): Bejelentkezett állapotban pedig azt is láthatjuk, hogy az ismerősök közül kik szavaztak az adott linkre, és persze ilyenkor aktív a +1 gomb is amivel szavazni lehet: Ha valaki meglátja a google.hu oldalain az új funkciót mindenképp jelezze egy hozzászólásban. Elismerem, hogy a mostani megjelenítés nem okot hatalmas változást az eddig megszokott külalakban, de ez egyrészt változhat még, másrészt biztos vagyok benne, hogy ez az egyszerű kis szürke sor is befolyásolja a kattintási arányokat.

+1 gombot mindenhova

Eddig nem sok értelmét láttam elhelyezni a +1 gombot, de most úgy gondolom, egy próbát mindenképpen megér. A +1 gomb hivatalos oldalán bárki gyárthat magának beépítő kódot. 4 különböző formátum érhető el, többek között a Facebook like-hoz illeszkedő 20 pixel magas szavazó gomb is. Ezek után nincs más hátra, mint hogy én is elhelyezzem itt a gombot, és várjam a szavazatokat :)

Schema.org

A három nagy kereső (Bing, Google és Yahoo) közös szabványt indított schema.org néven.

A szabvány célja, hogy a weboldalakban található tartalmat meta adatokkal láthassák el a weboldal készítői. Sokszor ugyanis nem egyértelmű, hogy egy szöveg pontosan mire utal.

Példa

A schema.org-on az „avatar” kifejezést hozzák fel példának. Ebből az egy szóból nem lehet tudni, hogy most a filmet akarja jelölni, vagy a felhasználói hozzászólásoknál használt kis képeket, amiket szintén avatar-nak nevezünk. A cél, hogy tudassuk a keresőkkel, mi most a filmről írunk.

A HTML kód:

<div>
<h1>Avatar</h1>
<span>Rendező: James Cameron (született: 1954. augusztus 16.)</span>
<span>Sci-Fi</span>
<a href="../movies/avatar-theatrical-trailer.html">Előzetes</a>
</div>

Kiadtak egy hosszú listát a támogatott tartalom típusokról, ezt fogjuk felhasználni most. A legáltalánosabb a Thing típus, minden más ebből származik. A példát folytatva az Avatar film a Thing » CreativeWork » Movie kategóriába tartozik. Ezt így jelölhetjük a HTML kódban:

<div itemscope itemtype="http://schema.org/Movie">
  <h1>Avatar</h1>
  <span>Rendező: James Cameron (született: 1954. augusztus 16.)</span>
  <a href="../movies/avatar-theatrical-trailer.html">Előzetes</a>
</div>

Az itemscopre az érintett html darabot jelöli ki, az itemtype pedig meghatározza a típust.

A Movie, azaz film típus jó néhány paraméterrel rendelkezik, pl. rendező, szereplők, hossz, stb... A paramétereket az itemprop attributummal lehet megadni, a rendezőt pl. így:

<span>Rendező: <span itemprop="director">James Cameron</span> (született: 1954. augusztus 16.)</span>

Vigyázat, bonyolódik!

Egy paraméter nem csak szöveges mező lehet, hanem beágyazott objektum is. A rendezőt megadhatjuk mint személy objektumot, azaz Person típusként, így:

<div itemprop="director" itemscope itemtype="http://schema.org/Person">
  Rendező: <span itemprop="name">James Cameron</span> (született: <span itemprop="birthDate">1954. augusztus 16.)</span>
</div>

A szabvány sok egyéb dolgot is tartalmaz, mint pl. a meta mezők, amelyeket csak a keresők látnak, a felhasználók nem, vagy a média anyagok, úgymint kép, videó vagy hang anyagok.

A fenti példából már látszik a dolog működése, a további részletekért és a pontos specifikációért irány a schema.org.

Open Grapgh

A schema.org erősen emlékeztet a Facebook által használt Open Grapgh szabványra. Egy jelentős különbség van: míg előbbi a weboldal egy részéhez ad meta adatokat, addig az OpenGrapgh teljes weboldalakat ír le. Érthető, hiszen a Facebook (még) csak url-ek szintjén foglalkozik a webbel, addig a keresőket az oldalon belüli tartalom érdekli.

Egyre érthetőbb web

Egy újabb példa arra, hogy a keresők nem próbálnak meg mindent saját kútfőből megoldani, hanem egyre erősebben támaszkodnak a weboldal tulajdonosok segítségére. Amíg a keresők ettől jobbak lesznek, addig én szívesen segítek.

Oldalak

Feliratkozás RSS - szakma csatornájára