Google Maps V2. OpenStreetMap, Mapsforge



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

ANDROID ALKALMAZÁSFEJLESZTÉS

ANDROID ALKALMAZÁSFEJLESZTÉS

ANDROID ALKALMAZÁSFEJLESZTÉS

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

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

Mobil Informatikai Rendszerek

Alap számológép alkalmazás

Mobil Informatikai Rendszerek

Broadcast Service Widget

Mobil Informatikai Rendszerek

Android Wear programozás. Nyitrai István

Android alapok. Android játékfejlesztés

ANDROID ALKALMAZÁSFEJLESZTÉS

libgdx alapok, első alkalmazás

- láda- vagy játékleírásból láda/játéklistába visszatérve nem a lista elejére ugrik, hanem ugyanoda, ahol voltunk a listában

Felhasználói felület megismerése, különböző felbontások támogatása

Mobil Informatikai Rendszerek

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

Programozási technológia

UI megismerése - 2. rész Adattárolás

ANDROID ALKALMAZÁSFEJLESZTÉS

UI megismerése, különböző felbontások támogatása, használati jogok kérése

Valósidejű térbeli megjelenítés, másként Fehér Krisztián

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

libgdx alapú program létrehozása, kép importálása, mozgatása libgdx alapok Android játékfejlesztés Soós András

Eseményvezérelt alkalmazások

ANDROID ALKALMAZÁSFEJLESZTÉS

Helymeghatározás. Hol vagyok a világban?

Szálkezelés Rajzolás képernyőre Bevitel kezelése - Érintő képernyő - Billentyűzet

Adatbázis-kezelés ODBC driverrel

Szálkezelés Rajzolás képernyőre Bevitel kezelése - Érintő képernyő - Billentyűzet

I. 288.: Utcai WiFi térkép

Felhasználói útmutató CVR mobil kliens, ios rendszerhez.

Java programozási nyelv 6. rész Java a gyakorlatban

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Zoiper VoIP mobil alkalmazás szoftver beállítása Android rendszerre

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

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

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

Web-fejlesztés NGM_IN002_1

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

Első lépések. File/New. A mentés helyét érdemes módosítani! Pl. Dokumentumok. Fájlnév: pl. Proba

Adattárolás Szenzorok

Android 5.0.

BusEye online személyre szabott utastájékoztató mobil alkalmazás fejlesztése

Mio Technology Limited C510, C710. Gyors használati utasítás a Mio Map v3 programhoz. Magyar

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

Thermo1 Graph. Felhasználói segédlet

C#, OOP. Osztályok tervezése C#-ban

ANDROID ALKALMAZÁSFEJLESZTÉS

Android Pie újdonságai

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

Java programozási nyelv 5. rész Osztályok III.

JAVA SE/ME tanfolyam tematika

Az alábbiakban szeretnénk segítséget nyújtani Önnek a CIB Internet Bankból történő nyomtatáshoz szükséges böngésző beállítások végrehajtásában.

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.

Fejlesztői szemmel at K

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Webprogramoza s szakko r

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)

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Tanúsítványkérelem készítése, tanúsítvány telepítése Microsoft Internet Information szerveren

Elektronikus pályázati űrlap (eform) létrehozása - Útmutató

Mobil Partner telepítési és használati útmutató

1. kép: Raszterek betöltése

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows 7 operációs rendszer és Internet Explorer 9 verziójú böngésző esetén

Újdonságok a Google műhelyéből. Péter Ekler

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

3. Egyszerű komponensek

TaxiLike használati bemutató Taxitársaságok és Taxisofőrök részére

Nyers légifotók feldolgozási lehetőségei ESRI platformon. CSUNDERLIK LÁSZLÓ GDi Esri

FELÜLVIZSGÁLATI JEGYZŐKÖNYV (E-DS10F1_TANF-SW) MELLÉKLETE

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

4. Gyakorlat: Csoportházirend beállítások

iphone programozás alapjai IV. Gyakorlat

Mobil Informatikai Rendszerek

CabMap hálózat-dokumentáló rendszer

A készülék fő egységei X1 X1 (kizárólag vezeték nélküli kamera esetében X1 X1 X1 X1 X1

WQMobile 1.0 kezelési útmutató

.Net adatstruktúrák. Készítette: Major Péter

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows7 operációs rendszer és Internet Explorer 8-es verziójú böngésző esetén

Telepítési útmutató a Solid Edge ST7-es verziójához Solid Edge

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

Felhasználói kézikönyv az Interreg Danube Programme weboldalának látogatói számára

Nokia N9 - MeeGo Harmattan bemutatkozik

GeoServer, OpenLayers és WFS. Dolleschall János

PDF. Tartalomjegyzék 1/21

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

RIA Rich Internet Application

Automatizált Marketing Webshopoknak

NHDR-3104AHD-II NHDR-3108AHD-II NHDR-3116AHD-II NHDR-5004AHD-II NHDR-5008AHD-II NHDR-5016AHD-II NHDR-5204AHD NHDR-5208AHD. Telepítői Segédlet

Tájékoztató a kollégiumi internet beállításához

Collections. Összetett adatstruktúrák

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

WordWall FELHASZNÁLÓI KÉZIKÖNYV

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

UMN Mapserver és a Grass használata a Geológiában. Soós Dániel, Phd. Hallgató Miskolci Egyetem Geodéziai és Bányaméréstani Intézeti Tanszék

Átírás:

OE-NIK 2013. március 18. Sicz-Mesziár János sicz-mesziar.janos@ nik.uni-obuda.hu Google Maps V1 Google Maps V2 OpenStreetMap, Mapsforge

Google Maps V1 deprecated 2

Google Maps V1 Jól használható külső library. Használatához regisztráció és az ÁSZF elfogadása kell! Google Maps API kulcs beszerzése: Google API telepítés Android SDK Manager-ben MD5 lenyomat készítés: C:\Program Files\Java\<JDK_version>\bin>keytool.exe -list -alias androiddebugkey -keystore "c:\users\<username>\.android\debug.keystore" -storepass android -keypass android -v API kulcsszerzés, MD5 lenyomat alapján: http://code.google.com/intl/hu-hu/android/maps-api-signup.html AndroidManifest-ben library használat hozzáadása: Application fül > Application Nodes > Add > Uses Library Name: com.google.android.maps AndroidManifest-ben internet használat kérés: Permissions fül > Add > Uses Permission Name: android.permission.internet 3

Google Maps V1 a gyakorlatban MapView elhelyezése a layout-on: <com.google.android.maps.mapview android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:id="@+id/mymap" android:apikey="<-- API KEY -->" /> Google API target beállítása: Projects menü > Properties > Android > Project Build Target > Google APIs kiválasztása Osztályunk egy MapActivity leszármazott: class MyMapActivity extends MapActivity{ protected boolean isroutedisplayed() {} MapView mymap = (MapView)findViewById(R.id.myMap); } Emulátort is át kell állítani!!! 4

Zoom Controls, Map Controller Beépített +/- zoom engedélyezése: mymap.setbuiltinzoomcontrols(true); mymap.getzoombuttonscontroller().setautodismissed (false); // Automatikus elrejtés tiltása Egyéni zoom gombokhoz saját ZoomControl kell. Térkép irányítása MapController-rel: MapController mc = mymap.getcontroller(); mc.setcenter( new GeoPoint(47533571, 19033851)); mc.setzoom(17); mc.scrollby(120, 120); // Pixelben értendő mc.animateto(new GeoPoint(...)); 5

Pontok és pozíciók elhelyezése Kell egy ItemezedOverlay<OverlayItem> leszármazott: Hozzá egy konstruktor, amiben az alap Marker-t megadjuk Egy listába felgyűjtjük a réteghez tartozó pontokat Előírt/ajánlott metódusok megvalósítása: OverlayItem createitem(int i) int size() + : void addoverlay(overlayitem overlay) Overlay hozzáadása a térképhez MyItemizedOverlay pointsoverlay = // i.-dik elem // listánk elemszáma // hozzáadás new MyItemizedOverlay(pointDefaultMarker); //Drawable List<Overlay> mapoverlays = mymap.getoverlays(); mapoverlays.add(pointsoverlay); Overlay feltöltése adatokkal OverlayItem item = new OverlayItem(new GeoPoint( (int)(location.getlatitude() * 1E6), (int)(location.getlongitude()* 1E6) ), "Hello point", "Deatils "); pointsoverlay.addoverlay(item); mymap.invalidate(); 6

Rajzolás térképre Adott Overlay draw() metódusának felüldefiniálása: public void draw(canvas canvas, MapView mapview, boolean shadow) { Projection projection = mapview.getprojection(); if(overlays.size() > 0 && projection!= null){ Point startpoint = new Point(); projection.topixels(overlays.get(0).getpoint(), startpoint); line.reset(); // Az első pont hozzáadása a Path-hoz = Kezdőpont line.moveto(startpoint.x, startpoint.y); // Végig megyünk a pontokon és hozzáadjuk a Path-hoz for(overlayitem i : overlays){ Point point = new Point(); projection.topixels( i.getpoint(), point ); line.lineto(point.x, point.y); } // És akkor a lényeg, a rajzolás canvas.drawpath(line, p); } super.draw(canvas, mapview, shadow); } 7

Oda-vissza geo kódoló Lényege, hogy koordinátából címet, illetve címből koordinátát fejtsünk vissza. Geo kódoló: Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault()); List<Address> addresses = geocoder.getfromlocation( p.getlatitudee6()/1e6, p.getlongitudee6()/1e6, 1); // addresses.get(0).getaddressline(i); Visszakódoló: List<Address> addresses = geocoder.getfromlocationname( Budapest,Bécsi út,5); p = new GeoPoint( (int)(addresses.get(0).getlatitude() * 1E6), (int) (addresses.get(0).getlongitude() * 1E6) ); 8

Google Maps V2 9

Újdonságok Minimum Android 2.2 kell Google Play SDK része lett Vektorgrafikus megjelenítés Fragment támogatás 3D térkép, OpenGL 2.0 Kisebb adatforgalom Jobb cache használat Több interakció: forgatható kamera-nézet In-door támogatás TileOverlay támogatás [x,y,z bitmap] 10

Google Maps V2 API kulcs beszerzése 1. Certificate SHA-1 lenyomat keytool -list -v -keystore "C:\Users\[user_name]\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android 2. API projekt regisztráció - Google API Console https://code.google.com/apis/console/ Create project (ha szükséges) Services > Google Maps Android V2-t engedélyezzük 3. API kulcs beszerzése API Access Create new Android key SHA-1 lenyomat + package név bemásolása 11

Google Maps V2 a gyakorlatban AndroidManifest.xml Az <Appliaction> végére: <meta-data android:name="com.google.android.maps.v2.api_key" android:value="your_api_key"/> OpenGL 2.0 megkötés <uses-feature android:glesversion="0x00020000" android:required="true"/> Speciális Jogosultság hozzáadása <permission android:name="[package].permission.maps_receive" android:protectionlevel="signature"/> <uses-permission android:name="[package].permission.maps_receive /> 12

Google Maps V2 a gyakorlatban (2) AndroidManifest.xml <uses-permission android:name="android.permission.internet"/> <uses-permission android:name="android.permission.access_network_ STATE"/> <uses-permission android:name="android.permission.write_external_ STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.pe rmission.read_gservices"/> Google Play Service library hozzáadása File > Import > Existing Android Code into Workspace <android_sdk>/extras/google/google_play_services/libproject /google-play-services_lib Project > Properties > Android > Library, Add 13

Google Maps V2 a gyakorlatban (3) activity_main.xml <?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name= "com.google.android.gms.maps.supportmapfragment"/> MainActivity.java public class MainActivity extends FragmentActivity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } } GooglePlayServicesUtil. isgoogleplayservicesavailable(getcontext()); 14

Vezérlés térkép konfiguráció XML leíróban Map types: <fragment NORMAL, SATELLITE, HYBRID, TERRAIN, NONE xmlns:map="http://schemas.android.com/apk/res-auto" map:cameratargetlat="-33.796923" map:cameratargetlng="150.922433 map:camerabearing="112.5" map:cameratilt="30" map:camerazoom="13" map:maptype="normal" map:uicompass="false" map:uirotategestures="true" map:uiscrollgestures="false" map:uitiltgestures="true" map:uizoomcontrols="false" map:uizoomgestures="true" /> tilt = dőlés mértéke bearing = elfordulás Programkódból MapFragment.newInstance( new GoogleMapOptions().mapType(MAP_TYPE_NORMAL).compassEnabled(true).rotateGesturesEnabled(true).tiltGesturesEnabled(true).scrollGesturesEnabled(true).zoomControlsEnabled(true).zoomGesturesEnabled(true) ); 15

Vezérlés kamera mozgatás Pozíció megváltoztatása: center, zoom map.movecamera(cameraupdatefactory.newlatlngzoom( new LatLng(47.533599, 19.033899), 14 )); map.animatecamera(cameraupdatefactory.zoomin()); map.animatecamera( CameraUpdateFactory.zoomTo(10), 2000, null); Kamera tetszőleges pozícióba CameraPosition pos = new CameraPosition.Builder().target(new LatLng(47.533599, 19.033899)).zoom(17).bearing(90).tilt(30).build(); map.animatecamera( CameraUpdateFactory.newCameraPosition(pos)); 16

Markers, Pins Marker hozzáadása Marker marker = map.addmarker(new MarkerOptions().position(new LatLng( location.getlatitude(), location.getlongitude())).title("cím felirat") );.snippet("részletező szöveg").icon(bitmapdescriptorfactory.fromresource(icon)).draggable(false) Marker eltávolítása marker.remove(); 17

Rajzolás térképre Alakzatok: Polyline, Polygon, Circle Polyline Polyline line = map.addpolyline(new PolylineOptions().add(new LatLng(37.35, -122.0)).add(new LatLng(37.45, -122.0)).add(new LatLng(37.45, -122.2)).width(25).color(Color.BLUE) ); Polyline bővítése utólag List<LatLng> points = line.getpoints(); points.add(position); line.setpoints(points); 18

OpenStreetMap mint alternatíva 19

OpenStreetMap (OSM) Mi az OSM? Közösségi térkép Az OpenStreetMap egy szabadon szerkeszthető térkép az egész világról. Olyan emberek készítik, mint Te. Az OpenStreetMap lehetővé teszi neked, hogy szabadon megtekintsd, szerkeszd és használd a földrajzi adatokat, bárhol is vagy a Földön. - www.openstreetmap.org Miért lehet jó Android tekintetében? Egy ingyenes alternatíva a Google Maps kiváltására. Online és offline térképadatbázis, vektorgrafikus is. Android támogatás - hasonló MapView osztály. Nem kell API kulcs. Nem lesz mindig teljesen ingyenes a Google Maps??? 20

MapsForge Projektek: MapsForge, Osmand, Osmdroid, MapsForge Projekt 2008-ban indult a Freie Universität Berlin számítógép-tudomány intézetében. Jelenleg ~10 diák és tudományos személyzet vesz részt benne. MapsForge által nyújtott eszközök: Térkép renderelés (offline) Útvonal és navigáció POI index és keresés Map rétegek, Térkép tekintetében: Online, csempék (tile) letöltése Offline, renderelés GTUG November 2010 21

MapsForge - Online Library letöltése mapsforge-map-0.2.x.jar Hozzáadása Project properties / Java Build Path / Libraries / Add JARs Java kód MapView mapview = new MapView(this); mapview.setclickable(true); mapview.setbuiltinzoomcontrols(true); // mapview.setfpscounter(true); mapview.setmapviewmode(mapviewmode.mapnik_tile_download); MapController mc = mapview.getcontroller(); mc.setcenter(new GeoPoint(47.533571, 19.033851)); mc.setzoom(17); setcontentview(mapview); INTERNET WRITE_EXTERNAL_STORAGE 22

MapsForge - Offline Térkép beszerzése (*.osm.pbf): http://download.geofabrik.de/osm/ Térkép fájl létrehozása (*.map ): Segítségül egy előre elkészített script: MapsForgeGenerate-v5 http://code.google.com/p/mapsforge/wiki/mapfilewriter Osmosis Térkép fájl átmásolása SD-kártyára Java kód módosítása MapView mapview = new MapView(this); mapview.setclickable(true); mapview.setbuiltinzoomcontrols(true); mapview.setmapviewmode(mapviewmode.canvas_renderer); mapview.setmapfile("/sdcard/budapest.map"); MapController mc = mapview.getcontroller(); mc.setcenter(new GeoPoint(47.533571, 19.033851)); mc.setzoom(17); INTERNET WRITE_EXTERNAL_STORAGE 23

24