Anda di halaman 1dari 2

Centrando el mapa

Hay diversas maneras de obtener una locaclizacin en Android. Pero hay que tener u
na cosa muy presente: la batera. Cuando se desarrolla una aplicacin que implementa
la localizacin del usuario hay que decidir cmo obtener dicha posicin. Podemos util
izar el GPS y obtener una localizacin ms exacta a cambio de gastar ms batera o bien
utilizar la posicin por 3G, menos precisa pero ms durarera.
Otro punto importante es que utilizamos los Google Services para mostrar el mapa
, as pues sera interesante comprobar que estn instalados en el telfono y se puede co
nectar a ellos correctamente.
Finalmente, vamos a seguir los pasos sugeridos por Google y puntualizaciones rea
lizadas por Javanator para establecer una correcta conexin a los Google Play Serv
ices y obtener nuestra prosicin.
1. Especificando los permisos necesarios
Vamos a necesitar permisos uno o dos permisos en nuestra aplicacin: ACCESS_COARSE
_LOCATION o ACCESS_FINE_LOCATION en funcin de el grado de precisin que queremos te
ner. Pero bsicamente, estos permisos ya los hemos aadido en la etapa anterior. En
cualquier caso, en nuestro AndroidManifest.xml deberamos tener el permiso:
2. Comprobando los Google Play Services
Ojo que vienen curvas. Vamos a comprobar el estado de los Google Services con un
conjunto de mtodos. Como seguramente otra aplicacin o funcin de nuestra app quiera
tambin comprobar este estado, vamos a encapsularlo todo en una mtodo al que iremo
s llamando.
Este cdigo va en la actividad principal de vuestro proyecto.

Vamos a analizar un poco lo que hemos puesto
Todo este cdigo se introduce en la MainActivity. Primero aadimos unas cuantas vari
ables que utilizaremos: el SupportMapFragment que ya vimos en la etapa anterior,
un objeto GoogleMap y un objeto LocationClient. Adems definimos un tiempo mximo q
ue vamos a esperar a la conexin (CONNECTION_FAILURE_RESOLUTION_REQUEST). Pasado e
ste tiempo, daremos por perdida la conexin y dejaremos de intentarlo. El bloque [
public static class ErrorDialogFragment] nos muestra un dilogo, un mensaje inform
ando de que no se ha podido establecer dicha conexin.
En el onCreate bsicamente instanciamos al objeto LocationClient y activamos la lo
caclizacin del mapa. Cuando la actividad pasa a ser visible se llama al mtodo onSt
art y le decimos que intente conectarse si los servicios de GooglePlay estn dispo
nibles. Del mismo modo, le decimos que se desconecte en el onStop.
En onActivityResult bsicamente le diremos que intente conectarse si nos han comu
nicado que los Google Services funcionan correctamente. Informacin que llega del
mtodo isGooglePlayServicesAvailable que no tocaremos.
Finalmente, en el onConnected le decimos qu ha de hacer nuestro programa una vez
hemos establecido la conexin. En nuestro caso le decimos que muestre un mensaje p
or pantalla indicando que se ha conectado (con el Toast) y a continuacin estamos
centrando el mapa en nuestra posicin. As que bsicamente, el trozo de cdigo que centr
a nuestra vista en un mapa es:
Location location = mLocationClient.getLastLocation();
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, 17);
map.animateCamera(cameraUpdate);
Funciona de la siguiente manera:
Obetenemos nuestra posicin y la almacenamos en location
Creamos un objeto tipo LatLng con dicha posicin
Creamos una orden de actualizacin de la cmara (CameraUpdate) y le decimos que
se vaya a nuestra posicin con un zoom de 17.
Finalmente ejecutamos esta orden, haciendo que se mueva la vista del mapa ha
sta nuestra situacin actual.
Es interesante ver todas las cosas que podemos hacer con la cmara en Android.Podem
os cambiar la posicin, el zoom, la orientacin e incluso el ngulo! Mucha ms informacin
al respecto en Changing the View.
Ahora que tenemos centrado nuestro mapa, vamos a aadir un marcador.
Aadir un marcador en el mapa
Muy muy sencillo. El cdigo necesario para aadir un marcador es el siguiente:
mMap.addMarker (new MarkerOptions()
.position(new LatLng(lat, lng))
.title("El titulo que quieras"));
As pues, basta con aadir este trozo de cdigo en nuestro mtodo onCreate para aadir un
marcador. Por descontado, estos marcadores se pueden personalizar, rotar, cambia
r de color y millones de cosas ms. Pasaos por Markers en Android para saber ms sob
re el tema.
Ahora tenemos: Un mapa que se carga, se centra en nuestra posicin y muestra u
n marcador.
En la prxima sesin: Parseo de un .xml para aadir varios marcadores a un mapa.
Links de inters:
Location Strategies [Google Dev]
Retrieving the Current Location [Google Dev]
Changing the View [Google Dev]
Interacting with the Map [Google Dev]
Markers in Maps [Google Dev]
Os recuerdo que el cdigo fuente del proyecto se encuentra en Github
Cualquier duda, sugerencia o cuestin me podis encontrar en twitter!

Anda mungkin juga menyukai