Android - Google Maps
Android ci permette di integrare google maps nella nostra applicazione. Puoi mostrare qualsiasi posizione sulla mappa, o puoi mostrare diversi percorsi sulla mappa ecc. Puoi anche personalizzare la mappa in base alle tue scelte.
Google Map - File di layout
Ora devi aggiungere il frammento di mappa nel file di layout xml. La sua sintassi è data di seguito:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Google Map - File AndroidManifest
La prossima cosa che devi fare è aggiungere alcune autorizzazioni insieme alla chiave API di Google Map nel file AndroidManifest.XML. La sua sintassi è data di seguito:
<!--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" />
Personalizzazione di Google Map
Puoi facilmente personalizzare la mappa di Google dalla sua visualizzazione predefinita e modificarla in base alle tue esigenze.
Aggiunta di marker
Puoi posizionare un creatore con del testo sopra che mostra la tua posizione sulla mappa. Può essere fatto tramiteaddMarker()metodo. La sua sintassi è data di seguito:
final LatLng TutorialsPoint = new LatLng(21 , 57);
Marker TP = googleMap.addMarker(new MarkerOptions()
.position(TutorialsPoint).title("TutorialsPoint"));
Modifica del tipo di mappa
È inoltre possibile modificare il tipo di MAPPA. Esistono quattro diversi tipi di mappa e ognuno offre una visualizzazione diversa della mappa. Questi tipi sono Normale, Ibrido, Satellite e Terreno. Puoi usarli come di seguito
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
Abilita / Disabilita lo zoom
Puoi anche abilitare o disabilitare i gesti di zoom nella mappa chiamando il setZoomControlsEnabled(boolean)metodo. La sua sintassi è data di seguito:
googleMap.getUiSettings().setZoomGesturesEnabled(true);
Oltre a queste personalizzazioni, ci sono altri metodi disponibili nella classe GoogleMap, che ti aiutano a personalizzare maggiormente la mappa. Sono elencati di seguito:
Suor n | Metodo e descrizione |
---|---|
1 | addCircle(CircleOptions options) Questo metodo aggiunge un cerchio alla mappa |
2 | addPolygon(PolygonOptions options) Questo metodo aggiunge un poligono alla mappa |
3 | addTileOverlay(TileOverlayOptions options) Questo metodo aggiunge la sovrapposizione di tessere alla mappa |
4 | animateCamera(CameraUpdate update) Questo metodo sposta la mappa in base all'aggiornamento con un'animazione |
5 | clear() Questo metodo rimuove tutto dalla mappa. |
6 | getMyLocation() Questo metodo restituisce la posizione dell'utente attualmente visualizzata. |
7 | moveCamera(CameraUpdate update) Questo metodo riposiziona la telecamera secondo le istruzioni definite nell'aggiornamento |
8 | setTrafficEnabled(boolean enabled) Questo metodo attiva o disattiva il livello del traffico. |
9 | snapshot(GoogleMap.SnapshotReadyCallback callback) Questo metodo acquisisce un'istantanea della mappa |
10 | stopAnimation() Questo metodo interrompe l'animazione della telecamera se ce n'è una in corso |
Esempio
Ecco un esempio che dimostra l'uso della classe GoogleMap. Crea un'applicazione M di base che ti consente di navigare attraverso la mappa.
Per sperimentare questo esempio, puoi eseguirlo su un dispositivo reale o in un emulatore.
Crea un progetto con l'attività di Google Maps come mostrato di seguito -
Si aprirà la seguente schermata e copierà l'URL della console per la chiave API come mostrato di seguito:
Copia questo e incollalo nel tuo browser. Verrà visualizzata la seguente schermata:
Fare clic su continua e fare clic su Crea chiave API, quindi verrà visualizzata la schermata seguente
Ecco il contenuto di 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" />
Ecco il contenuto di MapActivity.java.
Nel codice seguente abbiamo fornito dettagli di latitudine e longitudine di esempio
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));
}
}
Di seguito è riportato il contenuto di AndroidManifest.xml file.
<?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>
L'output dovrebbe essere così -