Building Android and iPhone applications from scratch
In: Android| Tutoriales
28 Sep 2009No cabe duda de que una de las grandas posibilidades que podemos aprovechar en un dispositivo Android es la geo-localización. Uno de los primeros pasos que podemos dar en este campo es la utilización de Google Maps.
Desde hace mucho tiempo Google Maps es sinónimo de geo-localización en Internet, gracias a la estupenda API de la que disponemos podemos hacer uso de sus funciones en nuestras aplicaciones Android.
A continuación desarrollaremos un primer ejemplo, en el que aprovecharemos para introducir el concepto de thread y cómo influyen en el funcionamiento de nuestra aplicación.
¿Qué es esto?
En éste tutorial vamos a crear una aplicación que utiliza Google Maps y threads para que mientras realizamos una búsqueda mostraremos un diálogo de espera.
¿Qué voy a aprender?
¿Cómo quedará?
Pasos a seguir:
Se trata de una aplicación bastante sencilla, en ella vamos a necesitar una sola Activity y un solo layout. Antes de poder utilizar un objeto de Google Maps es necesario que os registreis para utilizar la API de Google Maps, en éste enlace se explican los sencillos pasos que debéis seguir.
Lo primero que vamos a necesitar es el XML donde reside el layout de la aplicación.
main.xml:
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/address" android:layout_x="11px" android:layout_y="5px" > </TextView> <EditText android:id="@+id/et_direccion" android:layout_width="240px" android:layout_height="wrap_content" android:hint="@string/input" android:textSize="18sp" android:layout_x="12px" android:layout_y="30px" > </EditText> <Button android:id="@+id/btn_busqueda" android:layout_width="59px" android:layout_height="wrap_content" android:text="@string/go" android:layout_x="256px" android:layout_y="30px" > </Button> <com.google.android.maps.MapView android:id="@+id/mapa" android:layout_width="fill_parent" android:layout_height="310px" android:apiKey="Copia aqui la clave API asignada" android:layout_x="2px" android:layout_y="100px" android:clickable="true" /> </AbsoluteLayout>
Como veis es un layout muy simple. Tenemos un área de texto donde escribiremos la dirección que queremos buscar y y un botón al que asignaremos la tarea de comenzar la búsqueda de resultados. En el campo “apiKey” del MapView debéis copiar la clave que se os haya asignado al acabar el proceso citado anteriormente.
Pasamos ahora a la chicha de la aplicación, el evento de buscar y el manejo del thread.
La idea de todo esto es separar dos procesos, en uno de ellos haremos la búsqueda de las coordenadas y en la otra actualizaremos el layout de la aplicación. Para hacerlo necesitamos un Handler.
ThreadGoogleMaps.java:
private Handler showAdressResults = new Handler() {
@Override
public void handleMessage(Message msg) {
pd.dismiss();
if (foundAdresses.size() == 0) {
//Sino encuentra la dirección mostramos un diálogo de error
Dialog locationError = new AlertDialog.Builder(
ThreadGoogleMaps.this).setIcon(0).setTitle(
"Error").setPositiveButton(R.string.ok, null)
.setMessage(
"Error, no se ha encontrado la dirección.")
.create();
locationError.show();
} else { // else display address on map
for (int i = 0; i < foundAdresses.size(); ++i) {
//Guardamos el resultado en formato latitud y longitud
Address x = foundAdresses.get(i);
lat = x.getLatitude();
lon = x.getLongitude();
}
//Mostramos la dirección en el mapa
navigateToLocation((lat * 1000000), (lon * 1000000),myMap);
}
}
};
El Handler se ocupa de actualizar el mapa, en función de si la búsqueda de coordenadas ha devuelto algún resultado. Para rellenar buscar ésas coordenadas utilizamos una función del geocoder, se trata de la función getFromLocationName.
Como veis es un ejemplo bastante sencillo, obviamente se le podría añadir soporte de GPS o cualquier otra idea pero para el propósito de éste tutorial.
Código fuente:
|
|
download: ThreadGoogleMaps (34.98KB) added: 28/09/2009 clicks: 159 description: Ejemplo que añade el tratamiento de threads y Google Maps |
Entradas relacionadas:
La comunidad de desarrollo sobre Android e iPhone en castellano es algo limitada, así que hay que sumar, desde aqui intentaré aportar mi granito de arena y ayudar a quien lo necesite. No dudes en preguntar cualquier duda, entre todos los solucionaremos.
2 Comentarios to Google Maps con Threads
Carlos
Enero 25th, 2010 at 3:54 PM
Buenas,
Enhorabuena por el ejemplo, me parece muy útil.
¿Sabríais cómo se hace para que pinte alguna marca que indique la localización exacta en la pantalla?
Un saludo y gracias.
xavier encarnacion
Mayo 6th, 2010 at 10:26 AM
Hola mil gracias por esta valiosa información me gustaria ponerme en contacto contigo porque necesito realizar un tema de investigacion para la universidad gracias.
xle2911@hotmail.com