Share via


Harita stilini ayarlama (Android SDK)

Bu makalede, Azure Haritalar Android SDK'sını kullanarak harita stillerini ayarlamanın iki yolu gösterilmektedir. Azure Haritalar aralarından seçim yapabileceğiniz altı farklı harita stili vardır. Desteklenen eşleme stilleri hakkında daha fazla bilgi için bkz. Azure Haritalar'de desteklenen eşleme stilleri.

Not

Android SDK'sı kullanımdan kaldırılmasını Azure Haritalar

Android için Azure Haritalar Yerel SDK artık kullanım dışıdır ve 31/3/25 tarihinde kullanımdan kaldırılacaktır. Hizmet kesintilerini önlemek için 31.03.25'e kadar Azure Haritalar Web SDK'sına geçin. Daha fazla bilgi için bkz. Android SDK geçiş kılavuzu Azure Haritalar.

Önkoşullar

Hızlı Başlangıç: Android uygulaması oluşturma adımlarını tamamladığınızdan emin olun.

Düzende harita stilini ayarlama

Harita denetimini eklerken etkinlik sınıfınız için düzen dosyasında bir harita stili ayarlayabilirsiniz. Aşağıdaki kod, merkezi konumu, yakınlaştırma düzeyini ve harita stilini ayarlar.

<com.azure.android.maps.control.MapControl
    android:id="@+id/mapcontrol"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:azure_maps_centerLat="47.602806"
    app:azure_maps_centerLng="-122.329330"
    app:azure_maps_zoom="12"
    app:azure_maps_style="grayscale_dark"
    />

Aşağıdaki ekran görüntüsünde gri tonlamalı koyu stile sahip bir yol haritası görüntüleyen yukarıdaki kod gösterilmektedir.

Gri tonlamalı koyu yol haritası stiliyle harita

Kodda harita stilini ayarlama

Harita stili, eşleme yöntemi kullanılarak setStyle kodda program aracılığıyla ayarlanabilir. Aşağıdaki kod, haritalar yöntemini ve harita setCamera stilini kullanarak orta konumu ve yakınlaştırma düzeyini olarak SATELLITE_ROAD_LABELSayarlar.

mapControl.onReady(map -> {

    //Set the camera of the map.
    map.setCamera(center(Point.fromLngLat(-122.33, 47.64)), zoom(14));

    //Set the style of the map.
    map.setStyle(style(MapStyle.SATELLITE_ROAD_LABELS));
});
mapControl!!.onReady { map: AzureMap ->
    //Set the camera of the map.
    map.setCamera(center(Point.fromLngLat(-122.33, 47.64)), zoom(14))

    //Set the style of the map.
    map.setStyle(style(MapStyle.SATELLITE_ROAD_LABELS))
}

Aşağıdaki ekran görüntüsünde uydu yol etiketleri stiline sahip bir haritayı görüntüleyen yukarıdaki kod gösterilmektedir.

Uydu yol etiketleri stiliyle harita

Harita kamerasını ayarlama

Harita kamerası, harita görünüm bölmesinde dünyanın hangi bölümünün görüntüleneceğini denetler. Kamera koddaki programlı düzenimizde olabilir. Kodda ayarlarken, haritanın konumunu ayarlamak için iki ana yöntem vardır; ortala ve yakınlaştır veya sınırlayıcı kutuya geçir. Aşağıdaki kodda ve kullanılırken center tüm isteğe bağlı kamera seçeneklerinin nasıl ayarlanacağı gösterilmektedir zoom.

//Set the camera of the map using center and zoom.
map.setCamera(
    center(Point.fromLngLat(-122.33, 47.64)), 

    //The zoom level. Typically a value between 0 and 22.
    zoom(14),

    //The amount of tilt in degrees the map where 0 is looking straight down.
    pitch(45),

    //Direction the top of the map is pointing in degrees. 0 = North, 90 = East, 180 = South, 270 = West
    bearing(90),

    //The minimum zoom level the map will zoom-out to when animating from one location to another on the map.
    minZoom(10),

    //The maximum zoom level the map will zoom-in to when animating from one location to another on the map.
    maxZoom(14)
);
//Set the camera of the map using center and zoom.
map.setCamera(
    center(Point.fromLngLat(-122.33, 47.64)), 

    //The zoom level. Typically a value between 0 and 22.
    zoom(14),

    //The amount of tilt in degrees the map where 0 is looking straight down.
    pitch(45),

    //Direction the top of the map is pointing in degrees. 0 = North, 90 = East, 180 = South, 270 = West
    bearing(90),

    //The minimum zoom level the map will zoom-out to when animating from one location to another on the map.
    minZoom(10),

    //The maximum zoom level the map will zoom-in to when animating from one location to another on the map.
    maxZoom(14)
)

Genellikle haritayı bir veri kümesine odaklama tercih edilir. Sınırlayıcı kutu, yöntemi kullanılarak MapMath.fromData özelliklerden hesaplanabilir ve harita kamerası seçeneğine bounds geçirilebilir. Sınırlayıcı bir kutuyu temel alan bir harita görünümü ayarlarken, kabarcıklar veya simgeler olarak işlenen noktaların piksel boyutunu hesaba katacak bir padding değer belirtmek genellikle yararlıdır. Aşağıdaki kodda, bir sınırlayıcı kutu kullanarak kameranın konumunu ayarlamak için tüm isteğe bağlı kamera seçeneklerinin nasıl ayarlanacağı gösterilmektedir.

//Set the camera of the map using a bounding box.
map.setCamera(
    //The area to focus the map on.
    bounds(BoundingBox.fromLngLats(
        //West
        -122.4594,

        //South
        47.4333,

        //East
        -122.21866,

        //North
        47.75758
    )),

    //Amount of pixel buffer around the bounding box to provide extra space around the bounding box.
    padding(20),

    //The maximum zoom level the map will zoom-in to when animating from one location to another on the map.
    maxZoom(14)
);
//Set the camera of the map using a bounding box.
map.setCamera(
    //The area to focus the map on.
    bounds(BoundingBox.fromLngLats(
        //West
        -122.4594,

        //South
        47.4333,

        //East
        -122.21866,

        //North
        47.75758
    )),

    //Amount of pixel buffer around the bounding box to provide extra space around the bounding box.
    padding(20),

    //The maximum zoom level the map will zoom-in to when animating from one location to another on the map.
    maxZoom(14)
)

Sınırlayıcı kutunun en boy oranı, haritanın en boy oranıyla aynı olmayabilir, bu nedenle harita genellikle tam sınırlayıcı kutu alanını gösterir, ancak genellikle yalnızca dikey veya yatay olarak sıkıdır.

Harita görünümüne animasyon ekleme

Haritanın kamera seçeneklerini ayarlarken, geçerli harita görünümü ile sonraki arasında bir geçiş oluşturmak için animasyon seçenekleri de kullanılabilir. Bu seçenekler, kamerayı taşımak için geçmesi gereken animasyon türünü ve süreyi belirtir.

Seçenek Açıklama
animationDuration(Integer durationMs) Kameranın görünümler arasında ne kadar süreyle animasyona katıldığını milisaniye (ms) cinsinden belirtir.
animationType(AnimationType animationType) Gerçekleştirilecek animasyon geçişinin türünü belirtir.

- JUMP - anında bir değişiklik.
- EASE - kameranın ayarlarının kademeli olarak değiştirilmesi.
- FLY - uçuşa benzeyen bir yay oluşturan kameranın ayarlarının aşamalı olarak değiştirilmesi.

Bu kod, üç saniyelik bir süre boyunca bir FLY animasyon kullanarak harita görünümüne nasıl animasyon ekleyebileceğinizi gösterir:

map.setCamera(
    center(Point.fromLngLat(-122.33, 47.6)),
    zoom(12),
    animationType(AnimationType.FLY), 
    animationDuration(3000)
);
map.setCamera(
    center(Point.fromLngLat(-122.33, 47.6)),
    zoom(12.0),
    AnimationOptions.animationType(AnimationType.FLY),
    AnimationOptions.animationDuration(3000)
)

Yukarıdaki kod, Harita görünümünün New York'tan Seattle'a animasyonunu gösterir:

Kamerayı New York'tan Seattle'a eşleme

Sonraki adımlar

Haritalarınıza eklenecek daha fazla kod örneği için aşağıdaki makalelere bakın: