- Lo primero que vamos a hacer es abrir nuestro SDK Manager para descargar una librería del repositorio de google.
- Posteriormente nos vamos al final del todo, a la carpeta "extras" y marcamos "Google Play Services"
- Pulsamos en "Install Packages" para instalar.
NOTA: Cuidado con instalar paquetes que no queráis, puede influir en el funcionamiento de eclipse.
Una vez descargada, vamos a agregarla como librería Android a nuestro proyecto:
- Pinchamos sobre File/New/Other y elegimos "Android Project For Existing Code"
- En la ventana que se nos abre, buscamos la ruta donde este nuestra librería "Google Play Services". Tenéis que ir a la carpeta donde tengáis vuestro sdk, y dentro seguir la ruta "sdk\extras\google\google_play_services\libproject\google-play-services_lib"
- Una vez tengáis vuestra librería agregada, pincháis sobre vuestro proyecto y elegís "preferences", posteriormente, en la ventana que se abre, pincháis en "android" y abajo a la derecha podéis agregar la librería a vuestro proyecto
Una vez tengamos la librería, debemos registrar nuestra app y obtener una clave Google Maps para poder utilizarla en nuestra aplicación.
NOTA: Esto lo hace google para mantener cierto control, ya que una app que al utilizar más de 25.000 veces Google Maps debe de empezar a pagar una cantidad de dinero (pequeña) por cada vez que se utilice de más Google Maps. Esto no supone un problema para una persona con una app, pero si que lo es si 30.000 personas tienen la app y utilizan a menudo Google Maps.
Bien, para obtener una clave para utilizar Google Maps, necesitaremos un código cifrado en SHA-1 que nos proporciona el mismo eclipse:
Posteriormente agregamos la siguiente linea de código:
Bien, para obtener una clave para utilizar Google Maps, necesitaremos un código cifrado en SHA-1 que nos proporciona el mismo eclipse:
- Pinchamos en eclipse en "window/preference" y en la ventana que se abre, pinchamos en "Android/build"
Bueno, ahi os aparecerá vuestro código en SHA-1, lo copiáis en un bloc de notas, para utilizarlo posteriormente.
Ahora, vamos a ir a Google Developer Console
Una vez en la pagina, pincháis sobre "API Access" y posteriormente pincháis sobre "Create new Android Key"
- En esta nueva ventana que se abre debéis poner vuestro código SHA-1 seguido de punto y coma ";" y el nombre de nuestro proyecto, quedando de la siguiente forma:
- XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX;com.example.picarcodigo (todo junto).
Bueno, copiáis vuestra key en un bloc de notas para utilizarla posteriormente, vamos a generar algo de código.
Lo primero que debemos hacer cuando creemos nuestro proyecto es agregar permisos a nuestra aplicación:
- android.permission.INTERNET
- android.permission.ACCESS_NETWORK_STATE
- android.permission.WRITE_EXTERNAL_STORAGE
- com.google.android.providers.gsf.permission.READ_GSERVICES
- android.permission.ACCESS_COARSE_LOCATION
- android.permission.ACCESS_FINE_LOCATION
Posteriormente agregamos la siguiente linea de código:
Google Maps utiliza OpenGl para renderizar mapas, si no tenéis instalado OpenGl, es obligatorio ponerlo.
Ahora, continuando con nuestro manifest, debajo de donde tengamos declarada nuestra activity, añadimos 2 meta-data.
En "android:value" del primer meta, pegáis, entre comillas, vuestra clave, quedando de la siguiente manera
Con esto ya, podemos trabajar con Google Maps en nuestra app.
Bien, ahora vais a vuestro archivo xml y agregáis lo siguiente:
Bien, esto no necesita mucha explicación, un fragment donde nos cargará nuestro mapa.
Vamos a ir ahora a nuestra clase para darle funcionalidad.
Bien, en código, como podéis observar, no es difícil:
- Referenciamos nuestro xml
- setContentView(R.layout.activity_maps_example);
- Referenciamos el fragment de nuestro xml mediante la clase "SupportMapFragment"
- SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
- Pasamos nuestro "SupportMapFragment" a la clase GoogleMap para poder manejar los mapas
- GoogleMap map = fm.getMap();
- Creamos un objeto de la clase LatLng (Latitud y Longitud) para introducir coordenadas (Google Maps trabaja con coordenadas) que introduciremos posteriormente en nuestro mapa
- LatLng murcia = new LatLng(38.00, -1.12);
- Activamos nuestra localización
- map.setMyLocationEnabled(true);
- Le pasamos las coordenadas y el zoom que nos va a mostrar, en mi caso, 2.0f (float)
- map.moveCamera(CameraUpdateFactory.newLatLngZoom(murcia, 2.0f));
- Finalmente, añadimos un marcador de posición
- map.addMarker(new MarkerOptions()
- .title("Murcia")//Titulo de nuestro marcador
- .snippet("Picarcodigo.blogspot.com")//Informción
- .position(murcia));//Posición.
Bien, si habéis seguido bien los pasos no debéis de tener ningún problema.
Hola amigo, muchas gracias por el tutorial, me ha servido muchisimoooo, aunque me salta una duda, eh creado este mapa, me muestra el mapa, la ubicacion y el marcador, pero... como ya vees yo mismo le estoy dando la latitud y la longitud,(como la latitud y longitud de murcia en el tutorial) como puedo hacer para obtenerla solo, me refiero algun metodo para obtenerla automaticamente la latitud y longitud de mi posicion nose, algo asi??
ResponderEliminareste es mi codigo:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GoogleMap mapa = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.mapi)).getMap();
double lati =-oo.ooooo;
double longi = -oo.ooooo;
mapa.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
LatLng casa = new LatLng(lati, longi);
CameraPosition camp = new CameraPosition.Builder()
.target(casa)
.zoom(19)
.bearing(45)
.tilt(10)
.build();
CameraUpdate camUpd3 =
CameraUpdateFactory.newCameraPosition(camp);
mapa.animateCamera(camUpd3);
mapa.addMarker(new MarkerOptions()
.title("esta es mi casa !!")
.position(casa)
.snippet("dulce hogar"));.
Buenas, me encantaría decirte que google maps nos proporciona un método que nos proporcione nuestra latitud y longitud directamente, pero se queda en un simple, "me encantaría". Ni siquiera el repositorio de Android nos proporciona nada parecido, ahora bien, no digo que no se pueda crear un método para obtener nosotros mismos la posición actual de nuestro dispositivo, para ello tendriamos que hacer:
EliminarConectarnos a un proveedor de red que pueda facilitarnos nuestra latitud y longitud
Activar el gps
Obtener datos de localización
Bien, afortunadamente puedes ver este enlace: http://www.sgoliver.net/blog/?p=1887 donde lo tienen muy bien explicado y te puede orientar en lo que pides, actualmente estoy trabajando en un proyecto y no tengo tiempo para hacer un tema.
Un saludo, suerte.
Hola amigo, muchas gracias por tu pronta respuesta, e echare un ojo al material que me envias, muchas gracias :D saludos!
EliminarGran Explicacion, facil de implementar a la primera salio
ResponderEliminar