Las aplicaciones con mapas y móviles es como el «hello word» en cualquier lenguaje de programación todo el mundo quiere que su aplicación tenga mapas y mas aun su aplicación se basa en torno a mapas y localizaciones. Pues este es otro tutorial de como manejar mapas de google con android.
Primeros Pasos.
Crear su proyecto con eclipse o cualquier IDE usen para programar android.
Una vez creado el proyecto ir a la consola de google project y ahi crear un nuevo proyecto.
Luego hay que habilitar el acceso al API de google maps a nuestro proyecto.

Para generar nuestra key hay que obtener el SHA-1 de nuestro debug-key de android que a menos que no hayas creado una nueva lo podrás obtener de esta manera.
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android - keypass android
En caso de que sea para desplegar la aplicacion para el Play-Store deberan usar la misma llave tanto para generar el APK como para generar el MAP_KEY.
keytool -list -v -keystore ruta_para_la_llave_de_release
Luego hay que generar un API KEY para poder usarlo desde nuestra aplicación.

Una vez generado nuestra key y todo lo demas podemos avanzar a configurar nuestro proyecto en eclipse.
Primero hay que incluir el «Google play service» a eclipse.
- Este proyecto se encuentra en «sdk-folder/extras/google/google_play_services/libproject»
Luego agregar el «Google play service» a nuestro projecto como libreria
- click secundario sobre nuestro proyecto => build path => configure build path
- Android => library => add library
Luego de Agregar esa libreria hay que agregar esta meta data a nuestor «manifest.xml» dentro de la seccion de «application«.
La clase donde tenga su mapa debe extender de FragmentActivity
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="la_key_generada_en_developer_console" />
Permisos necesarios para que nuestra aplicacion funciones
<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" />
<!--
The following two permissions are not required to use
Google Maps Android API v2, but are recommended.
-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Ahora solo nos queda incluir nuestro mapa en algún layout.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.developermap.MainActivity$PlaceholderFragment" >
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
Una vez realizado todo esto podemos correr nuestro projecto y nos mostrara un mapa en nuestra actividad.
[image map]
Marcadores
Para agregar un marcador a nuestro mapa basta con optener la referencia de nuestro mapa y agregando una instancia de «MarkerOptions» al mismo.
Position: sera la posicion donde aparecera el marcador en el mapa (latitud – longitud)
Title : Es esl titulo que aparecera una vez sea clickeado el marcador.
Snippet: Es un texto extra que aparece debajo del titulo, sera como una descripcion.
Icon: Si esta opcion no es asignada sera tomado uno por defecto que es un icono de location negro.
/** **/
FragmentManager manager = getSupportFragmentManager();
SupportMapFragment supoortMapFragment = (SupportMapFragment)manager.findFragmentById(R.id.map);
GoogleMap map = supoortMapFragment.getMap();
map.addMarker(new MarkerOptions()
.position(new LatLng(0,0))
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))
.title("Hola")
.snippet("Descripcion"));
/** **/
Custom layout para un marcador:
/** **/
map.setInfoWindowAdapter(new InfoWindowAdapter(){
@Override
public View getInfoContents(Marker arg0) {
return null;
}
@Override
public View getInfoWindow(Marker arg0) {
LayoutInflater inflater = ((LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE));
View view = inflater.inflate(R.layout.custom_layout, null);
return view;
}
});
/** **/
Custom Layout ( custom_layout.xml )
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:padding="10dp"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hola mundo"
android:textStyle="bold" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
</LinearLayout>


