Haritalar Yazma Kitaplığı

Jetpack Compose, kullanıcı arayüzü geliştirmeyi basitleştiren ve hızlandıran, bildirime dayalı bir yerel kullanıcı arayüzü araç setidir. Jetpack Compose ile uygulamanızın nasıl görünmesini istediğinizi açıklarsınız ve gerisini Jetpack Compose'a bırakırsınız.

Android için Haritalar SDK'sına yönelik Haritalar Compose kitaplığı, uygulamanızı oluşturmak için Jetpack Compose ile kullanabileceğiniz bir dizi açık kaynaklı composable işlev ve veri türüdür.

Haritalar Compose kitaplığı, birçok yaygın görevi gerçekleştirmenize olanak tanıyan composable işlevler ve veri türleri içerir. Sık kullanılan bazı composable işlevler ve veri türleri şunlardır:

Oluşturulabilir Açıklama
Circle Haritaya daire eklemek için kullanılabilen işlev.
GoogleMap Harita eklemek için kullanılabilen işlev.
GroundOverlay Haritaya yer paylaşımı eklemek için kullanılabilen işlev.
MapProperties Haritada değiştirilebilen özelliklerin veri türü.
MapUISettings Haritadaki kullanıcı arayüzüyle ilgili ayarların veri türü.
İşaretçi Haritaya işaretçi eklemek için kullanılabilen işlev.
Polygon Haritaya poligon eklemek için kullanılabilen işlev.
Çoklu çizgi Haritaya çoklu çizgi eklemek için kullanılabilen işlev.
TileOverlay Haritaya döşeme yerleşimi eklemek için kullanılabilen işlev.

Birleştirilebilir tüm işlevlerin ve veri türlerinin tam listesi için Maps Compose kitaplığı referansı başlıklı makaleye bakın.

Şartlar

Android için Haritalar SDK'sı ile Haritalar Compose kitaplığını kullanmak için:

  • Android Studio Arctic Fox'u indirip yükleyin.
  • Android Studio'da aşağıdaki özelliklere sahip bir Google Haritalar projesi oluşturun:

    • Empty Compose Activity (Boş E-posta Oluşturma Etkinliği) şablon türü. Bu şablon, Jetpack Compose'un ihtiyaç duyduğu gerekli bağımlılıkları ekler.
    • Minimum SDK, API 21: Android 5.0 (Lollipop) veya sonraki sürümlere ayarlanmalıdır.
    • Dil, Kotlin olarak ayarlanmalıdır.
  • API anahtarı alıp projenize ekleyin.

  • Maps Compose kitaplığını, bir sonraki bölümde açıklandığı şekilde projeye yükleyin.

Kurulum

Maps Compose kitaplığını Google Haritalar projenize yüklemek için:

  1. Aşağıdaki bağımlılıkları modül düzeyindeki build.gradle.kts dosyanıza ekleyin:

      dependencies {
    
        // Android Maps Compose composables for the Maps SDK for Android
        implementation("com.google.maps.android:maps-compose:6.4.1")
    }

  2. Bu değişiklikleri senkronize etmek için projenizi Android Studio'da yeniden oluşturun.

Uygulamanıza harita ekleme

Aşağıdaki örnekte, harita eklemek için GoogleMap composable'ın nasıl kullanılacağı gösterilmektedir.

val singapore = LatLng(1.35, 103.87)
val singaporeMarkerState = rememberMarkerState(position = singapore)
val cameraPositionState = rememberCameraPositionState {
  position = CameraPosition.fromLatLngZoom(singapore, 10f)
}
GoogleMap(
  modifier = Modifier.fillMaxSize(),
  cameraPositionState = cameraPositionState
) {
  Marker(
    state = singaporeMarkerState,
    title = "Singapore",
    snippet = "Marker in Singapore"
  )
}

Bu örnekte harita, izin verilen maksimum alanı kaplıyor ve kamerası Singapur'un etrafında ortalanmış durumda. Kameranın konumunu ayarlamak için cameraPositionState içinde bir CameraPositionState de oluşturulur ve sağlanır.

Ardından örnek, haritaya işaretçi eklemek için haritanın içeriğinde Marker composable'ını çağırır.

Bu örneği, Görünümler'i kullanarak harita ekleyen bir örnekle karşılaştırmak için QuickStart'a bakın. Birleştirilebilir işlevlerin daha az kod gerektirdiğini ve haritanın yaşam döngüsüyle ilgili endişelenmenize gerek olmadığını fark edin.

Haritada özellik ayarlama

MapProperties nesnesi veya kullanıcı arayüzüyle ilgili özellikler için MapUiSettings nesnesi sağlayarak haritada özellikler ayarlayabilirsiniz. Haritanın yeniden oluşturulmasını tetiklemek için bu nesneleri değiştirebilirsiniz.

Aşağıdaki örnekte, haritadaki yakınlaştırma kontrollerini açıp kapatmak için geçiş düğmesi, Material Design bileşeni kullanın.

var uiSettings by remember { mutableStateOf(MapUiSettings()) }
var properties by remember {
  mutableStateOf(MapProperties(mapType = MapType.SATELLITE))
}

Box(Modifier.fillMaxSize()) {
  GoogleMap(
    modifier = Modifier.matchParentSize(),
    properties = properties,
    uiSettings = uiSettings
  )
  Switch(
    checked = uiSettings.zoomControlsEnabled,
    onCheckedChange = {
      uiSettings = uiSettings.copy(zoomControlsEnabled = it)
    }
  )
}

Sırada ne var?