Xamarin.Forms
Praca z mapami
Szukaj…
Uwagi
Jeśli zamierzasz uruchomić swój projekt na innym komputerze, musisz wygenerować dla niego nowy klucz API, ponieważ odciski palców SHA-1 nie będą pasować do różnych maszyn kompilacyjnych.
Możesz zapoznać się z projektem opisanym w przykładzie Dodawanie mapy w Xamarin.Forms tutaj
Dodawanie mapy w Xamarin.Forms (Xamarin Studio)
Możesz po prostu używać natywnych interfejsów API map na każdej platformie z Xamarin Forms. Wystarczy pobrać pakiet Xamarin.Forms.Maps z programu nuget i zainstalować go w każdym projekcie (w tym w projekcie PCL).
Inicjalizacja map
Przede wszystkim musisz dodać ten kod do projektów specyficznych dla platformy. Aby to zrobić, musisz dodać wywołanie metody Xamarin.FormsMaps.Init
, jak w poniższych przykładach.
projekt iOS
Plik 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);
}
}
Projekt na Androida
Plik 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());
}
}
Konfiguracja platformy
Przed wyświetleniem mapy wymagane są dodatkowe kroki konfiguracji na niektórych platformach.
projekt iOS
W projekcie iOS wystarczy dodać 2 wpisy do pliku Info.plist :
-
NSLocationWhenInUseUsageDescription
ciąg z wartościąWe are using your location
-
NSLocationAlwaysUsageDescription
ciąg z wartościąCan we use your location
Projekt na Androida
Aby korzystać z Google Maps, musisz wygenerować klucz API i dodać go do swojego projektu. Postępuj zgodnie z instrukcjami poniżej, aby uzyskać ten klucz:
(Opcjonalnie) Znajdź lokalizację narzędzia keytool (domyślnie:
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
)(Opcjonalnie) Otwórz terminal i przejdź do lokalizacji klucza:
cd /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
Uruchom następującą komendę keytool:
keytool -list -v -keystore "/Users/[USERNAME]/.local/share/Xamarin/Mono for Android/debug.keystore" -alias androiddebugkey -storepass android -keypass android
Gdzie [USERNAME] jest oczywiście Twoim bieżącym folderem użytkownika. Powinieneś otrzymać coś podobnego do tego w danych wyjściowych:
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
Wszystko, czego potrzebujemy w tym wydruku, to odcisk palca certyfikatu SHA1. W naszym przypadku jest to równe:
57:A1:E5:23:CE:49:2F:17:8D:8A:EA:87:65:44:C1:DD:1C:DA:51:95
Skopiuj lub zapisz gdzieś ten klucz. Będziemy go później potrzebować.
Przejdź do Google Developers Console , w naszym przypadku musimy dodać Google Maps Android API , więc wybierz:
Google poprosi Cię o utworzenie projektu w celu włączenia interfejsów API, postępuj zgodnie z tą wskazówką i utwórz projekt:
Włącz interfejs Google Maps API dla swojego projektu: Po włączeniu interfejsu API musisz utworzyć poświadczenia dla swojej aplikacji. Postępuj zgodnie z tą wskazówką:
Na następnej stronie wybierz platformę Android, stuknij „Jakie dane uwierzytelniające są potrzebne?” przycisk, utwórz nazwę dla klucza API, dotknij „Dodaj nazwę pakietu i odcisk palca”, wprowadź nazwę pakietu i swój odcisk palca SHA1 z kroku 4, a na koniec utwórz klucz API: Aby znaleźć nazwę pakietu w Xamarin Studio, przejdź do rozwiązania .Droid -> AndroidManifest.xml:
Po utworzeniu skopiuj nowy klucz API (nie zapomnij nacisnąć przycisku „Gotowe” po) i wklej go do pliku
AndroidManifest.xml
: Plik 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>
Musisz również włączyć niektóre uprawnienia w swoim manifeście, aby włączyć dodatkowe funkcje:
- Uzyskaj dostęp do zgrubnej lokalizacji
- Dostęp do dokładnej lokalizacji
- Uzyskaj dostęp do dodatkowych poleceń
- Uzyskaj dostęp do fałszywej lokalizacji
- Uzyskaj dostęp do stanu sieci
- Dostęp do stanu Wi-Fi
- Internet
Chociaż do pobrania danych map wymagane są dwa ostatnie uprawnienia. Przeczytaj o uprawnieniach Androida, aby dowiedzieć się więcej. To wszystkie kroki w konfiguracji Androida.
Uwaga : jeśli chcesz uruchomić aplikację na symulatorze Androida, musisz zainstalować na nim Usługi Google Play. Postępuj zgodnie z tym samouczkiem, aby zainstalować Usługi Play na Xamarin Android Player. Jeśli nie możesz znaleźć aktualizacji usług Google Play po instalacji sklepu Play, możesz zaktualizować ją bezpośrednio z aplikacji, w której masz zależność od usług map
Dodawanie mapy
Dodawanie widoku mapy do projektu w formie siatki krzyżowej jest dość proste. Oto przykład, jak możesz to zrobić (używam projektu PCL bez XAML).
Projekt PCL
Plik MapExample.cs
public class App : Application
{
public App()
{
var map = new Map();
map.IsShowingUser = true;
var rootPage = new ContentPage();
rootPage.Content = map;
MainPage = rootPage;
}
}
To wszystko. Teraz, jeśli uruchomisz aplikację na iOS lub Android, wyświetli się widok mapy: