Maps Compose Library

Jetpack Compose یک جعبه ابزار رابط کاربری بومی و اعلانی است که توسعه رابط کاربری را ساده و تسریع می‌کند. با Jetpack Compose، شما ظاهر مورد نظر برنامه خود را توصیف می‌کنید و سپس اجازه می‌دهید Jetpack Compose بقیه کارها را انجام دهد.

کتابخانه Maps Compose برای Maps SDK برای اندروید، مجموعه‌ای از توابع و انواع داده متن‌باز قابل ترکیب است که می‌توانید با Jetpack Compose برای ساخت برنامه خود از آنها استفاده کنید.

کتابخانه Maps Compose شامل توابع و انواع داده قابل ترکیب است که به شما امکان می‌دهد بسیاری از کارهای رایج را انجام دهید. برخی از توابع و انواع داده قابل ترکیب رایج عبارتند از:

قابل ترکیب توضیحات
دایره تابع ترکیبی برای اضافه کردن یک دایره به نقشه.
گوگل مپ تابع قابل ترکیب برای اضافه کردن نقشه.
روکش زمین تابع ترکیبی برای اضافه کردن یک پوشش زمینی به نقشه.
ویژگی‌های نقشه نوع داده‌ای برای ویژگی‌هایی که می‌توانند روی نقشه تغییر کنند.
تنظیمات رابط نقشه نوع داده برای تنظیمات مربوط به رابط کاربری روی نقشه.
نشانگر تابع ترکیبی برای اضافه کردن یک نشانگر به نقشه.
چندضلعی تابع ترکیبی برای اضافه کردن یک چندضلعی به نقشه.
پلی‌لاین تابع ترکیبی برای اضافه کردن یک چندخطی به نقشه.
روکش کاشی تابع ترکیبی برای اضافه کردن یک پوشش کاشی به نقشه.

برای فهرست کاملی از تمام توابع و انواع داده‌های قابل ترکیب، به مرجع کتابخانه‌ی Maps Compose مراجعه کنید.

الزامات

برای استفاده از کتابخانه Maps Compose با Maps SDK برای اندروید، باید:

  • اندروید استودیو آرکتیک فاکس را دانلود و نصب کنید.
  • یک پروژه نقشه گوگل در اندروید استودیو با موارد زیر ایجاد کنید :

    • یک نوع الگو از Empty Compose Activity . این الگو وابستگی‌های لازم مورد نیاز Jetpack Compose را اضافه می‌کند.
    • حداقل SDK مورد نیاز برای API 21: اندروید 5.0 (لالی‌پاپ) یا بالاتر.
    • زبان روی کاتلین تنظیم شده است.
  • یک کلید API دریافت کنید و آن را به پروژه خود اضافه کنید.

  • کتابخانه Maps Compose را همانطور که در بخش بعدی توضیح داده شده است، در پروژه نصب کنید.

نصب

برای نصب کتابخانه Maps Compose در پروژه Google Maps خود:

  1. وابستگی‌های زیر را به فایل build.gradle.kts در سطح ماژول خود اضافه کنید:

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

  2. برای همگام‌سازی این تغییرات، پروژه خود را در اندروید استودیو بازسازی کنید.

نقشه را به برنامه خود اضافه کنید

مثال زیر نحوه استفاده از کامپوننت GoogleMap برای اضافه کردن نقشه را نشان می‌دهد.

val singapore = LatLng(1.35, 103.87)
val singaporeMarkerState = rememberUpdatedMarkerState(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"
  )
}

در این مثال، نقشه حداکثر فضای مجاز را اشغال می‌کند و دوربین آن در مرکز سنگاپور قرار دارد. همچنین یک CameraPositionState ایجاد و در cameraPositionState برای تنظیم موقعیت دوربین ارائه شده است.

سپس این مثال، Marker composable را در محتوای نقشه فراخوانی می‌کند تا یک نشانگر به نقشه اضافه کند.

برای مقایسه این مثال با مثالی که با استفاده از Views یک نقشه اضافه می‌کند، به QuickStart مراجعه کنید. توجه کنید که چگونه توابع composable به کد کمتری نیاز دارند و لازم نیست نگران چرخه حیات نقشه باشید.

تنظیم املاک روی نقشه

شما می‌توانید با ارائه یک شیء MapProperties یا یک شیء MapUiSettings برای ویژگی‌های مرتبط با رابط کاربری، ویژگی‌هایی را روی نقشه تنظیم کنید. می‌توانید این اشیاء را برای ایجاد تغییر در ترکیب نقشه تغییر دهید.

در مثال زیر، از یک Switch ، یک کامپوننت طراحی متریال ، برای تغییر وضعیت کنترل‌های بزرگنمایی روی نقشه استفاده کنید.

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)
    }
  )
}

قدم بعدی چیست؟