Otevření aplikace mapy
Tento článek popisuje, jak můžete použít rozhraní .NET Multi-Platform App UI (.NET MAUI). IMap Toto rozhraní umožňuje aplikaci otevřít nainstalovanou mapovou aplikaci na konkrétní místo nebo značku místa.
Výchozí implementace IMap
rozhraní je k dispozici prostřednictvím Map.Default vlastnosti. Rozhraní IMap
i Map
třída jsou obsaženy v Microsoft.Maui.ApplicationModel
oboru názvů.
Začínáme
Pro přístup k funkcím prohlížeče se vyžaduje následující nastavení specifické pro platformu.
Android používá schéma identifikátoru geo:
URI ke spuštění aplikace mapy na zařízení. To může uživatele vyzvat k výběru z existující aplikace, která podporuje toto schéma identifikátoru URI. Google Mapy podporuje toto schéma.
V souboru Platforms/Android/AndroidManifest.xml přidejte do manifest
uzlu následující queries/intent
uzly:
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="geo"/>
</intent>
</queries>
Použití mapy
Funkce mapování funguje voláním IMap.OpenAsync metody a předáním instance Location nebo Placemark typu. Následující příklad otevře nainstalovanou aplikaci mapy v určitém umístění GPS:
public async Task NavigateToBuilding25()
{
var location = new Location(47.645160, -122.1306032);
var options = new MapLaunchOptions { Name = "Microsoft Building 25" };
try
{
await Map.Default.OpenAsync(location, options);
}
catch (Exception ex)
{
// No map application available to open
}
}
Tip
Placemark
Typy Location
jsou v Microsoft.Maui.Devices.Sensors
oboru názvů.
Když k otevření mapy použijete příkaz a Placemark
budete potřebovat další informace. Informace pomáhají mapové aplikaci hledat místo, které hledáte. Jsou vyžadovány následující informace:
public async Task NavigateToBuilding()
{
var placemark = new Placemark
{
CountryName = "United States",
AdminArea = "WA",
Thoroughfare = "Microsoft Building 25",
Locality = "Redmond"
};
var options = new MapLaunchOptions { Name = "Microsoft Building 25" };
try
{
await Map.Default.OpenAsync(placemark, options);
}
catch (Exception ex)
{
// No map application available to open or placemark can not be located
}
}
Testování, jestli se mapa otevřela
Vždy existuje možnost, že se otevření aplikace mapy nezdařilo, například když aplikace mapy není nebo vaše aplikace nemá správná oprávnění. Pro každé IMap.OpenAsync přetížení metody existuje odpovídající metoda, která vrátí logickou IMap.TryOpenAsync hodnotu označující, že aplikace mapy byla úspěšně otevřena. Následující příklad kódu používá metodu TryOpenAsync
k otevření mapy:
var location = new Location(47.645160, -122.1306032);
var options = new MapLaunchOptions { Name = "Microsoft Building 25" };
if (await Map.Default.TryOpenAsync(location, options) == false)
{
// Map failed to open
}
Metody rozšíření
Pokud Microsoft.Maui.Devices.Sensors
se obor názvů naimportuje, který automaticky provede nový projekt .NET MAUI, můžete k otevření mapy použít předdefinovanou metodu OpenMapsAsync
rozšíření:
public async Task NavigateToBuildingByPlacemark()
{
var placemark = new Placemark
{
CountryName = "United States",
AdminArea = "WA",
Thoroughfare = "Microsoft Building 25",
Locality = "Redmond"
};
var options = new MapLaunchOptions { Name = "Microsoft Building 25" };
try
{
await placemark.OpenMapsAsync(options);
}
catch (Exception ex)
{
// No map application available to open or placemark can not be located
}
}
Přidání navigace
Když mapu otevřete, můžete vypočítat trasu z aktuálního umístění zařízení do zadaného umístění. MapLaunchOptions Předejte typ Map.OpenAsync
metodě a určete režim navigace. Následující příklad otevře aplikaci mapy a určuje režim navigace v jízdě:
public async Task DriveToBuilding25()
{
var location = new Location(47.645160, -122.1306032);
var options = new MapLaunchOptions { Name = "Microsoft Building 25",
NavigationMode = NavigationMode.Driving };
try
{
await Map.Default.OpenAsync(location, options);
}
catch (Exception ex)
{
// No map application available to open
}
}
Rozdíly mezi platformami
Tato část popisuje rozdíly specifické pro platformu s rozhraním API maps.
NavigationMode
podporuje Bicycling, Driving, and Walking.