Xamarin.Forms
Arbeta med kartor
Sök…
Anmärkningar
Om du ska köra ditt projekt på en annan dator måste du generera en ny API-nyckel för den, eftersom SHA-1-fingeravtryck inte matchar för olika byggmaskiner.
Du kan utforska projektet, beskrivet i exempel Lägga till en karta i Xamarin.Forms här
Lägga till en karta i Xamarin.Forms (Xamarin Studio)
Du kan helt enkelt använda de ursprungliga kart-API: erna på varje plattform med Xamarin Forms. Allt du behöver är att ladda ner Xamarin.Forms.Maps- paketet från nuget och installera det till varje projekt (inklusive PCL-projektet).
Initialisering av kartor
Först av allt måste du lägga till den här koden till dina plattformspecifika projekt. För att göra detta måste du lägga till metoden Xamarin.FormsMaps.Init
, som i exemplen nedan.
iOS-projekt
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);
}
}
Android-projekt
Fil 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());
}
}
Plattformskonfiguration
Ytterligare konfigurationssteg krävs på vissa plattformar innan kartan visas.
iOS-projekt
I iOS-projekt måste du bara lägga till två poster i din Info.plist- fil:
-
NSLocationWhenInUseUsageDescription
sträng med värdeWe are using your location
-
NSLocationAlwaysUsageDescription
sträng med värdeCan we use your location
Android-projekt
För att använda Google Maps måste du generera en API-nyckel och lägga till den i ditt projekt. Följ instruktionerna nedan för att få den här nyckeln:
(Valfritt) Hitta var din plats för verktyg för verktygsverktyg (standard är /
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
)(Valfritt) Öppna terminalen och gå till din Keytool-plats:
cd /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
Kör följande keytool-kommando:
keytool -list -v -keystore "/Users/[USERNAME]/.local/share/Xamarin/Mono for Android/debug.keystore" -alias androiddebugkey -storepass android -keypass android
Där [USERNAME] är uppenbarligen din nuvarande användarmapp. Du bör få något liknande till detta i utgången:
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
Allt vi behöver i denna utgång är SHA1-certifikatets fingeravtryck. I vårt fall är det lika med detta:
57:A1:E5:23:CE:49:2F:17:8D:8A:EA:87:65:44:C1:DD:1C:DA:51:95
Kopiera eller spara någonstans den här nyckeln. Vi kommer att behöva det senare.
Gå till Google Developers Console , i vårt fall måste vi lägga till Google Maps Android API , så välj det:
Google kommer att be dig skapa ett projekt för att aktivera API: er, följ detta tips och skapa projektet:
Aktivera Google Maps API för ditt projekt: När du har aktiverat api måste du skapa referenser för din app. Följ detta tips:
Välj Android-plattformen på nästa sida, klicka på "Vilka referenser behöver jag?" -knappen, skapa ett namn för din API-nyckel, tryck på "Lägg till paketnamn och fingeravtryck", ange ditt paketnamn och ditt SHA1-fingeravtryck från steg 4 och skapa slutligen en API-nyckel: För att hitta ditt paketnamn i Xamarin Studio, gå till din .Droid-lösning -> AndroidManifest.xml:
Efter skapandet kopierar du den nya API-nyckeln (glöm inte att trycka på "Klart" -knappen efter) och klistra in den i din
AndroidManifest.xml
fil: Filen 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>
Du måste också aktivera vissa behörigheter i ditt manifest för att aktivera några ytterligare funktioner:
- Få åtkomst till grov plats
- Få tillgång till fin plats
- Tillgång till platskommandon
- Få åtkomst till hålig plats
- Access Network State
- Få åtkomst till Wifi State
- Internet
De två senaste behörigheterna krävs dock för att ladda ner kartdata. Läs om Android-behörigheter om du vill veta mer. Det är alla stegen för Android-konfiguration.
Obs! Om du vill köra din app på Android-simulator måste du installera Google Play Services på den. Följ denna handledning för att installera Play Services på Xamarin Android Player. Om du inte hittar uppdatering av google play-tjänster efter installationen av Play Store kan du uppdatera den direkt från din app, där du är beroende av karttjänster
Lägga till en karta
Att lägga till kartvy till ditt crossplatform-projekt är ganska enkelt. Här är ett exempel på hur du kan göra det (jag använder PCL-projekt utan XAML).
PCL-projekt
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;
}
}
Det är allt. Om du nu kör din app på iOS eller Android visar den kartvyn: