Udostępnij za pośrednictwem


Uruchamianie natywnej aplikacji mapy z Xamarin.Forms

Natywna aplikacja mapy na każdej platformie może zostać uruchomiona z poziomu aplikacji przez klasę Xamarin.FormsXamarin.EssentialsLauncher . Ta klasa umożliwia aplikacji otwieranie innej aplikacji za pomocą niestandardowego schematu identyfikatora URI. Funkcję uruchamiania można wywołać za OpenAsync pomocą metody , przekazując string argument lub Uri reprezentujący niestandardowy schemat adresów URL do otwarcia. Aby uzyskać więcej informacji na temat Xamarin.Essentialsprogramu , zobacz Xamarin.Essentials.

Uwaga

Alternatywą dla używania Xamarin.EssentialsLauncher klasy jest użycie jej Map klasy. Aby uzyskać więcej informacji, zobacz Xamarin.Essentials: Map.

Aplikacja mapy na każdej platformie używa unikatowego niestandardowego schematu identyfikatora URI. Aby uzyskać informacje na temat schematu identyfikatora URI map w systemie iOS, zobacz Map Links on developer.apple.com (Linki mapy w developer.apple.com). Aby uzyskać informacje na temat schematu identyfikatora URI map w systemie Android, zobacz przewodnik dla deweloperów Mapy i intencje google Mapy dla systemu Android w developers.android.com. Aby uzyskać informacje na temat schematu identyfikatora URI map w platforma uniwersalna systemu Windows (UWP), zobacz Uruchamianie aplikacji Mapy Windows.

Uruchamianie aplikacji mapy w określonej lokalizacji

Lokalizację w natywnej aplikacji mapy można otworzyć, dodając odpowiednie parametry zapytania do niestandardowego schematu identyfikatora URI dla każdej aplikacji mapy:

if (Device.RuntimePlatform == Device.iOS)
{
    // https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
    await Launcher.OpenAsync("http://maps.apple.com/?q=394+Pacific+Ave+San+Francisco+CA");
}
else if (Device.RuntimePlatform == Device.Android)
{
    // open the maps app directly
    await Launcher.OpenAsync("geo:0,0?q=394+Pacific+Ave+San+Francisco+CA");
}
else if (Device.RuntimePlatform == Device.UWP)
{
    await Launcher.OpenAsync("bingmaps:?where=394 Pacific Ave San Francisco CA");
}

Ten przykładowy kod powoduje uruchomienie natywnej aplikacji mapy na każdej platformie z mapą wyśrodkowaną na pinezkę reprezentującą określoną lokalizację:

Zrzut ekranu przedstawiający natywną aplikację mapy w systemach iOS i Android

Uruchamianie aplikacji mapy z kierunkami

Aplikację map natywnych można uruchomić, wyświetlając wskazówki, dodając odpowiednie parametry zapytania do niestandardowego schematu identyfikatora URI dla każdej aplikacji mapy:

if (Device.RuntimePlatform == Device.iOS)
{
    // https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
    await Launcher.OpenAsync("http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino");
}
else if (Device.RuntimePlatform == Device.Android)
{
    // opens the 'task chooser' so the user can pick Maps, Chrome or other mapping app
    await Launcher.OpenAsync("http://maps.google.com/?daddr=San+Francisco,+CA&saddr=Mountain+View");
}
else if (Device.RuntimePlatform == Device.UWP)
{
    await Launcher.OpenAsync("bingmaps:?rtp=adr.394 Pacific Ave San Francisco CA~adr.One Microsoft Way Redmond WA 98052");
}

Ten przykładowy kod powoduje uruchomienie natywnej aplikacji mapy na każdej platformie z mapą wyśrodkowaną na trasie między określonymi lokalizacjami:

Zrzut ekranu przedstawiający trasę natywnej aplikacji mapy w systemach iOS i Android