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

پلتفرم را انتخاب کنید: Android iOS JavaScript

نقشه سه بعدی که شهر نیویورک را نشان می دهد

در این صفحه مثالی از نحوه افزودن یک نقشه سه بعدی اولیه به یک برنامه اندروید با استفاده از Maps 3D SDK برای Android ارائه شده است. دستورالعمل‌های این صفحه فرض می‌کنند که شما قبلاً مراحل صفحه Setup را تکمیل کرده‌اید و موارد زیر را دارید:

  • پروژه Google Cloud با Maps 3D SDK برای Android فعال است
  • یک کلید API که برای استفاده با Maps 3D SDK برای Android پیکربندی شده است
  • یک پروژه Android Studio که برای استفاده با Maps 3D SDK برای Android تنظیم شده است

برای اطلاعات بیشتر در مورد این پیش نیازها، به تنظیمات مراجعه کنید.

قسمت 1: به‌روزرسانی فایل Layout ( activity_main.xml ) برای افزودن مؤلفه Map3DView

مؤلفه Map3DView نمایی است که نقشه سه بعدی را در برنامه ارائه می کند. مراحل زیر کامپوننت را اضافه کرده و وضعیت اولیه نقشه، از جمله موقعیت دوربین و ویژگی های مرتبط را پیکربندی می کند:

  1. فایل طرح‌بندی فعالیت اصلی خود را باز کنید، که معمولاً در app/src/main/res/layout/activity_main.xml قرار دارد.

  2. در ConstraintLayout ریشه (یا عنصر چیدمان ریشه خود)، فضای نام map3d XML را اضافه کنید:

    xmlns:map3d="http://schemas.android.com/apk/res-auto"
    
  3. <TextView> پیش فرض را که "Hello World!" را نمایش می دهد حذف کنید.

  4. کامپوننت Map3DView را به طرح بندی خود اضافه کنید. می توانید موقعیت دوربین و سایر ویژگی ها را سفارشی کنید:

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:map3d="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
      android:id="@+id/main"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".MainActivity">
    
      <com.google.android.gms.maps3d.Map3DView
        android:id="@+id/map3dView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        map3d:mode="hybrid"
        map3d:centerLat="38.544012"
        map3d:centerLng="-107.670428"
        map3d:centerAlt="2427.6"
        map3d:heading="310"
        map3d:tilt="63"
        map3d:range="8266"
        map3d:roll="0"
        map3d:minAltitude="0"
        map3d:maxAltitude="1000000"
        map3d:minHeading="0"
        map3d:maxHeading="360"
        map3d:minTilt="0"
        map3d:maxTilt="90"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    

قسمت 2: به روز رسانی MainActivity.kt

مراحل زیر مولفه Map3DView اضافه شده به فایل activity_main.xml در قسمت 1 را مقداردهی اولیه می کند و رویدادهای چرخه حیات کامپوننت را مدیریت می کند:

  1. فایل MainActivity.kt خود را باز کنید، که معمولاً در app/src/main/java/com/example/yourpackagename/MainActivity.kt قرار دارد.

  2. وارد کردن های لازم را برای Maps 3D SDK برای Android اضافه کنید:

    import com.google.android.gms.maps3d.GoogleMap3D
    import com.google.android.gms.maps3d.Map3DView
    import com.google.android.gms.maps3d.OnMap3DViewReadyCallback
    
  3. کلاس MainActivity را برای پیاده سازی OnMap3DViewReadyCallback تغییر دهید:

    class MainActivity : AppCompatActivity(), OnMap3DViewReadyCallback {
    
  4. اعلان متغیرها برای Map3DView و GoogleMap3D :

    private lateinit var map3DView: Map3DView
    private var googleMap3D: GoogleMap3D? = null
    
  5. در متد onCreate ، پس از setContentView(...) و بلوک ViewCompat.setOnApplyWindowInsetsListener ، map3DView را مقداردهی اولیه کنید، متد چرخه حیات onCreate آن را فراخوانی کنید و نقشه را به صورت ناهمزمان درخواست کنید:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
    
        map3DView = findViewById(R.id.map3dView)
        map3DView.onCreate(savedInstanceState)
        map3DView.getMap3DViewAsync(this)
    }
    
  6. روش onMap3DViewReady لغو کنید. زمانی که نقشه آماده استفاده باشد، این تماس مجدد فعال می شود:

    override fun onMap3DViewReady(googleMap3D: GoogleMap3D) {
        // Interact with the googleMap3D object here
        this.googleMap3D = googleMap3D
        // You can now make calls to the googleMap3D object, e.g.,
        // googleMap3D.cameraController.flyTo(camera { ... })
    }
    
  7. رویدادهای چرخه حیات را از Activity خود به Map3DView با اضافه کردن موارد زیر به MainActivity منتقل کنید:

    override fun onStart() {
        super.onStart()
        map3DView.onStart()
    }
    
    override fun onResume() {
        super.onResume()
        map3DView.onResume()
    }
    
    override fun onPause() {
        map3DView.onPause()
        super.onPause()
    }
    
    override fun onStop() {
        map3DView.onStop()
        super.onStop()
    }
    
    override fun onDestroy() {
        map3DView.onDestroy()
        super.onDestroy()
    }
    
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        map3DView.onSaveInstanceState(outState)
    }
    
    override fun onLowMemory() {
        super.onLowMemory()
        map3DView.onLowMemory()
    }
    

قسمت 3: همگام سازی Gradle و Run

اکنون که طرح بندی و فعالیت برنامه خود را به روز کرده اید، می توانید برنامه را بسازید و اجرا کنید تا نمای نقشه سه بعدی را ببینید.

  1. برای همگام سازی پروژه خود با Gradle، File > Sync Project with Gradle Files را انتخاب کنید.

  2. برای ساخت و اجرای برنامه خود بر روی یک شبیه ساز یا یک دستگاه فیزیکی، Run > Run را انتخاب کنید.

اگر همه چیز به درستی پیکربندی شده باشد، باید یک نقشه سه بعدی را در برنامه خود مشاهده کنید که در مرکز مختصات مشخص شده در activity_main.xml شما قرار دارد.

مراحل بعدی

اکنون که یک نقشه سه بعدی اولیه را به برنامه خود اضافه کرده اید، می توانید ویژگی های پیشرفته تر Maps 3D SDK برای Android، مانند انیمیشن های مسیر دوربین ، نشانگرهای سه بعدی یا چند ضلعی ها را کاوش کنید.