Google Maps Android API V1 e V2
-
Upload
ricardo-ogliari -
Category
Documents
-
view
279 -
download
1
description
Transcript of Google Maps Android API V1 e V2
Google Maps Android API v1 e v2Globalcode e StillRocker
• Ricardo da Silva Ogliari• Instrutor Globalcode• Sócio StillRocker
EU!
• Artigos em Revistas• +- 180 publicações
EU!
Google Maps Android
Google Maps Android
• É muito completa, mas tem tudo?• Não
Google Maps Android
• Busca a imagem em pedaços - Tiles...
Como funciona?
• Para buscar estes pedaços precisamos de uma chave;
• Primeira grande mudança em relação as versões da Maps API;
Como funciona?
• 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
• 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
Obtendo a chave na versão 2
Obtendo a chave na versão 2
• 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"/>
• 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; }}
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>
• 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"/>
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" />
• Utilização da MapFragment• Fragment: fragment, parte, divisão
Mostrar o mapa V2
• Utilização da MapFragment
Mostrar o mapa 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"/>
• Um mapa sem POI´s não tem apelo• Existem inúmeros exemplos
– Museus– Restaurantes– Estádios– Hospitais– Alagamentos– Teatros
POI (Point Of Interest)
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) {}}
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);
• 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)));
• Duas opções:
Tipos de Mapa - V1
mapView = (MapView) findViewById(R.id.mapview);mapView.setStreetView(true);mapView.setSatellite(true);
• 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);
• Opções novas: híbrido e terreno.
Tipos de Mapa - 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();
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"/>
Outros controles - V2
GoogleMapOptions options = new GoogleMapOptions();
options.mapType(GoogleMap.MAP_TYPE_SATELLITE) .compassEnabled(false) .rotateGesturesEnabled(false) .tiltGesturesEnabled(false);
Bônus da 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);
• 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));
• 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);
• Círculos
+ Bônus - V2
• [email protected]• [email protected]• www.globalcode.com.br• www.stillrocker.com• @mobilidadetudo
OBRIGADO!!!PERGUNTAS