در این صفحه مثالی از نحوه افزودن یک نقشه سه بعدی اولیه به یک برنامه اندروید با استفاده از 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
نمایی است که نقشه سه بعدی را در برنامه ارائه می کند. مراحل زیر کامپوننت را اضافه کرده و وضعیت اولیه نقشه، از جمله موقعیت دوربین و ویژگی های مرتبط را پیکربندی می کند:
فایل طرحبندی فعالیت اصلی خود را باز کنید، که معمولاً در
app/src/main/res/layout/activity_main.xml
قرار دارد.در
ConstraintLayout
ریشه (یا عنصر چیدمان ریشه خود)، فضای نامmap3d
XML را اضافه کنید:xmlns:map3d="http://schemas.android.com/apk/res-auto"
<TextView>
پیش فرض را که "Hello World!" را نمایش می دهد حذف کنید.کامپوننت
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 را مقداردهی اولیه می کند و رویدادهای چرخه حیات کامپوننت را مدیریت می کند:
فایل
MainActivity.kt
خود را باز کنید، که معمولاً درapp/src/main/java/com/example/yourpackagename/MainActivity.kt
قرار دارد.وارد کردن های لازم را برای 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
کلاس
MainActivity
را برای پیاده سازیOnMap3DViewReadyCallback
تغییر دهید:class MainActivity : AppCompatActivity(), OnMap3DViewReadyCallback {
اعلان متغیرها برای
Map3DView
وGoogleMap3D
:private lateinit var map3DView: Map3DView private var googleMap3D: GoogleMap3D? = null
در متد
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) }
روش
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 { ... }) }
رویدادهای چرخه حیات را از 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
اکنون که طرح بندی و فعالیت برنامه خود را به روز کرده اید، می توانید برنامه را بسازید و اجرا کنید تا نمای نقشه سه بعدی را ببینید.
برای همگام سازی پروژه خود با Gradle، File > Sync Project with Gradle Files را انتخاب کنید.
برای ساخت و اجرای برنامه خود بر روی یک شبیه ساز یا یک دستگاه فیزیکی، Run > Run را انتخاب کنید.
اگر همه چیز به درستی پیکربندی شده باشد، باید یک نقشه سه بعدی را در برنامه خود مشاهده کنید که در مرکز مختصات مشخص شده در activity_main.xml
شما قرار دارد.
مراحل بعدی
اکنون که یک نقشه سه بعدی اولیه را به برنامه خود اضافه کرده اید، می توانید ویژگی های پیشرفته تر Maps 3D SDK برای Android، مانند انیمیشن های مسیر دوربین ، نشانگرهای سه بعدی یا چند ضلعی ها را کاوش کنید.