Android: Google Maps
Android nos permite integrar Google Maps en nuestra aplicación. Puede mostrar cualquier ubicación en el mapa, o puede mostrar diferentes rutas en el mapa, etc. También puede personalizar el mapa de acuerdo con sus opciones.
Mapa de Google: archivo de diseño
Ahora tiene que agregar el fragmento de mapa en el archivo de diseño xml. Su sintaxis se da a continuación:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Mapa de Google: archivo de AndroidManifest
Lo siguiente que debe hacer es agregar algunos permisos junto con la clave API de Google Map en el archivo AndroidManifest.XML. Su sintaxis se da a continuación:
<!--Permissions-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.
READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--Google MAP API key-->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDKymeBXNeiFWY5jRUejv6zItpmr2MVyQ0" />
Personalización de Google Map
Puede personalizar fácilmente el mapa de Google desde su vista predeterminada y cambiarlo según su demanda.
Agregar marcador
Puede colocar un creador con un texto encima que muestre su ubicación en el mapa. Se puede realizar medianteaddMarker()método. Su sintaxis se da a continuación:
final LatLng TutorialsPoint = new LatLng(21 , 57);
Marker TP = googleMap.addMarker(new MarkerOptions()
.position(TutorialsPoint).title("TutorialsPoint"));
Cambiar el tipo de mapa
También puede cambiar el tipo de MAP. Hay cuatro tipos diferentes de mapas y cada uno ofrece una vista diferente del mapa. Estos tipos son Normal, Híbrido, Satélite y Terreno. Puedes usarlos de la siguiente manera
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
Activar / desactivar zoom
También puede habilitar o deshabilitar los gestos de zoom en el mapa llamando al setZoomControlsEnabled(boolean)método. Su sintaxis se da a continuación:
googleMap.getUiSettings().setZoomGesturesEnabled(true);
Aparte de esta personalización, hay otros métodos disponibles en la clase GoogleMap, que le ayudan a personalizar más el mapa. Se enumeran a continuación:
No Señor | Método y descripción |
---|---|
1 | addCircle(CircleOptions options) Este método agrega un círculo al mapa |
2 | addPolygon(PolygonOptions options) Este método agrega un polígono al mapa |
3 | addTileOverlay(TileOverlayOptions options) Este método agrega superposición de mosaicos al mapa |
4 | animateCamera(CameraUpdate update) Este método Mueve el mapa de acuerdo con la actualización con una animación. |
5 | clear() Este método elimina todo del mapa. |
6 | getMyLocation() Este método devuelve la ubicación del usuario que se muestra actualmente. |
7 | moveCamera(CameraUpdate update) Este método reposiciona la cámara de acuerdo con las instrucciones definidas en la actualización. |
8 | setTrafficEnabled(boolean enabled) Este método activa o desactiva la capa de tráfico. |
9 | snapshot(GoogleMap.SnapshotReadyCallback callback) Este método toma una instantánea del mapa |
10 | stopAnimation() Este método detiene la animación de la cámara si hay una en curso |
Ejemplo
Aquí hay un ejemplo que demuestra el uso de la clase GoogleMap. Crea una aplicación M básica que le permite navegar por el mapa.
Para experimentar con este ejemplo, puede ejecutarlo en un dispositivo real o en un emulador.
Cree un proyecto con la actividad de Google Maps como se muestra a continuación:
Abrirá la siguiente pantalla y copiará la URL de la consola para la clave API como se muestra a continuación:
Copie esto y péguelo en su navegador. Le dará la siguiente pantalla:
Haga clic en continuar y haga clic en Crear clave API, luego se mostrará la siguiente pantalla
Aquí está el contenido de activity_main.xml.
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.tutorialspoint7.myapplication.MapsActivity" />
Aquí está el contenido de MapActivity.java.
En el siguiente código, hemos proporcionado detalles de latitud y longitud de muestra
package com.example.tutorialspoint7.myapplication;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera.
* In this case, we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device.
* This method will only be triggered once the user has installed
Google Play services and returned to the app.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng TutorialsPoint = new LatLng(21, 57);
mMap.addMarker(new
MarkerOptions().position(TutorialsPoint).title("Tutorialspoint.com"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(TutorialsPoint));
}
}
A continuación se muestra el contenido de AndroidManifest.xml archivo.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tutorialspoint7.myapplication">
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
Note that the API key is linked to the encryption key used to sign the APK.
You need a different API key for each encryption key, including the release key
that is used to sign the APK for publishing.
You can define the keys for the debug and
release targets in src/debug/ and src/release/.
-->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyAXhBdyKxUo_cb-EkSgWJQTdqR0QjLcqes" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
La salida debería ser así: