Google Maps Android API V1 e V2
-
Upload
ricardo-ogliari -
Category
Documents
-
view
255 -
download
1
description
Transcript of Google Maps Android API V1 e V2
![Page 1: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/1.jpg)
Google Maps Android API v1 e v2Globalcode e StillRocker
![Page 2: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/2.jpg)
• Ricardo da Silva Ogliari• Instrutor Globalcode• Sócio StillRocker
EU!
![Page 3: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/3.jpg)
• Artigos em Revistas• +- 180 publicações
EU!
![Page 4: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/4.jpg)
Google Maps Android
![Page 5: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/5.jpg)
Google Maps Android
![Page 6: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/6.jpg)
• É muito completa, mas tem tudo?• Não
Google Maps Android
![Page 7: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/7.jpg)
• Busca a imagem em pedaços - Tiles...
Como funciona?
![Page 8: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/8.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/9.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/10.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/11.jpg)
Obtendo a chave na versão 2
![Page 12: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/12.jpg)
Obtendo a chave na versão 2
![Page 13: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/13.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/14.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/16.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/18.jpg)
• Utilização da MapFragment• Fragment: fragment, parte, divisão
Mostrar o mapa V2
![Page 19: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/19.jpg)
• Utilização da MapFragment
Mostrar o mapa V2
![Page 20: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/20.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/21.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/24.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/25.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/26.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/27.jpg)
• Opções novas: híbrido e terreno.
Tipos de Mapa - V2
![Page 28: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/28.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/29.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/30.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/31.jpg)
Bônus da V2
![Page 32: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/32.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/33.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/34.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/35.jpg)
• Círculos
+ Bônus - V2
![Page 36: Google Maps Android API V1 e V2](https://reader034.fdocuments.in/reader034/viewer/2022042604/568c52571a28ab4916b646ad/html5/thumbnails/36.jpg)
• [email protected]• [email protected]• www.globalcode.com.br• www.stillrocker.com• @mobilidadetudo
OBRIGADO!!!PERGUNTAS