Webstack
Bejelentkezés

Elfelejtetted a jelszavad?

Nem vagy még tag? Kattints ide és regisztrálj most!

Google Maps Geocoding API

Google Developers | tomizej  | 2013-05-26 10:38:55

A korábbi cikkeinkben megnéztük, hogyan lehet használni a Google Maps Javascript API-t és milyen hasznos lehetőségeket rejt. Azonban, hogy ezeket a funkciókat ki is tudjuk használni saját web alkalmazásainkban, nem árt tudni a lokációkhoz a részletes helyi információkat, GPS koordinátákat. Erre léteznek fizetős adatbázisok, használhatjuk a google térképet is, ha viszont viszonylag sok címünk van, kényelmetlenné válik az adatfeltöltés, ha manuálisan kell utánanézni a koordinátáknak. A google maps Geocoding API segítséget nyújt erre a problémára.

Mi értünk Geokódolás alatt (Geocoding)?

A geokódolás jelentése: Egy adott hely, földrajzi helyzetének azonosítása egy másik helyleírásból, például címből. A földrajzi helyzet lényegében a GPS koordináta (lattitude, longitude), amit a térképes alkalmazásainkhoz fel tudunk használni.

 

Szükség van ennek a folyamatnak a fordítottjára is ez pedig a fordított geokódolás (reverse geocoding).
A fordított geokódolás azt jelenti, hogy adott földrajzi helyzetből (koordinátákból) nyerjük vissza helyleírást, címet.

Hogyan segít ebben a Geocoding API?

A Google Geocoding API egy nagyon okos rendszer, aminek segítségével egy egyszerű HTTP kéréssel Földrajzi információkat nyerhetünk ki a megadott címről.

 

Pl.: "3300 Eger Leányka út 12." kérésre megkaphatjuk a számunkra szükséges szélességi és hosszúsági kört. Intelligens feldolgozójának hibatűrése igen nagy, tehát irányítószám és akár betűhibák esetén is képes visszaadni a kellő információt. Gyakorlatilag ugyanaz történik, mikor a google maps keresőjébe írunk címeket.

Geocoding kérés (request)

A következő URL-re kell küldeni a HTTP kérést:

http://maps.googleapis.com/maps/api/geocode/output?parameters

 

Kimenet:

A kimenet: output kapcsolóval meg tudjuk határozni, hogy a geocode választ milyen formában kapjuk vissza az API-tól. Jelenleg JSON vagy XML válasz lehetséges.

 

Az URLben látható output helyére behelytesítendő értékek lehetnek:

  • json
  • xml

Paraméterek:

A paraméterek fontos, hogy URL-encodeolva legyenek!

 

  • address: Cím
    vagy:
  • latlng: Koordináta (47.12121, 20.141251)
  • sensor: Beállítható, hogy a kérelem, olyan eszközről jött-e amin van GPS szenzor. (true | false)
  • components: szűrő paraméter (kulcs:érték)felsorolással elválasztójel: |
  • language: A válasz nyelve. (en|hu). Támogatott nyelvek itt: https://spreadsheets.google.com/pub?key=p9pdwsai2hDMsLkXsoM05KQ&gid=1

Ha a nyelv nincs megadva, akkor a google maps megpróbálja eldönteni ezt a szerver felé küldött adatokból, domain lokációjából. Ezért érdemes ezt a paramétert mindig helyesen megadni.

 

 

Példa egy Geocoding kérelemre XML formátumban:

http://maps.googleapis.com/maps/api/geocode/xml?address=3300+Eger+Liget+utca+3&sensor=true

 

 

Geocoding válasz (response)

A válasz olyan formában fog érkezni, ahogyan azt megadtuk az output kapcsolóban. A válasz mindkét adatszerkezetben ugyanazon információkkal bír, ezért a JSON válasszal fogunk foglalkozni.

 

Az alábbi kérés JSON válaszban a következőképp néz ki:

http://maps.googleapis.com/maps/api/geocode/xml?address=3300+Eger+Liget+utca+3&sensor=true

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "3",
               "short_name" : "3",
               "types" : [ "street_number" ]
            }
         ],
         "formatted_address" : "3300 Eger, Liget utca 3, Magyarország",
         "geometry" : {
            "location" : {
               "lat" : 47.90910490,
               "lng" : 20.3840320
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 47.91045388029150,
                  "lng" : 20.38538098029150
               },
               "southwest" : {
                  "lat" : 47.90775591970850,
                  "lng" : 20.38268301970849
               }
            }
         },
         "postcode_localities" : [],
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

Két szülő elem látható:

  • results: geokód
  • status: válasz státuszkódja.

A results elem gyerekeiben lesz található a geokód. Láthatjuk, hogy a koordinátákon kívül számos egyéb információ is található, mint pl a címm komponensekre bontva. Ami a mi esetünkben fontos az a koordináta, ami a: geometry.location.lat és a geometry.location.lng.

 

A JSON válasz feldolgozásáról az alkalmazásunknak kell gondoskodnia akár mobilról, kliensről vagy szerver oldalról van szó.

 

Fordított geokódolás, cím visszafejtés (reserve geocoding)

A fordított geokódolás elméletét már ismerjük, nézzük meg gyakorlatban hogyan alkalmazható ez az API-val.

 

Az alábbihoz hasonló kérelmet kell küldenünk:

http://maps.googleapis.com/maps/api/geocode/json?latlng=47.90910490,20.3840320&sensor=true&language=hu

 

A normál geocode kérelemtől ez csak annyiban tér el, hogy az address paraméter helyett, a latlng paramétert kell megadnunk. A válaszban gyakorlatilag ugyanazt kapjuk.

 

Konklúzió

A Google Maps Geocoding API egy egyszerűen implementálható, jól használható és pontos rendszer. Nagyon hasznos lehet, ha nem szeretnénk drága adatbázisokra költeni a helyi információkért.

 

Szerző: tomizej

címkék
Címkék: tutorial, javascript,

Hozzászólások

Hozzászóláshoz be kell jelentkezni!

Keress minket Facebookon
Ajánlások