
این صفحه مثالی از نحوهی افزودن یک نقشهی سهبعدی پایه به یک برنامهی اندروید با استفاده از Maps 3D SDK برای اندروید را ارائه میدهد. دستورالعملهای این صفحه فرض میکنند که شما مراحل صفحهی تنظیمات را قبلاً انجام دادهاید و موارد زیر را دارید:
- یک پروژه گوگل کلود با Maps 3D SDK فعال برای اندروید
- یک کلید API پیکربندی شده برای استفاده با Maps 3D SDK برای اندروید
- یک پروژه اندروید استودیو که برای استفاده با Maps 3D SDK برای اندروید تنظیم شده است
برای اطلاعات بیشتر در مورد این پیشنیازها، به بخش تنظیمات مراجعه کنید.
بخش ۱: بهروزرسانی فایل طرحبندی ( activity_main.xml ) برای افزودن کامپوننت Map3DView
کامپوننت Map3DView نمایی است که نقشه سهبعدی را درون برنامه رندر میکند. مراحل زیر این کامپوننت را اضافه کرده و وضعیت اولیه نقشه، از جمله موقعیت دوربین و ویژگیهای مرتبط را پیکربندی میکند:
فایل طرحبندی فعالیت اصلی خود را که معمولاً در
app/src/main/res/layout/activity_main.xmlقرار دارد، باز کنید.در
ConstraintLayoutریشه (یا عنصر طرحبندی ریشه خود)، فضای نامmap3dXML را اضافه کنید: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>
بخش ۲: بهروزرسانی MainActivity.kt
مراحل زیر، کامپوننت Map3DView اضافه شده به فایل activity_main.xml در بخش 1 را مقداردهی اولیه کرده و رویدادهای چرخه عمر کامپوننت را مدیریت میکند:
فایل
MainActivity.ktخود را که معمولاً در آدرسapp/src/main/java/com/example/yourpackagename/MainActivity.ktقرار دارد، باز کنید.ایمپورتهای لازم برای Maps 3D SDK برای اندروید را اضافه کنید:
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 { ... }) }با اضافه کردن override های زیر به
MainActivity، رویدادهای چرخه حیات را از Activity خود بهMap3DViewمنتقل کنید: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() }
بخش ۳: همگامسازی Gradle و اجرا
اکنون که طرحبندی و فعالیت برنامه خود را بهروزرسانی کردهاید، میتوانید برنامه را بسازید و اجرا کنید تا نمای نقشه سهبعدی را ببینید.
برای همگامسازی پروژه خود با Gradle، از منوی File گزینه Sync Project with Gradle Files را انتخاب کنید.
برای ساخت و اجرای برنامه خود روی یک شبیهساز یا یک دستگاه فیزیکی، Run > Run را انتخاب کنید.
اگر همه چیز به درستی پیکربندی شده باشد، باید یک نقشه سهبعدی در برنامه خود مشاهده کنید که در مرکز مختصات مشخص شده در activity_main.xml شما قرار دارد.
مراحل بعدی
حالا که یک نقشه سهبعدی پایه به برنامهتان اضافه کردهاید، میتوانید ویژگیهای پیشرفتهتر Maps 3D SDK برای اندروید، مانند انیمیشنهای مسیر دوربین ، نشانگرهای سهبعدی یا چندضلعیها را بررسی کنید.