Aracılığıyla paylaş


Harita

Örneğe göz atın. Örneğe göz atın

.NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) Map denetimi, haritaları görüntülemek ve buna ek açıklama eklemek için platformlar arası bir görünümdür. Denetim Map her platformda yerel harita denetimini kullanır ve Microsoft.Maui.Controls.Haritalar tarafından sağlanır NuGet paketi.

Önemli

Map WinUI'de harita denetiminin olmaması nedeniyle denetim Windows'ta desteklenmez. Ancak CommunityToolkit.Maui.Haritalar NuGet paketi, Windows üzerinde bir WebView aracılığıyla Bing Haritalar erişimi sağlar. Daha fazla bilgi için bkz . Başlarken.

Ayarlama

Denetim, Map her platformda yerel harita denetimini kullanır. Bu, kullanıcılar için hızlı ve tanıdık bir harita deneyimi sağlar, ancak her platform API gereksinimlerine uymak için bazı yapılandırma adımları gerektiği anlamına gelir.

Harita başlatma

Denetim Map Microsoft.Maui.Controls.Haritalar tarafından sağlanır .NET MAUI uygulama projenize eklenmesi gereken NuGet paketi.

NuGet paketini yükledikten sonra, sınıfınızın yöntemindeki nesnesinde CreateMauiAppMauiAppBuilder yöntemini çağırarak UseMauiMap uygulamanızda MauiProgram başlatılmalıdır:

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
            })
            .UseMauiMaps();

        return builder.Build();
    }
}

NuGet paketi eklendikten ve başlatıldıktan sonra API'ler Map projenizde kullanılabilir.

Platform yapılandırması

Harita görüntülenmeden önce Android'de ek yapılandırma gerekir. Ayrıca iOS, Android ve Mac Catalyst'te kullanıcının konumuna erişmek için uygulamanıza konum izinleri verilmesi gerekir.

iOS ve Mac Catalyst

iOS ve Mac Catalyst'te haritayı görüntülemek ve bunlarla etkileşime geçin, ek yapılandırma gerektirmez. Ancak, konum hizmetlerine erişmek için Info.plist dosyasında gerekli konum hizmetleri isteklerini ayarlamanız gerekir. Bunlar genellikle aşağıdakilerden biri veya daha fazlası olur:

Daha fazla bilgi için bkz . developer.apple.com üzerinde istenecek konum hizmetleri yetkilendirmesini seçme.

Info.plist dosyasında bu anahtarların XML gösterimi aşağıda gösterilmiştir. Uygulamanızın string konum bilgilerini nasıl kullandığını yansıtacak şekilde değerleri güncelleştirmeniz gerekir:

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Can we use your location at all times?</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Can we use your location when your app is being used?</string>

Ardından uygulamanız kullanıcının konumuna erişmeye çalıştığında ve erişim istediğinde bir istem görüntülenir:

iOS'ta konum izni isteğinin ekran görüntüsü.

Android

Android'de harita görüntüleme ve haritayla etkileşim kurma yapılandırma işlemi şu şekildedir:

  1. Bir Google Haritalar API anahtarı alın ve uygulama bildiriminize ekleyin.
  2. Bildirimde Google Play hizmetleri sürüm numarasını belirtin.
  3. [isteğe bağlı] Bildirimde konum izinlerini belirtin.
  4. [isteğe bağlı] Bildirimde WRITE_EXTERNAL_STORAGE iznini belirtin.
Google Haritalar API anahtarı alma

Android'de Map denetimi kullanmak için, denetimin Android'e bağlı olduğu Google Haritalar SDK'sıMap tarafından kullanılacak bir API anahtarı oluşturmanız gerekir. Bunu yapmak için Google Bulut Konsolu'nda ayarlama ve developers.google.com'de API Anahtarlarını Kullanma başlığındaki yönergeleri izleyin.

Bir API anahtarı aldıktan sonra, meta verilerin değeri com.google.android.geo.API_KEY olarak belirterek Platformlar/Android/AndroidManifest.xml dosyanızın öğesi içine eklenmelidir<application>:

<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true">
  <meta-data android:name="com.google.android.geo.API_KEY" android:value="PASTE-YOUR-API-KEY-HERE" />
</application>

Bu, API anahtarını bildirime ekler. Geçerli bir API anahtarı Map olmadan denetim boş bir kılavuz görüntüler.

Not

com.google.android.geo.API_KEY API anahtarı için önerilen meta veri adıdır. Bu ada sahip bir anahtar, Android'de birden çok Google Haritalar tabanlı API'de kimlik doğrulaması yapmak için kullanılabilir. Geriye dönük uyumluluk com.google.android.maps.v2.API_KEY için meta veri adı kullanılabilir, ancak yalnızca Android Haritalar API v2'de kimlik doğrulamasına izin verir. Bir uygulama API anahtarı meta veri adlarından yalnızca birini belirtebilir.

Google Play hizmetleri sürüm numarasını belirtin

AndroidManifest.xml öğesinin <application>içine aşağıdaki bildirimi ekleyin:

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

Bu, uygulamanın derlendiği Google Play hizmetlerinin sürümünü bildirime ekler.

Konum izinlerini belirtme

Uygulamanızın kullanıcının konumuna erişmesi gerekiyorsa bildirime öğesinin ACCESS_COARSE_LOCATION alt öğesi <manifest> olarak veya ACCESS_FINE_LOCATION izinlerini (veya her ikisini birden) ekleyerek izin istemeniz gerekir:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  ...
  <!-- Required to access the user's location -->
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>

İzin, ACCESS_COARSE_LOCATION API'nin cihazın konumunu belirlemek için WiFi veya mobil verileri ya da her ikisini birden kullanmasına izin verir. İzinler, API'nin ACCESS_FINE_LOCATION mümkün olduğunca hassas bir konum belirlemek için Genel Konumlandırma Sistemi (GPS), WiFi veya mobil verileri kullanmasına olanak tanır.

Ardından uygulamanız kullanıcının konumuna erişmeye çalıştığında ve erişim istediğinde bir istem görüntülenir:

Android'de konum izni isteğinin ekran görüntüsü.

Alternatif olarak, bu izinler Visual Studio'nun Android bildirim düzenleyicisinde etkinleştirilebilir.

WRITE_EXTERNAL_STORAGE iznini belirtin

Uygulamanız API 22 veya daha düşük bir sürümünü hedeflediyse bildirime, öğesinin WRITE_EXTERNAL_STORAGE alt öğesi <manifest> olarak izni eklemek gerekir:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Uygulamanız API 23 veya üzerini hedeflediyse bu gerekli değildir.

Harita denetimi

sınıfı, Map eşleme görünümünü ve davranışını denetleen aşağıdaki özellikleri tanımlar:

  • IsShowingUsertüründe bool, eşlemenin kullanıcının geçerli konumunu gösterip göstermediğini gösterir.
  • ItemsSource, türündedir IEnumerableve görüntülenecek pin öğelerinin IEnumerable koleksiyonunu belirtir.
  • ItemTemplate, türündedir DataTemplateve görüntülenen raptiye koleksiyonundaki her öğeye uygulanacağını belirtir DataTemplate .
  • ItemTemplateSelector, türündedir DataTemplateSelectorve çalışma zamanında pin seçmek DataTemplate için kullanılacak olanı belirtirDataTemplateSelector.
  • IsScrollEnabled, türündeki boolharitanın kaydırmasına izin verilip verilmeyeceğini belirler.
  • IsTrafficEnabledtüründe bool, trafik verilerinin haritada yer paylaşımlı olup olmadığını gösterir.
  • IsZoomEnabled, türündeki boolharitanın yakınlaştırmasına izin verilip verilmeyeceğini belirler.
  • MapElementsIList<MapElement>türünde, eşlemdeki çokgenler ve çok çizgili öğeler gibi öğelerin listesini temsil eder.
  • MapTypetüründe MapType, haritanın görüntüleme stilini gösterir.
  • Pins, türündeki IList<Pin>, haritadaki raptiyelerin listesini temsil eder.
  • VisibleRegiontüründe MapSpan, haritanın şu anda görüntülenen bölgesini döndürür.

, Pinsve VisibleRegion özellikleri dışında MapElementsbu özellikler nesneler tarafından BindableProperty desteklenir ve bu da veri bağlamalarının hedefleri olabileceği anlamına gelir.

Map sınıfı, haritaya dokunulduğunda tetiklenen bir MapClicked olayı da tanımlar. Olaya MapClickedEventArgs eşlik eden nesnenin türünde Locationadlı Locationtek bir özelliği vardır. Olay tetiklendiğinde özelliği, Location dokunulduğu harita konumuna ayarlanır. Sınıf hakkında Location bilgi için bkz . Konum ve uzaklık.

, ItemTemplateve özellikleri hakkında ItemsSourcebilgi için bkz. Pin koleksiyonunuItemTemplateSelector görüntüleme.

Harita görüntüleme

bir Map düzen veya sayfaya ekleyerek görüntülenebilir:

<ContentPage ...
             xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps">
    <maps:Map x:Name="map" />
</ContentPage>

Eşdeğer C# kodu:

using Map = Microsoft.Maui.Controls.Maps.Map;

namespace WorkingWithMaps
{
    public class MapTypesPageCode : ContentPage
    {
        public MapTypesPageCode()
        {
            Map map = new Map();
            Content = map;
        }
    }
}

Bu örnek, haritayı Maui, Hawaii'de ortalayan varsayılan Map oluşturucuyu çağırır:

Varsayılan konuma sahip harita denetiminin ekran görüntüsü.

Alternatif olarak, MapSpan bir bağımsız değişken, yüklendiğinde haritanın orta noktasını ve yakınlaştırma düzeyini ayarlamak için bir Map oluşturucuya geçirilebilir. Daha fazla bilgi için bkz . Haritada belirli bir konumu görüntüleme.

Önemli

.NET MAUI'nin iki Map türü vardır: Microsoft.Maui.Controls.Maps.Map ve Microsoft.Maui.ApplicationModel.Map. Microsoft.Maui.ApplicationModel Ad alanı .NET MAUI'nin global using yönergelerinden biri olduğundan, koddaki Microsoft.Maui.Controls.Maps.Map denetimi kullanırken kullanımınızı tam olarak nitelemeniz Map veya bir diğer ad kullanmanız gerekir.

Eşleme türleri

özelliği, Map.MapType eşlemenin görüntüleme stilini tanımlamak için bir MapType numaralandırma üyesine ayarlanabilir. Numaralandırma MapType aşağıdaki üyeleri tanımlar:

  • Street bir sokak haritasının görüntüleneceğini belirtir.
  • Satellite uydu görüntüsü içeren bir haritanın görüntüleneceğini belirtir.
  • Hybrid sokak ve uydu verilerini birleştiren bir haritanın görüntüleneceğini belirtir.

Varsayılan olarak, Map özellik tanımlanmamışsa MapType bir sokak haritası görüntülenir. Alternatif olarak, MapType özelliği numaralandırma üyelerinden MapType birine ayarlanabilir:

<maps:Map MapType="Satellite" />

Eşdeğer C# kodu:

Map map = new Map
{
    MapType = MapType.Satellite
};

Haritada belirli bir konumu görüntüleme

Bir eşleme yüklendiğinde görüntülenecek eşlemenin bölgesi, oluşturucuya Map bir MapSpan bağımsız değişken geçirilerek ayarlanabilir:

<ContentPage ...
             xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps"
             xmlns:sensors="clr-namespace:Microsoft.Maui.Devices.Sensors;assembly=Microsoft.Maui.Essentials">
    <maps:Map>
        <x:Arguments>
            <maps:MapSpan>
                <x:Arguments>
                    <sensors:Location>
                        <x:Arguments>
                            <x:Double>36.9628066</x:Double>
                            <x:Double>-122.0194722</x:Double>
                        </x:Arguments>
                    </sensors:Location>
                    <x:Double>0.01</x:Double>
                    <x:Double>0.01</x:Double>
                </x:Arguments>
            </maps:MapSpan>
        </x:Arguments>
    </maps:Map>
</ContentPage>

Eşdeğer C# kodu:

using Microsoft.Maui.Maps;
using Map = Microsoft.Maui.Controls.Maps.Map;
...

Location location = new Location(36.9628066, -122.0194722);
MapSpan mapSpan = new MapSpan(location, 0.01, 0.01);
Map map = new Map(mapSpan);

Bu örnek, nesnesi tarafından MapSpan belirtilen bölgeyi gösteren bir Map nesne oluşturur. MapSpan Nesne, bir Location nesne tarafından temsil edilen enlem ve boylam üzerinde ortalanır ve 0,01 enlem ve 0,01 boylam derecelerine yayılır. Sınıf hakkında Location bilgi için bkz . Konum ve uzaklık. XAML'de bağımsız değişkenleri geçirme hakkında bilgi için bkz . XAML'de bağımsız değişkenleri geçirme.

Sonuç, harita görüntülendiğinde belirli bir konumda ortalanır ve belirli bir enlem ve boylam derecesine yayılır:

Belirtilen konuma sahip harita denetiminin ekran görüntüsü.

MapSpan nesnesi oluşturma

Nesne oluşturmak MapSpan için bir dizi yaklaşım vardır. Ortak bir yaklaşım, oluşturucuya gerekli bağımsız değişkenleri sağlamaktır MapSpan . Bunlar bir nesneyle temsil edilen enlem Location ve boylam ile double tarafından MapSpanyayılan enlem ve boylam derecelerini temsil eden değerlerdir. Sınıf hakkında Location bilgi için bkz . Konum ve uzaklık.

Alternatif olarak, sınıfında yeni MapSpan nesneler döndüren üç yöntem MapSpan vardır:

  1. ClampLatitudeyöntemin sınıf örneğiyle aynı olan bir MapSpan değerini ve ve south bağımsız değişkenleri tarafından tanımlanan yarıçapı northLongitudeDegrees döndürür.
  2. FromCenterAndRadiusve Distance bağımsız değişkenleri tarafından Location tanımlanan bir MapSpan döndürür.
  3. WithZoomMapSpan yöntemin sınıf örneğiyle aynı merkezi olan, ancak yarıçapı double bağımsız değişkeniyle çarpılmış olan bir döndürür.

Yapı hakkında Distance bilgi için bkz . Konum ve uzaklık.

Oluşturulduktan MapSpan sonra, bu özellik hakkındaki verileri almak için aşağıdaki özelliklere erişilebilir:

  • Center, türüne Locationgöre, öğesinin coğrafi merkezindeki MapSpankonumu temsil eder.
  • LatitudeDegrees, türündeki double, tarafından yayılan enlem derecesini MapSpantemsil eder.
  • LongitudeDegrees, türündeki doubleve tarafından yayılan boylam derecelerini MapSpantemsil eder.
  • Radius, türündeki Distanceyarıçapı MapSpan temsil eder.

Haritayı taşıma

Bir Map.MoveToRegion haritanın konumunu ve yakınlaştırma düzeyini değiştirmek için yöntemi çağrılabilir. Bu yöntem, görüntülenecek haritanın bölgesini ve yakınlaştırma düzeyini tanımlayan bir MapSpan bağımsız değişken kabul eder.

Aşağıdaki kod, görüntülenen bölgeyi haritada taşıma örneğini gösterir:

using Microsoft.Maui.Maps;
using Microsoft.Maui.Controls.Maps.Map;
...

MapSpan mapSpan = MapSpan.FromCenterAndRadius(location, Distance.FromKilometers(0.444));
map.MoveToRegion(mapSpan);

Haritayı yakınlaştırma

Bir öğesinin Map yakınlaştırma düzeyi, konumunu değiştirmeden değiştirilebilir. Bu, eşleme kullanıcı arabirimi kullanılarak veya yöntemini bağımsız değişken olarak Location geçerli konumu kullanan bir MapSpan bağımsız değişkenle çağırarak MoveToRegion program aracılığıyla gerçekleştirilebilir:

double zoomLevel = 0.5;
double latlongDegrees = 360 / (Math.Pow(2, zoomLevel));
if (map.VisibleRegion != null)
{
    map.MoveToRegion(new MapSpan(map.VisibleRegion.Center, latlongDegrees, latlongDegrees));
}

Bu örnekte yöntemi, MoveToRegion özelliği aracılığıyla Map.VisibleRegion haritanın geçerli konumunu ve yakınlaştırma düzeyini enlem ve boylam dereceleri olarak belirten bir MapSpan bağımsız değişkenle çağrılır. Genel sonuç, haritanın yakınlaştırma düzeyinin değiştirilmesi ancak konumunun değişmemiş olmasıdır. Harita üzerinde yakınlaştırma uygulamak için alternatif bir yaklaşım, yakınlaştırma faktörünü MapSpan.WithZoom denetlemek için yöntemini kullanmaktır.

Önemli

Harita kullanıcı arabirimi aracılığıyla veya program aracılığıyla bir haritayı yakınlaştırmak için özelliğinin Map.IsZoomEnabled olması truegerekir. Bu özellik hakkında daha fazla bilgi için bkz . Yakınlaştırmayı devre dışı bırakma.

Harita davranışını özelleştirme

bir öğesinin Map davranışı, bazı özellikleri ayarlanarak ve olayı işlenerek MapClicked özelleştirilebilir.

Not

ek eşleme davranışı özelleştirmesi, işleyicisi özelleştirilerek elde edilebilir. Daha fazla bilgi için bkz . denetimleri işleyicilerle özelleştirme.

Trafik verilerini gösterme

Map sınıfı türünde boolbir IsTrafficEnabled özellik tanımlar. Varsayılan olarak bu özellik, trafik verilerinin haritada yer paylaşımlı olmayacağına işaret eden özelliğidir false. Bu özellik olarak trueayarlandığında, trafik verileri haritada yer alır:

<maps:Map IsTrafficEnabled="true" />

Eşdeğer C# kodu:

Map map = new Map
{
    IsTrafficEnabled = true
};

Kaydırmayı devre dışı bırakma

Map sınıfı türünde boolbir IsScrollEnabled özellik tanımlar. Varsayılan olarak bu özellik, trueeşlemenin kaydırmasına izin verildiğini gösteren özelliğidir. Bu özellik olarak falseayarlandığında, harita kaydırılmaz:

<maps:Map IsScrollEnabled="false" />

Eşdeğer C# kodu:

Map map = new Map
{
    IsScrollEnabled = false
};

Yakınlaştırmayı devre dışı bırakma

Map sınıfı türünde boolbir IsZoomEnabled özellik tanımlar. Varsayılan olarak bu özellik, haritada yakınlaştırma gerçekleştirilebileceğini gösteren özelliğidir true. Bu özellik olarak falseayarlandığında, harita yakınlaştırılamaz:

<maps:Map IsZoomEnabled="false" />

Eşdeğer C# kodu:

Map map = new Map
{
    IsZoomEnabled = false
};

Kullanıcının konumunu gösterme

Map sınıfı türünde boolbir IsShowingUser özellik tanımlar. Varsayılan olarak bu özellik, eşlemenin kullanıcının geçerli konumunu göstermediğini gösteren özelliğidir false. Bu özellik olarak trueayarlandığında, eşleme kullanıcının geçerli konumunu gösterir:

<maps:Map IsShowingUser="true" />

Eşdeğer C# kodu:

Map map = new Map
{
    IsShowingUser = true
};

Önemli

Kullanıcının konumuna erişmek için uygulamaya konum izinlerinin verilmesi gerekir. Daha fazla bilgi için bkz . Platform yapılandırması.

Harita tıklamaları

sınıfı, Map haritaya dokunulduğunda tetiklenen bir MapClicked olayı tanımlar. Olaya MapClickedEventArgs eşlik eden nesnenin türünde Locationadlı Locationtek bir özelliği vardır. Olay tetiklendiğinde özelliği, Location dokunulduğu harita konumuna ayarlanır. Sınıf hakkında Location bilgi için bkz . Konum ve uzaklık.

Aşağıdaki kod örneği, olay için bir olay işleyicisi MapClicked gösterir:

void OnMapClicked(object sender, MapClickedEventArgs e)
{
    System.Diagnostics.Debug.WriteLine($"MapClick: {e.Location.Latitude}, {e.Location.Longitude}");
}

Bu örnekte olay işleyicisi, OnMapClicked eşlenen eşleme konumunu temsil eden enlem ve boylam çıkışını alır. Olay işleyicisi şu olaya kayıtlı MapClicked olmalıdır:

<maps:Map MapClicked="OnMapClicked" />

Eşdeğer C# kodu:

Map map = new Map();
map.MapClicked += OnMapClicked;

Konum ve uzaklık

Ad Microsoft.Maui.Devices.Sensors alanı genellikle bir Location eşlemeyi ve pinlerini konumlandırırken kullanılan bir sınıf içerir. Ad alanı, Microsoft.Maui.Maps bir eşleme konumlandırırken isteğe bağlı olarak kullanılabilecek bir yapı içerir Distance .

Konum

sınıfı, Location enlem ve boylam değerleri olarak depolanan bir konumu kapsüller. Bu sınıf aşağıdaki özellikleri tanımlar:

  • Accuracy, türündedir double?ve ölçüm cinsinden yatay doğruluğunu Locationtemsil eder.
  • Altitude, türündedir double?ve özelliği tarafından AltitudeReferenceSystem belirtilen bir başvuru sistemindeki metre cinsinden yüksekliği temsil eder.
  • AltitudeReferenceSystem, türündedir AltitudeReferenceSystemve yükseklik değerinin sağlandığı başvuru sistemini belirtir.
  • Course, türündeki double?, doğru kuzeye göre derece değerini gösterir.
  • IsFromMockProvider, türündeki boolkonumun GPS'ten mi yoksa sahte bir konum sağlayıcısından mı olduğunu gösterir.
  • Latitude, türündeki doublekonumun ondalık derece cinsinden enlemini temsil eder.
  • Longitude, türündeki doubleondalık derecelerdeki konumun boylamını temsil eder.
  • Speed, saniye başına metre cinsinden hızı temsil eden türündedir double?.
  • Timestamp, türüne DateTimeOffsetgöre oluşturulurken zaman damgasını Location temsil eder.
  • VerticalAccuracy, türündedir double?ve ölçümlerde dikey doğruluğunu Locationbelirtir.

Locationnesneleri, genellikle değer olarak double belirtilen enlem ve boylam bağımsız değişkenlerini gerektiren oluşturucu aşırı yüklemelerinden biriyle Location oluşturulur:

Location location = new Location(36.9628066, -122.0194722);

Nesne oluştururken Location enlem değeri -90,0 ile 90,0 arasında, boylam değeri ise -180,0 ile 180,0 arasında sıkıştırılır.

Not

sınıfı, GeographyUtils bir double değeri derecelerden radyana dönüştüren bir ToRadians uzantı yöntemine ve bir değeri radyandan dereceye dönüştüren bir ToDegreesdouble uzantı yöntemine sahiptir.

sınıfı, Location iki konum arasındaki mesafeyi hesaplayan yöntemlere de sahiptir CalculateDistance .

Mesafe

Distance Yapısı, metre cinsinden uzaklığı temsil eden bir double değer olarak depolanan uzaklığı kapsüller. Bu yapı üç salt okunur özelliği tanımlar:

  • Kilometers, türündeki double, tarafından Distanceyayılan kilometre cinsinden uzaklığı temsil eder.
  • Meters, türündeki double, tarafından Distanceyayılan metre cinsinden uzaklığı temsil eder.
  • Miles, türüne doublegöre, tarafından Distanceyayılan mil cinsinden uzaklığı temsil eder.

Distance nesneleri oluşturucu ile Distance oluşturulabilir ve bu, olarak belirtilen doublebir ölçüm bağımsız değişkeni gerektirir:

Distance distance = new Distance(1450.5);

Alternatif olarak, Distance nesneler , , FromMetersFromMilesve BetweenPositions fabrika yöntemleriyle FromKilometersoluşturulabilir:

Distance distance1 = Distance.FromKilometers(1.45); // argument represents the number of kilometers
Distance distance2 = Distance.FromMeters(1450.5);   // argument represents the number of meters
Distance distance3 = Distance.FromMiles(0.969);     // argument represents the number of miles
Distance distance4 = Distance.BetweenPositions(location1, location2);

Raptiyeler

Denetim, Map konumların nesnelerle Pin işaretlenmesine izin verir. A Pin , dokunulduğunda bir bilgi penceresi açan bir harita işaretçisidir:

Harita raptiyesinin ve bilgi penceresinin ekran görüntüsü.

Koleksiyona Map.Pins bir Pin nesne eklendiğinde, raptiye haritada işlenir.

Pin sınıfı aşağıdaki özelliklere sahiptir:

  • Address, türündedir stringve genellikle pin konumunun adresini temsil eder. Ancak, yalnızca bir adres değil, herhangi string bir içerik olabilir.
  • Label, türündedir stringve genellikle raptiye başlığını temsil eder.
  • Location, türündedir Locationve pinin enlemini ve boylamını temsil eder.
  • Type, pin PinTypetürünü temsil eder.

Bu özellikler nesneler tarafından BindableProperty desteklenir; bu da veri Pin bağlamalarının hedefi olabileceği anlamına gelir. Veri bağlama Pin nesneleri hakkında daha fazla bilgi için bkz . Pin koleksiyonunu görüntüleme.

Ayrıca sınıfı Pin ve InfoWindowClicked olaylarını tanımlarMarkerClicked. Bir MarkerClicked raptiyeye dokunulduğunda InfoWindowClicked olay tetiklenir ve bilgi penceresine dokunulduğunda olay tetiklenir. Her PinClickedEventArgs iki olaya da eşlik eden nesnenin türünde booltek HideInfoWindow bir özelliği vardır.

Raptiye görüntüleme

A Pin , XAML'de öğesine Map eklenebilir:

<ContentPage ...
             xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps"
             xmlns:sensors="clr-namespace:Microsoft.Maui.Devices.Sensors;assembly=Microsoft.Maui.Essentials">
    <maps:Map x:Name="map">
        <x:Arguments>
            <maps:MapSpan>
                <x:Arguments>
                    <sensors:Location>
                        <x:Arguments>
                            <x:Double>36.9628066</x:Double>
                            <x:Double>-122.0194722</x:Double>
                        </x:Arguments>
                    </sensors:Location>
                    <x:Double>0.01</x:Double>
                    <x:Double>0.01</x:Double>
                </x:Arguments>
            </maps:MapSpan>
        </x:Arguments>
        <maps:Map.Pins>
            <maps:Pin Label="Santa Cruz"
                      Address="The city with a boardwalk"
                      Type="Place">
                <maps:Pin.Location>
                    <sensors:Location>
                        <x:Arguments>
                            <x:Double>36.9628066</x:Double>
                            <x:Double>-122.0194722</x:Double>
                        </x:Arguments>
                    </sensors:Location>
                </maps:Pin.Location>
            </maps:Pin>
        </maps:Map.Pins>
    </maps:Map>
</ContentPage>

Bu XAML, nesnesi tarafından MapSpan belirtilen bölgeyi gösteren bir Map nesne oluşturur. MapSpan Nesne, 0,01 enlem ve boylam derecesini genişleten bir Location nesne tarafından temsil edilen enlem ve boylam üzerinde ortalanır. Bir Pin nesne koleksiyona Map.Pins eklenir ve özelliği tarafından Location belirtilen konumda üzerine Map çizilir. Sınıf hakkında Location bilgi için bkz . Konum ve uzaklık. XAML'deki bağımsız değişkenleri varsayılan oluşturucuları olmayan nesnelere geçirme hakkında bilgi için bkz . XAML'de bağımsız değişkenleri geçirme.

Eşdeğer C# kodu:

using Microsoft.Maui.Controls.Maps;
using Microsoft.Maui.Maps;
using Map = Microsoft.Maui.Controls.Maps.Map;
...

Map map = new Map
{
  ...
};

Pin pin = new Pin
{
  Label = "Santa Cruz",
  Address = "The city with a boardwalk",
  Type = PinType.Place,
  Location = new Location(36.9628066, -122.0194722)
};
map.Pins.Add(pin);

Bu örnek kod, haritada tek bir pinin işlenmesine neden olur:

Harita raptiyesinin ekran görüntüsü.

Raptiye ile etkileşim kurma

Varsayılan olarak, bir Pin öğesine dokunulduğunda bilgi penceresi görüntülenir:

Harita raptiyesinin ve bilgi penceresinin ekran görüntüsü.

Haritada başka bir yere dokunulduğunda bilgi penceresi kapatılabilir.

sınıfı Pin , bir öğesine dokunulduğunda tetiklenen bir MarkerClickedPin olay tanımlar. Bilgi penceresini görüntülemek için bu olayı işlemek gerekli değildir. Bunun yerine, belirli bir raptiyeye dokunulduğuna dair bildirim alınması gereken bir gereksinim olduğunda bu olay işlenmelidir.

sınıfı, Pin bir InfoWindowClicked bilgi penceresine dokunulduğunda tetiklenen bir olayı da tanımlar. Belirli bir bilgi penceresine dokunulduğuna dair bildirim alınması gereken bir gereksinim olduğunda bu olay işlenmelidir.

Aşağıdaki kodda bu olayları işleme örneği gösterilmektedir:

using Microsoft.Maui.Controls.Maps;
using Microsoft.Maui.Maps;
using Map = Microsoft.Maui.Controls.Maps.Map;
...

Pin boardwalkPin = new Pin
{
    Location = new Location(36.9641949, -122.0177232),
    Label = "Boardwalk",
    Address = "Santa Cruz",
    Type = PinType.Place
};
boardwalkPin.MarkerClicked += async (s, args) =>
{
    args.HideInfoWindow = true;
    string pinName = ((Pin)s).Label;
    await DisplayAlert("Pin Clicked", $"{pinName} was clicked.", "Ok");
};

Pin wharfPin = new Pin
{
    Location = new Location(36.9571571, -122.0173544),
    Label = "Wharf",
    Address = "Santa Cruz",
    Type = PinType.Place
};
wharfPin.InfoWindowClicked += async (s, args) =>
{
    string pinName = ((Pin)s).Label;
    await DisplayAlert("Info Window Clicked", $"The info window was clicked for {pinName}.", "Ok");
};

Her PinClickedEventArgs iki olaya da eşlik eden nesnenin türünde booltek HideInfoWindow bir özelliği vardır. Bu özellik bir olay işleyicisi içinde olarak ayarlandığında true , bilgi penceresi gizlenir.

Sabitleme türleri

Pinnesneleri, pin türünü PinTypetemsil eden türünde bir Type özellik içerir. Numaralandırma PinType aşağıdaki üyeleri tanımlar:

  • Generic, genel bir raptiyeyi temsil eder.
  • Place, bir yer için raptiyeyi temsil eder.
  • SavedPin, kaydedilmiş bir konumun raptiyesini temsil eder.
  • SearchResult, bir arama sonucu için raptiyeyi temsil eder.

Ancak, özelliğin herhangi bir PinType üyeye ayarlanmasıPin.Type, işlenen pinin görünümünü değiştirmez. Bunun yerine, raptiye görünümünü özelleştirmek için işleyiciyi Pin özelleştirmeniz gerekir. İşleyici özelleştirmesi hakkında daha fazla bilgi için bkz . denetimleri işleyicilerle özelleştirme.

Raptiye koleksiyonunu görüntüleme

Map sınıfı aşağıdaki bağlanabilir özellikleri tanımlar:

  • ItemsSource, türündedir IEnumerableve görüntülenecek pin öğelerinin IEnumerable koleksiyonunu belirtir.
  • ItemTemplate, türündedir DataTemplateve görüntülenen raptiye koleksiyonundaki her öğeye uygulanacağını belirtir DataTemplate .
  • ItemTemplateSelector, türündedir DataTemplateSelectorve çalışma zamanında pin seçmek DataTemplate için kullanılacak olanı belirtirDataTemplateSelector.

Önemli

ItemTemplate hem hem ItemTemplateSelector de ItemTemplate özellikleri ayarlandığında özelliği önceliklidir.

birMap, özelliğini bir IEnumerable koleksiyona bağlamak ItemsSource için veri bağlama kullanılarak pinlerle doldurulabilir:

<ContentPage ...
             xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps">    
    <Grid>
        ...
        <maps:Map x:Name="map"
                  ItemsSource="{Binding Positions}">
            <maps:Map.ItemTemplate>
                <DataTemplate>
                    <maps:Pin Location="{Binding Location}"
                              Address="{Binding Address}"
                              Label="{Binding Description}" />
                </DataTemplate>    
            </maps:Map.ItemTemplate>
        </maps:Map>
        ...
    </Grid>
</ContentPage>

Özellik ItemsSource verileri, özel bir tür olan nesnelerden birini ObservableCollection döndüren bağlı görünüm modelinin Position özelliğine bağlanırPositions. Her Position nesne, türü stringve türünde bir Location özellik Locationolan ve Description özelliklerini tanımlarAddress.

Koleksiyondaki IEnumerable her öğenin görünümü, özelliği, verilerin uygun özelliklere DataTemplate bağlandığı bir nesne içeren bir Pin olarak ayarlanarak ItemTemplate tanımlanır.

Aşağıdaki ekran görüntüsünde, veri bağlama kullanılarak bir Pin koleksiyonun görüntülenmesi gösterilmektedirMap:

Veri sınırı raptiyeleri içeren haritanın ekran görüntüsü.

Çalışma zamanında öğe görünümünü seçme

Özelliği olarak DataTemplateSelectorayarlanarakItemTemplateSelector, koleksiyondaki IEnumerable her öğenin görünümü çalışma zamanında öğe değerine göre seçilebilir:

<ContentPage ...
             xmlns:templates="clr-namespace:WorkingWithMaps.Templates"
             xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps">
    <ContentPage.Resources>
       <templates:MapItemTemplateSelector x:Key="MapItemTemplateSelector">
           <templates:MapItemTemplateSelector.DefaultTemplate>
               <DataTemplate>
                   <maps:Pin Location="{Binding Location}"
                             Address="{Binding Address}"
                             Label="{Binding Description}" />
               </DataTemplate>
           </templates:MapItemTemplateSelector.DefaultTemplate>
           <templates:MapItemTemplateSelector.SanFranTemplate>
               <DataTemplate>
                   <maps:Pin Location="{Binding Location}"
                             Address="{Binding Address}"
                             Label="Xamarin!" />
               </DataTemplate>
           </templates:MapItemTemplateSelector.SanFranTemplate>    
       </templates:MapItemTemplateSelector>
    </ContentPage.Resources>

    <Grid>
        ...
        <maps:Map x:Name="map"
                  ItemsSource="{Binding Positions}"
                  ItemTemplateSelector="{StaticResource MapItemTemplateSelector}">
        ...
    </Grid>
</ContentPage>

Aşağıdaki örnekte sınıfı gösterilmektedir MapItemTemplateSelector :

using WorkingWithMaps.Models;

namespace WorkingWithMaps.Templates;

public class MapItemTemplateSelector : DataTemplateSelector
{
    public DataTemplate DefaultTemplate { get; set; }
    public DataTemplate SanFranTemplate { get; set; }

    protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
    {
        return ((Position)item).Address.Contains("San Francisco") ? SanFranTemplate : DefaultTemplate;
    }
}

MapItemTemplateSelector sınıfı, farklı veri şablonlarına ayarlanmış ve SanFranTemplateDataTemplate özelliklerini tanımlarDefaultTemplate. OnSelectTemplate yöntemi, öğenin "San Francisco" içeren bir adresi olduğunda, öğesine dokunulduğunda Pin etiket olarak "Xamarin" görüntüleyen değerini döndürürSanFranTemplate. Öğenin "San Francisco" içeren bir adresi olmadığında, OnSelectTemplate yöntemi döndürür DefaultTemplate.

Not

Bu işlevin kullanım örneği, alt sınıflandırılmış Pin nesnelerin özelliklerini alt türe göre farklı özelliklere Pin bağlamaktır.

Veri şablonu seçicileri hakkında daha fazla bilgi için bkz . DataTemplateSelector oluşturma.

Çokgenler, çok çizgiler ve daireler

Polygon, Polylineve Circle öğeleri, haritadaki belirli alanları vurgulamanıza olanak sağlar. A Polygon , kontur ve dolgu rengine sahip olabilecek tamamen kapalı bir şekildir. A Polyline , bir alanı tamamen kapatmayan bir çizgidir. A Circle , haritanın dairesel bir alanını vurgular:

Haritada çokgen ve çok çizgili.Harita üzerinde daire çizin.

Polygon, Polylineve Circle sınıfları, aşağıdaki bağlanabilir özellikleri kullanıma sunan sınıfından türetilirMapElement:

  • StrokeColor , çizgi rengini belirleyen bir Color nesnedir.
  • StrokeWidth , çizgi genişliğini belirleyen bir float nesnedir.

Polygon sınıfı ek bir bağlanabilir özellik tanımlar:

  • FillColor , çokgenin arka plan rengini belirleyen bir Color nesnedir.

Buna ek olarak, Polygon ve Polyline sınıfları da şeklin noktalarını belirten nesnelerin listesi Location olan bir özelliği tanımlarGeoPath.

Circle sınıfı aşağıdaki bağlanabilir özellikleri tanımlar:

  • Center , dairenin merkezini enlem ve boylam olarak tanımlayan bir Location nesnedir.
  • Radius , dairenin yarıçapını metre, kilometre veya mil cinsinden tanımlayan bir Distance nesnedir.
  • FillColor , daire çevresi içindeki rengi belirleyen bir Color özelliktir.

Çokgen oluşturma

Bir Polygon nesne örneği oluşturularak ve haritanın koleksiyonuna eklenerek haritaya MapElements eklenebilir:

<ContentPage ...
             xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps"
             xmlns:sensors="clr-namespace:Microsoft.Maui.Devices.Sensors;assembly=Microsoft.Maui.Essentials">
    <maps:Map>
        <maps:Map.MapElements>
            <maps:Polygon StrokeColor="#FF9900"
                          StrokeWidth="8"
                          FillColor="#88FF9900">
                <maps:Polygon.Geopath>
                    <sensors:Location>
                        <x:Arguments>
                            <x:Double>47.6458676</x:Double>
                            <x:Double>-122.1356007</x:Double>
                        </x:Arguments>
                    </sensors:Location>
                    <sensors:Location>
                        <x:Arguments>
                            <x:Double>47.6458097</x:Double>
                            <x:Double>-122.142789</x:Double>
                        </x:Arguments>
                    </sensors:Location>
                    ...
                </maps:Polygon.Geopath>
            </maps:Polygon>
        </maps:Map.MapElements>
    </maps:Map>
</ContentPage>

Eşdeğer C# kodu:

using Microsoft.Maui.Controls.Maps;
using Microsoft.Maui.Maps;
using Map = Microsoft.Maui.Controls.Maps.Map;
...

Map map = new Map();

// Instantiate a polygon
Polygon polygon = new Polygon
{
    StrokeWidth = 8,
    StrokeColor = Color.FromArgb("#1BA1E2"),
    FillColor = Color.FromArgb("#881BA1E2"),
    Geopath =
    {
        new Location(47.6368678, -122.137305),
        new Location(47.6368894, -122.134655),
        ...
    }
};

// Add the polygon to the map's MapElements collection
map.MapElements.Add(polygon);

StrokeColor ve StrokeWidth özellikleri, çokgenin ana hattını ayarlamak için belirtilir. Bu örnekte, FillColor özellik değeri özellik değeriyle StrokeColor eşleşir, ancak saydam hale getirmek için belirtilen bir alfa değeri vardır ve temel alınan eşlemenin şekil üzerinden görünür olmasını sağlar. özelliği, GeoPath çokgen noktaların Location coğrafi koordinatlarını tanımlayan nesnelerin listesini içerir. NesnesiPolygon, koleksiyonuna Mapeklendikten MapElements sonra haritada işlenir.

Not

A Polygon , tamamen kapalı bir şekildir. eşleşmeyen ilk ve son puanlar otomatik olarak bağlanır.

Çok çizgi oluşturma

Bir Polyline nesne örneği oluşturularak ve haritanın koleksiyonuna eklenerek haritaya MapElements eklenebilir:

<ContentPage ...
             xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps"
             xmlns:sensors="clr-namespace:Microsoft.Maui.Devices.Sensors;assembly=Microsoft.Maui.Essentials">
    <maps:Map>
        <maps:Map.MapElements>
            <maps:Polyline StrokeColor="Black"
                           StrokeWidth="12">
                <maps:Polyline.Geopath>
                    <sensors:Location>
                        <x:Arguments>
                            <x:Double>47.6381401</x:Double>
                            <x:Double>-122.1317367</x:Double>
                        </x:Arguments>
                    </sensors:Location>
                    <sensors:Location>
                        <x:Arguments>
                            <x:Double>47.6381473</x:Double>
                            <x:Double>-122.1350841</x:Double>
                        </x:Arguments>
                    </sensors:Location>
                    ...
                </maps:Polyline.Geopath>
            </maps:Polyline>
        </maps:Map.MapElements>
    </maps:Map>
</ContentPage>

Eşdeğer C# kodu:

using Microsoft.Maui.Controls.Maps;
using Microsoft.Maui.Maps;
using Map = Microsoft.Maui.Controls.Maps.Map;
...

Map map = new Map();

// instantiate a polyline
Polyline polyline = new Polyline
{
    StrokeColor = Colors.Blue,
    StrokeWidth = 12,
    Geopath =
    {
        new Location(47.6381401, -122.1317367),
        new Location(47.6381473, -122.1350841),
        ...
    }
};

// Add the Polyline to the map's MapElements collection
map.MapElements.Add(polyline);

StrokeColor ve StrokeWidth özellikleri, çizgi görünümünü ayarlamak için belirtilir. özelliği, GeoPath çok çizgili noktaların Location coğrafi koordinatlarını tanımlayan nesnelerin listesini içerir. NesnesiPolyline, koleksiyonuna Mapeklendikten MapElements sonra haritada işlenir.

Daire oluşturma

Bir Circle nesne örneği oluşturularak ve haritanın koleksiyonuna eklenerek haritaya MapElements eklenebilir:

<ContentPage ...
             xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps"
             xmlns:sensors="clr-namespace:Microsoft.Maui.Devices.Sensors;assembly=Microsoft.Maui.Essentials">
    <maps:Map>
        <maps:Map.MapElements>
            <maps:Circle StrokeColor="#88FF0000"
                         StrokeWidth="8"
                         FillColor="#88FFC0CB">
                <maps:Circle.Center>
                    <sensors:Location>
                        <x:Arguments>
                            <x:Double>37.79752</x:Double>
                            <x:Double>-122.40183</x:Double>
                        </x:Arguments>
                    </sensors:Location>
                </maps:Circle.Center>
                <maps:Circle.Radius>
                    <maps:Distance>
                        <x:Arguments>
                            <x:Double>250</x:Double>
                        </x:Arguments>
                    </maps:Distance>
                </maps:Circle.Radius>
            </maps:Circle>             
        </maps:Map.MapElements>
    </maps:Map>
</ContentPage>

Eşdeğer C# kodu:

using Microsoft.Maui.Controls.Maps;
using Microsoft.Maui.Maps;
using Map = Microsoft.Maui.Controls.Maps.Map;

Map map = new Map();

// Instantiate a Circle
Circle circle = new Circle
{
    Center = new Location(37.79752, -122.40183),
    Radius = new Distance(250),
    StrokeColor = Color.FromArgb("#88FF0000"),
    StrokeWidth = 8,
    FillColor = Color.FromArgb("#88FFC0CB")
};

// Add the Circle to the map's MapElements collection
map.MapElements.Add(circle);

Öğesinin Circle Harita üzerindeki konumu ve Radius özelliklerinin değerine Center göre belirlenir. Center özelliği dairenin merkezini enlem ve boylam olarak tanımlarkenRadius, özelliği dairenin yarıçapını metre olarak tanımlar. StrokeColor ve StrokeWidth özellikleri, dairenin ana hattını ayarlamak için belirtilir. FillColor Özellik değeri, daire çevresi içindeki rengi belirtir. Bu örnekte, renk değerlerinin her ikisi de bir alfa kanalı belirterek temel haritanın daire içinde görünür olmasını sağlar. Circle nesnesi, koleksiyonuna Mapeklendikten MapElements sonra haritada işlenir.

Not

sınıfı, GeographyUtils bir ToCircumferencePositionsCircle nesneyi (ve özellik değerlerini tanımlayanCenter) daire çevresinin Location enlem ve Radius boylam koordinatlarını oluşturan nesnelerin listesine dönüştüren bir uzantı yöntemine sahiptir.

Coğrafi kodlama ve coğrafi konum

Geocoding sınıfı, Microsoft.Maui.Devices.Sensors konumsal koordinatlar için bir yer işaretini coğrafi kodlamak ve coğrafi koordinatları bir yer işaretine ters kodlamak için kullanılabilir. Daha fazla bilgi için bkz . Coğrafi kodlama.

Geolocation ad alanında Microsoft.Maui.Devices.Sensors sınıfı, cihazın geçerli coğrafi konum koordinatlarını almak için kullanılabilir. Daha fazla bilgi için bkz . Coğrafi konum.

Yerel harita uygulamasını başlatma

Her platformdaki yerel harita uygulaması sınıfı tarafından bir .NET MAUI uygulamasından Launcher başlatılabilir. Bu sınıf, bir uygulamanın özel URI düzeni aracılığıyla başka bir uygulama açmasına olanak tanır. Başlatıcı işlevi yöntemiyle OpenAsync çağrılabilir ve açılacak özel URL düzenini temsil eden bir string veya Uri bağımsız değişkeni geçirilebilir. Sınıfı hakkında Launcher daha fazla bilgi için bkz . Launcher.

Not

sınıfını kullanmanın bir alternatifiLauncher, ad alanından Microsoft.Maui.ApplicationModel sınıf kullanmaktırMap. Daha fazla bilgi için bkz . Harita.

Her platformdaki haritalar uygulaması benzersiz bir özel URI şeması kullanır. iOS'ta haritalar URI şeması hakkında daha fazla bilgi için bkz . developer.apple.com harita bağlantıları . Android'de haritalar URI şeması hakkında bilgi için bkz. Haritalar Geliştirici Kılavuzu ve developers.android.com'da Android için Google Haritalar Amaçları. Windows'daki haritalar URI düzeni hakkında bilgi için bkz. Windows Haritalar uygulamasını başlatma.

Harita uygulamasını belirli bir konumda başlatma

Yerel haritalar uygulamasındaki bir konum, her harita uygulaması için özel URI düzenine uygun sorgu parametreleri eklenerek açılabilir:

if (DeviceInfo.Current.Platform == DevicePlatform.iOS || DeviceInfo.Current.Platform == DevicePlatform.MacCatalyst)
{
    // 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 (DeviceInfo.Current.Platform == DevicePlatform.Android)
{
    // opens the Maps app directly
    await Launcher.OpenAsync("geo:0,0?q=394+Pacific+Ave+San+Francisco+CA");
}
else if (DeviceInfo.Current.Platform == DevicePlatform.WinUI)
{
    await Launcher.OpenAsync("bingmaps:?where=394 Pacific Ave San Francisco CA");
}

Bu örnek kod, yerel harita uygulamasının her platformda başlatılmasını ve haritanın belirtilen konumu temsil eden bir pin üzerinde ortalanmasını sağlar.

Yol tarifleriyle harita uygulamasını başlatma

Yerel haritalar uygulaması, her harita uygulaması için özel URI düzenine uygun sorgu parametreleri eklenerek yol tarifleri görüntülenerek başlatılabilir:

if (DeviceInfo.Current.Platform == DevicePlatform.iOS || DeviceInfo.Current.Platform == DevicePlatform.MacCatalyst)
{
    // 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 (DeviceInfo.Current.Platform == DevicePlatform.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 (DeviceInfo.Current.Platform == DevicePlatform.WinUI)
{
    await Launcher.OpenAsync("bingmaps:?rtp=adr.394 Pacific Ave San Francisco CA~adr.One Microsoft Way Redmond WA 98052");
}

Bu örnek kod, her platformda yerel harita uygulamasının başlatılmasına ve haritanın belirtilen konumlar arasındaki bir rotada ortalanmasının sonucunu verir.