Xamarin.Forms
Lavorare con Maps
Ricerca…
Osservazioni
Se hai intenzione di eseguire il tuo progetto su un altro computer, dovrai generare una nuova chiave API per questo, poiché le impronte digitali SHA-1 non corrisponderanno per diversi computer di compilazione.
Puoi esplorare il progetto, descritto nell'esempio Aggiungere una mappa in Xamarin.Forms qui
Aggiunta di una mappa in Xamarin.Forms (Xamarin Studio)
Puoi semplicemente utilizzare le API native della mappa su ogni piattaforma con Xamarin Forms. Tutto ciò che serve è scaricare il pacchetto Xamarin.Forms.Maps da nuget e installarlo su ciascun progetto (incluso il progetto PCL).
Inizializzazione delle mappe
Prima di tutto devi aggiungere questo codice ai tuoi progetti specifici per la piattaforma. Per fare ciò devi aggiungere la chiamata al metodo Xamarin.FormsMaps.Init
, come negli esempi qui sotto.
progetto iOS
File AppDelegate.cs
[Register("AppDelegate")]
public partial class AppDelegate : Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Xamarin.Forms.Forms.Init();
Xamarin.FormsMaps.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
}
Progetto Android
File MainActivity.cs
[Activity(Label = "MapExample.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
Xamarin.Forms.Forms.Init(this, bundle);
Xamarin.FormsMaps.Init(this, bundle);
LoadApplication(new App());
}
}
Configurazione della piattaforma
Sono necessari passaggi di configurazione aggiuntivi su alcune piattaforme prima che venga visualizzata la mappa.
progetto iOS
Nel progetto iOS devi solo aggiungere 2 voci al tuo file Info.plist :
-
NSLocationWhenInUseUsageDescription
string with valueWe are using your location
-
NSLocationAlwaysUsageDescription
string with valueCan we use your location
Progetto Android
Per utilizzare Google Maps devi generare una chiave API e aggiungerla al tuo progetto. Segui le istruzioni qui sotto per ottenere questa chiave:
(Facoltativo) Trova la posizione dello strumento keytool (l'impostazione predefinita è
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
)(Facoltativo) Apri il terminale e vai al tuo posto di keytool:
cd /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
Esegui il seguente comando keytool:
keytool -list -v -keystore "/Users/[USERNAME]/.local/share/Xamarin/Mono for Android/debug.keystore" -alias androiddebugkey -storepass android -keypass android
Dove [USERNAME] è, ovviamente, la tua cartella utente corrente. Dovresti ottenere qualcosa di simile a questo nell'output:
Alias name: androiddebugkey Creation date: Jun 30, 2016 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=Android Debug, O=Android, C=US Issuer: CN=Android Debug, O=Android, C=US Serial number: 4b5ac934 Valid from: Thu Jun 30 10:22:00 EEST 2016 until: Sat Jun 23 10:22:00 EEST 2046 Certificate fingerprints: MD5: 4E:49:A7:14:99:D6:AB:9F:AA:C7:07:E2:6A:1A:1D:CA SHA1: 57:A1:E5:23:CE:49:2F:17:8D:8A:EA:87:65:44:C1:DD:1C:DA:51:95 SHA256: 70:E1:F3:5B:95:69:36:4A:82:A9:62:F3:67:B6:73:A4:DD:92:95:51:44:E3:4C:3D:9E:ED:99:03:09:9F:90:3F Signature algorithm name: SHA256withRSA Version: 3
Tutto ciò di cui abbiamo bisogno in questo output è l'impronta digitale del certificato SHA1. Nel nostro caso è uguale a questo:
57:A1:E5:23:CE:49:2F:17:8D:8A:EA:87:65:44:C1:DD:1C:DA:51:95
Copia o salva da qualche parte questa chiave. Ne avremo bisogno in seguito.
Vai a Google Developers Console , nel nostro caso dobbiamo aggiungere l' API di Google Maps per Android , quindi sceglierlo:
Google ti chiederà di creare un progetto per abilitare le API, seguire questo suggerimento e creare il progetto:
Abilita l'API di Google Maps per il tuo progetto: Dopo aver abilitato l'API, devi creare credenziali per la tua app. Segui questo suggerimento:
Nella pagina successiva scegli la piattaforma Android, tocca "Quali credenziali ho bisogno?" pulsante, crea un nome per la tua chiave API, tocca "Aggiungi nome pacchetto e impronta digitale", inserisci il nome del pacchetto e l'impronta digitale SHA1 dal punto 4 e infine crea una chiave API: Per trovare il nome del tuo pacchetto in Xamarin Studio vai alla tua soluzione .Droid -> AndroidManifest.xml:
Dopo la creazione copia la nuova chiave API (non dimenticare di premere il pulsante "Fine" dopo) e incollalo nel tuo file
AndroidManifest.xml
: File AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="documentation.mapexample"> <uses-sdk android:minSdkVersion="15" /> <application android:label="MapExample"> <meta-data android:name="com.google.android.geo.API_KEY" android:value="AIzaSyBAg8X-t4pOIDDp3q5Ph45jKUIVjo_RnxU" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> </manifest>
Dovrai anche abilitare alcune autorizzazioni nel tuo manifest per abilitare alcune funzionalità aggiuntive:
- Accesso alla posizione approssimativa
- Accedi a Fine posizione
- Accesso alla posizione Comandi extra
- Access Mock Location
- Accedi allo stato della rete
- Access Wifi State
- Internet
Sebbene, per scaricare i dati di Maps sono necessarie le ultime due autorizzazioni. Leggi le autorizzazioni di Android per saperne di più. Ecco tutti i passaggi per la configurazione di Android.
Nota : se vuoi eseguire la tua app su Android simulator, devi installare Google Play Services su di esso. Segui questo tutorial per installare Play Services su Xamarin Android Player. Se non riesci a trovare l'aggiornamento dei servizi di riproduzione di google dopo l'installazione del Play Store, puoi aggiornarlo direttamente dalla tua app, dove hai dipendenza dai servizi di mappe
Aggiungere una mappa
Aggiungere una vista mappa al tuo progetto crossplatform è abbastanza semplice. Ecco un esempio di come puoi farlo (sto usando un progetto PCL senza XAML).
Progetto PCL
File MapExample.cs
public class App : Application
{
public App()
{
var map = new Map();
map.IsShowingUser = true;
var rootPage = new ContentPage();
rootPage.Content = map;
MainPage = rootPage;
}
}
È tutto. Ora se eseguirai la tua app su iOS o Android, ti mostrerà la vista della mappa: