Xamarin.Forms
Mit Karten arbeiten
Suche…
Bemerkungen
Wenn Sie Ihr Projekt auf einem anderen Computer ausführen, müssen Sie dafür einen neuen API-Schlüssel generieren, da SHA-1-Fingerabdrücke nicht für verschiedene Build-Maschinen passen.
Sie können das Projekt erkunden, wie im Beispiel Hinzufügen einer Karte in Xamarin.Forms hier beschrieben
Hinzufügen einer Karte in Xamarin.Forms (Xamarin Studio)
Sie können die nativen Karten-APIs auf jeder Plattform einfach mit Xamarin Forms verwenden. Sie müssen lediglich das Xamarin.Forms.Maps- Paket von nuget herunterladen und in jedem Projekt (einschließlich des PCL-Projekts) installieren.
Karteninitialisierung
Zunächst müssen Sie diesen Code zu Ihren plattformspezifischen Projekten hinzufügen. Dazu müssen Sie den Methodenaufruf Xamarin.FormsMaps.Init
hinzufügen, wie in den folgenden Beispielen.
iOS-Projekt
Datei 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);
}
}
Android-Projekt
Datei 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());
}
}
Plattformkonfiguration
Auf einigen Plattformen sind zusätzliche Konfigurationsschritte erforderlich, bevor die Karte angezeigt wird.
iOS-Projekt
In iOS-Projekten müssen Sie nur 2 Einträge zu Ihrer Info.plist- Datei hinzufügen :
-
NSLocationWhenInUseUsageDescription
Zeichenfolge mit WertWe are using your location
-
NSLocationAlwaysUsageDescription
Zeichenfolge mit WertCan we use your location
NSLocationAlwaysUsageDescription
Android-Projekt
Um Google Maps verwenden zu können, müssen Sie einen API-Schlüssel generieren und ihn Ihrem Projekt hinzufügen. Folgen Sie den Anweisungen unten, um diesen Schlüssel zu erhalten:
(Optional) Suchen Sie nach dem Speicherort des Keytool-Tools (Standard ist
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
).(Optional) Öffnen Sie das Terminal und wechseln Sie zu Ihrem Keytool-Speicherort:
cd /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
Führen Sie den folgenden keytool-Befehl aus:
keytool -list -v -keystore "/Users/[USERNAME]/.local/share/Xamarin/Mono for Android/debug.keystore" -alias androiddebugkey -storepass android -keypass android
Dabei ist [USERNAME] natürlich Ihr aktueller Benutzerordner. Sie sollten etwas Ähnliches in der Ausgabe erhalten:
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
In dieser Ausgabe benötigen wir lediglich den Fingerabdruck des SHA1-Zertifikats. In unserem Fall ist dies gleich:
57:A1:E5:23:CE:49:2F:17:8D:8A:EA:87:65:44:C1:DD:1C:DA:51:95
Kopieren oder speichern Sie irgendwo diesen Schlüssel. Wir werden es später brauchen.
Gehen Sie zur Google Developers Console . In unserem Fall müssen Sie die Google Maps-Android-API hinzufügen. Wählen Sie sie also aus:
Google fordert Sie auf, ein Projekt zu erstellen, um APIs zu aktivieren. Folgen Sie diesem Tipp und erstellen Sie das Projekt:
Aktivieren Sie die Google Maps-API für Ihr Projekt: Nachdem Sie API aktiviert haben, müssen Sie Anmeldeinformationen für Ihre App erstellen. Folgen Sie diesem Tipp:
Wählen Sie auf der nächsten Seite die Android-Plattform aus und tippen Sie auf "Welche Anmeldeinformationen benötige ich?" , erstellen Sie einen Namen für Ihren API-Schlüssel, tippen Sie auf "Paketnamen und Fingerabdruck hinzufügen", geben Sie Ihren Paketnamen und Ihren SHA1-Fingerabdruck aus Schritt 4 ein und erstellen Sie schließlich einen API-Schlüssel: Um Ihren Paketnamen in Xamarin Studio zu finden, gehen Sie zu Ihrer .Droid-Lösung -> AndroidManifest.xml:
Kopieren Sie nach der Erstellung den neuen API-Schlüssel (vergessen Sie nicht, die Schaltfläche "Fertig" zu drücken) und fügen Sie ihn in Ihre
AndroidManifest.xml
Datei ein: Datei 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>
Sie müssen außerdem einige Berechtigungen in Ihrem Manifest aktivieren, um einige zusätzliche Funktionen zu aktivieren:
- Zugriff auf groben Standort
- Zugriff auf die Fine Location
- Auf zusätzliche Befehle für den Standort zugreifen
- Zugriff auf Mock Location
- Zugriff auf den Netzwerkstatus
- Zugang Wifi State
- Internet
Die letzten beiden Berechtigungen sind jedoch erforderlich, um Maps-Daten herunterzuladen. Lesen Sie über Android-Berechtigungen , um mehr zu erfahren. Das sind alle Schritte für die Android-Konfiguration.
Hinweis : Wenn Sie Ihre App auf einem Android-Simulator ausführen möchten, müssen Sie die Google Play-Dienste darauf installieren. Befolgen Sie dieses Tutorial , um Play Services auf dem Xamarin Android Player zu installieren. Wenn Sie nach der Play Store-Installation kein Update für Google Play-Dienste finden, können Sie es direkt von Ihrer App aus aktualisieren, wo Sie von Kartendiensten abhängig sind
Hinzufügen einer Karte
Das Hinzufügen einer Kartenansicht zu Ihrem Crossplatform-Projekt ist recht einfach. Hier ist ein Beispiel, wie das geht (Ich verwende ein PCL-Projekt ohne XAML).
PCL-Projekt
Datei MapExample.cs
public class App : Application
{
public App()
{
var map = new Map();
map.IsShowingUser = true;
var rootPage = new ContentPage();
rootPage.Content = map;
MainPage = rootPage;
}
}
Das ist alles. Wenn Sie Ihre App jetzt auf iOS oder Android ausführen, wird die Kartenansicht angezeigt: