36
Google Maps Android API v1 e v2 Globalcode e StillRocker

Google Maps Android API V1 e V2

Embed Size (px)

DESCRIPTION

Saiba quais as diferenças entre as duas versões e o que a última API tem de novidades. Palestra apresentada no Android Meetup, na sede do Google SP.

Citation preview

Page 1: Google Maps Android API V1 e V2

Google Maps Android API v1 e v2Globalcode e StillRocker

Page 2: Google Maps Android API V1 e V2

• Ricardo da Silva Ogliari• Instrutor Globalcode• Sócio StillRocker

EU!

Page 3: Google Maps Android API V1 e V2

• Artigos em Revistas• +- 180 publicações

EU!

Page 4: Google Maps Android API V1 e V2

Google Maps Android

Page 5: Google Maps Android API V1 e V2

Google Maps Android

Page 6: Google Maps Android API V1 e V2

• É muito completa, mas tem tudo?• Não

Google Maps Android

Page 7: Google Maps Android API V1 e V2

• Busca a imagem em pedaços - Tiles...

Como funciona?

Page 8: Google Maps Android API V1 e V2

• Para buscar estes pedaços precisamos de uma chave;

• Primeira grande mudança em relação as versões da Maps API;

Como funciona?

Page 9: Google Maps Android API V1 e V2

• Pegar o MD5 da chave de assinatura;• keytool -list -alias alias_name -keystore

my-release-key.keystore;• Acessar o link

https://developers.google.com/maps/documentation/android/v1/maps-api-signup

• Aceitar os termos;• Colocar o MD5 no campo específico e

gerar a chave.

Obtendo a chave na V1

Page 10: Google Maps Android API V1 e V2

• Pegar o SHA1 da chave de assinatura;• keytool -list -alias alias_name -keystore

my-release-key.keystore;• Acessar o Google APIs Console• Especificar o uso do serviço Google Maps

Android API• Gerar uma Android Key passando o SHA1

mais pacote:• 3A:...:81:com.example.studingmapsapi

Obtendo a chave na versão 2

Page 11: Google Maps Android API V1 e V2

Obtendo a chave na versão 2

Page 12: Google Maps Android API V1 e V2

Obtendo a chave na versão 2

Page 13: Google Maps Android API V1 e V2

• Utilização da MapView

Uso da chave na V1

<?xml version="1.0" encoding="utf-8"?><com.google.android.maps.MapView xmlns:android="namespace" android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="Your Maps API Key goes here"/>

Page 14: Google Maps Android API V1 e V2

• Criação de uma MapActivity que utiliza a MapView

• Sobrescrever isRouteDisplayed

Uso da chave na V1

public class HelloGoogleMaps extends MapActivity{ ...

@Override protected boolean isRouteDisplayed() { return false; }}

Page 15: Google Maps Android API V1 e V2

Mudanças no AndroidManifest - V1

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.app.android.maps" android:versionCode="2" android:versionName="1.1" >

<uses-permission android:name="android.permission.INTERNET"/> <application android:icon="@drawable/icon"> <uses-library android:name="com.google.android.maps"/> <activities> </application>

</manifest>

Page 16: Google Maps Android API V1 e V2

• Meta-data diretamente no AndroidManifest.xml

Uso da chave na V2

<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="api_key"/>

Page 17: Google Maps Android API V1 e V2

AndroidManifest.xml - V2<?xml version="1.0" encoding="utf-8"?><manifest ... package="seupacote" > <permission android:name="seupacote.permission.MAPS_RECEIVE" android:protectionLevel="signature" />

<uses-permission android:name="seupacote.permission.MAPS_RECEIVE" /> <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.permission.READ_GSERVICES" />

<uses-feature android:glEsVersion="0x00020000" android:required="true" />

Page 18: Google Maps Android API V1 e V2

• Utilização da MapFragment• Fragment: fragment, parte, divisão

Mostrar o mapa V2

Page 19: Google Maps Android API V1 e V2

• Utilização da MapFragment

Mostrar o mapa V2

Page 20: Google Maps Android API V1 e V2

• Cria o layout:

Mostrar o mapa V2

<?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.MapFragment"/>

Page 21: Google Maps Android API V1 e V2

• Um mapa sem POI´s não tem apelo• Existem inúmeros exemplos

– Museus– Restaurantes– Estádios– Hospitais– Alagamentos– Teatros

POI (Point Of Interest)

Page 22: Google Maps Android API V1 e V2

POI (Point Of Interest) - V1public class UseItemOv extends ItemizedOverlay { ArrayList<OverlayItem> pois = new ArrayList<OverlayItem>();

public HelloItemizedOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); } protected OverlayItem createItem(int i) { return pois.get(i); } public void addOverlay(OverlayItem overlay) { pois.add(overlay); populate(); } public int size() { return pois.size(); } protected boolean onTap(int index) {}}

Page 23: Google Maps Android API V1 e V2

POI (Point Of Interest) - V1

Drawable drawable = this.getResources().getDrawable(R.drawable.flag);

UseItemOv itemizedoverlay = new UseItemOv(drawable, this);

GeoPoint point = new GeoPoint(-27596667, -48549167));OverlayItem overlayitem = new OverlayItem(point,

"Florianópolis", "A capital de Santa Catarina");

itemizedoverlay.addOverlay(overlayitem);

List<Overlay> mapOverlays = mapView.getOverlays();mapOverlays.add(itemizedoverlay);

Page 24: Google Maps Android API V1 e V2

• Markers

POI (Point Of Interest) - V2

GoogleMap mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

mMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title("Hello world"));

Marker melbourne = mMap.addMarker(new MarkerOptions() .position(new LatLng(-37.81319, 144.96298)) .title("Melbourne") .snippet("Population: 4,137,400") .icon(BitmapDescriptorFactory.fromResource(R.drawable.img)));

Page 25: Google Maps Android API V1 e V2

• Duas opções:

Tipos de Mapa - V1

mapView = (MapView) findViewById(R.id.mapview);mapView.setStreetView(true);mapView.setSatellite(true);

Page 26: Google Maps Android API V1 e V2

• Mais opções:

Tipos de Mapa - V2

GoogleMap mMap;

mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);mMap.setMapType(GoogleMap.MAP_TYPE_NONE);mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);

Page 27: Google Maps Android API V1 e V2

• Opções novas: híbrido e terreno.

Tipos de Mapa - V2

Page 28: Google Maps Android API V1 e V2

Outros controles - V1

mapView.setBuiltInZoomControls(true);MapController controller = mapView.getController();controller.animateTo(new GeoPoint(lat, long));controller.setCenter(new GeoPoint(lat, long));controller.setZoom(15);controller.zoomIn();controller.zoomOut();

Page 29: Google Maps Android API V1 e V2

Outros controles - V2<fragment xmlns:map="http://schemas.android.com/apk/res-auto" class="com.google.android.gms.maps.SupportMapFragment" map:cameraBearing="90" //muda orientação para leste map:cameraTargetLat="-33.796923" map:cameraTargetLng="150.922433" map:cameraTilt="30" //angulo da visão map:cameraZoom="13" map:mapType="normal" map:uiCompass="false" map:uiRotateGestures="true" map:uiScrollGestures="false" map:uiTiltGestures="true" map:uiZoomControls="false" map:uiZoomGestures="true"/>

Page 30: Google Maps Android API V1 e V2

Outros controles - V2

GoogleMapOptions options = new GoogleMapOptions();

options.mapType(GoogleMap.MAP_TYPE_SATELLITE) .compassEnabled(false) .rotateGesturesEnabled(false) .tiltGesturesEnabled(false);

Page 31: Google Maps Android API V1 e V2

Bônus da V2

Page 32: Google Maps Android API V1 e V2

• Múltiplas linhas

+ Bônus - V2

PolylineOptions rectOptions = new PolylineOptions() .add(new LatLng(37.35, -122.0)) .add(new LatLng(37.45, -122.0)) .add(new LatLng(37.45, -122.2)) .add(new LatLng(37.35, -122.2)) .add(new LatLng(37.35, -122.0));

Polyline polyline = myMap.addPolyline(rectOptions);

Page 33: Google Maps Android API V1 e V2

• Polígonos

+ Bônus - V2

Polygon polygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0)) .strokeColor(Color.RED) .fillColor(Color.BLUE));

Polygon polygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5)) .strokeColor(Color.RED) .fillColor(Color.BLUE));

Page 34: Google Maps Android API V1 e V2

• Círculos

+ Bônus - V2

CircleOptions circleOptions = new CircleOptions() .center(point) //set center .radius(500) //set radius in meters .fillColor(0x40ff0000) //semi-transparent .strokeColor(Color.BLUE) .strokeWidth(5); myCircle = myMap.addCircle(circleOptions);

Page 35: Google Maps Android API V1 e V2

• Círculos

+ Bônus - V2

Page 36: Google Maps Android API V1 e V2

[email protected][email protected]• www.globalcode.com.br• www.stillrocker.com• @mobilidadetudo

OBRIGADO!!!PERGUNTAS