지도 앱 열기
이 문서에서는 .NET 다중 플랫폼 앱 UI(.NET MAUI) IMap 인터페이스를 사용하는 방법을 설명합니다. 이 인터페이스를 사용하면 애플리케이션이 설치된 맵 애플리케이션을 특정 위치에 열거나 표시할 수 있습니다.
인터페이스의 IMap
기본 구현은 속성을 통해 Map.Default 사용할 수 있습니다. IMap
인터페이스와 Map
클래스는 모두 네임스페이스에 Microsoft.Maui.ApplicationModel
포함됩니다.
시작하기
브라우저 기능에 액세스하려면 다음 플랫폼별 설정이 필요합니다.
Android는 geo:
URI 체계를 사용하여 디바이스에서 지도 애플리케이션을 시작합니다. 이 경우 사용자에게 이 URI 체계를 지원하는 기존 앱에서 선택하라는 메시지가 표시 될 수 있습니다. Google 지도 이 체계를 지원합니다.
Platforms/Android/AndroidManifest.xml 파일에서 노드에 다음 queries/intent
노드를 manifest
추가합니다.
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="geo"/>
</intent>
</queries>
맵 사용
맵 기능은 메서드를 IMap.OpenAsync 호출하고 인스턴스 또는 Placemark 형식을 Location 전달하는 방식으로 작동합니다. 다음 예제에서는 특정 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
}
}
팁
및 Placemark
형식은 Location
네임스페이스에 Microsoft.Maui.Devices.Sensors
있습니다.
맵을 Placemark
열 때는 자세한 정보가 필요합니다. 이 정보는 맵 앱이 원하는 위치를 검색하는 데 도움이 됩니다. 다음과 같은 정보가 필요합니다.
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
}
}
맵이 열렸는지 테스트
지도 앱이 없거나 앱에 올바른 권한이 없는 경우와 같이 지도 앱을 열지 못할 가능성이 항상 있습니다. 각 IMap.OpenAsync 메서드 오버로드에 대해 지도 앱이 성공적으로 열렸음을 나타내는 부울 값을 반환하는 해당 IMap.TryOpenAsync 메서드가 있습니다. 다음 코드 예제에서는 이 메서드를 TryOpenAsync
사용하여 맵을 엽니다.
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
}
확장 메서드
새 .NET MAUI 프로젝트가 자동으로 수행하는 네임스페이스를 가져오는 한 Microsoft.Maui.Devices.Sensors
기본 제공 확장 메서드 OpenMapsAsync
를 사용하여 맵을 열 수 있습니다.
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
}
}
탐색 추가
맵을 열면 디바이스의 현재 위치에서 지정된 위치로의 경로를 계산할 수 있습니다. MapLaunchOptions 탐색 모드를 Map.OpenAsync
지정하여 메서드에 형식을 전달합니다. 다음 예제에서는 지도 앱을 열고 운전 탐색 모드를 지정합니다.
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
}
}
플랫폼 간 차이점
이 섹션에서는 지도 API와의 플랫폼별 차이점에 대해 설명합니다.
NavigationMode
에서 자전거 타기, 자가용, 걷기를 지원합니다.
.NET MAUI