Google Maps Android

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.

Google_Developers_Console

Luego hay que habilitar el acceso al API de google maps a nuestro proyecto.
Google_Developers_Console

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.
Google_Developers_Console

Google_Developers_Console

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

Properties_for_DeveloperMap

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>

Android map v2
Github Project