
این صفحه نمونهای از نحوه افزودن نقشه سهبعدی پایه به برنامه iOS را بااستفاده از «کیت توسعه نرمافزار سهبعدی Maps برای iOS» نشان میدهد. دستورالعملهای این صفحه فرض میکنند که شما قبلاً مراحل موجود در صفحه راهاندازی را تکمیل کردهاید و موارد زیر را دارید:
- پروژه Google Cloud با کیت توسعه نرمافزار ۳ بعدی نقشه برای iOS فعالشده
- کلید میانای برنامهسازی کاربردی برای کیت توسعه نرمافزار ۳ بعدی نقشه برای iOS
- Xcode نسخه 16.0 یا جدیدتر با بسته کیت توسعه نرمافزار Maps 3D برای iOS اضافه شده است.
برای اطلاعات بیشتر درباره این پیشنیازها، به راهاندازی مراجعه کنید.
یک codelab پیشرفتهتر را دنبال کنید.
نمونههای کد بیشتر را در GitHub ببینید.
بخش ۱: ایجاد کردن برنامه SwiftUI پایه
- برنامه جدیدی در Xcode ایجاد کنید.
- نام محصول خود را روی
Hello3DWorldتنظیم کنید و شناسه سازمان را رویcom.exampleتنظیم کنید. نام بسته بایدcom.example.Hello3DWorldباشد. - میانای SwiftUI را انتخاب کنید.
- کتابخانه Maps 3D را به برنامهتان اضافه کنید. دستورالعملها را در بخش راهاندازی ببینید.
بخش ۲: افزودن نقشه
فایل
ContentView.swiftرا باز کن. این نقطه ورود و پیمایش اصلی برنامه شما است.SwiftUIو بستهGoogleMaps3Dرا وارد کنید.همه کدهای داخل اعلان بدنه را با Map(mode: .hybrid) جایگزین کنید.
حداقل پیکربندی اولیهای که باید برای مقداردهی اولیه
Mapارائه دهیدMapModeاست:.hybrid،.roadmap، یا.satellite
فایل
ContentView.swiftشما باید شبیه به این باشد:import SwiftUI import GoogleMaps3D struct ContentView: View { var body: some View { Map(mode: .hybrid) } } #Preview { ContentView() }
بخش ۳: کلید میانای API (کلید میانای برنامهسازی کاربردی) خود را تنظیم کنید.
کلید API باید قبلاز مقداردهی اولیه «نقشه» تنظیم شود. این کار را با تنظیم
Map.apiKeyدر کنترلکننده رویدادinit()ازViewکه حاوی «نقشه» است انجام دهید.import SwiftUI import GoogleMaps3D struct ContentView: View { init () { Map.apiKey = "YOUR_API_KEY" } var body: some View { Map(mode: .hybrid) } }
بخش ۴: استفاده از دوربین برای کنترل نمای نقشه
نماهای سهبعدی نقشه توسط کلاس Camera کنترل میشوند. در این مرحله یاد میگیرید که چگونه مکان، ارتفاع، جهت، شیب، چرخش، و محدوده را برای سفارشیسازی نمای نقشه مشخص کنید.
فراخوانی تابع
Map()را تغییر دهید تا شامل خصوصیتinitialCameraشود.initialCameraرا مقداردهی اولیه کنید تا نمایی از مرکز شهر منهتن نشان داده شود.import SwiftUI import GoogleMaps3D struct ContentView: View { init () { Map.apiKey = "YOUR_API_KEY" } var body: some View { Map(initialCamera: .init( center: .init(latitude: 40.748339, longitude: -73.985912, altitude: 211.1), heading: 52, tilt: 68, roll: 0.0, range: 1039, fieldOfView: .degrees(50) ), mode: .hybrid) } }
کد بالا مقادیر این پارامترها را تنظیم میکند:
center:LatLngAltitudeنشاندهنده مکان دوربینheading: جهت برحسب درجه از شمال برای نشانه رفتن دوربین بهسمت آن.tilt: زاویه شیب به درجه، که ۰ مستقیماً بالای سر است و ۹۰ نگاه افقی است.-
roll: زاویه چرخش حول صفحه عمودی دوربین، به درجه. range: فاصله دوربین از مکان عرض جغرافیایی و طول جغرافیایی به متر-
fieldOfView: زاویهای که میدان دید دوربین را نشان میدهد
اگر هیچکدام از این پارامترهای اضافی را ارائه نکنید، از مقدار پیشفرض استفاده خواهد شد.
برای اینکه نمای دوربین دادههای سهبعدی بیشتری را نشان دهد، پارامترهای اولیه را طوری تنظیم کنید که نمای نزدیکتر و کجشدهای را نشان دهد.
بخش ۵: پیشنمایش و اجرای برنامه
افزودن Xcode Preview
پیشنمایشها یکی از ویژگیهای قدرتمند XCode هستند که به شما امکان میدهند بدون نیاز به استفاده از شبیهساز یا دستگاه خارجی، برنامه خود را ببینید و با آن تعامل داشته باشید.
برای افزودن پیشنمایش، یک بلوک کد
#Preview {}خارج از ساختار خود اضافه کنید.#Preview { ContentView() }اجرای برنامه
برنامه را بسازید و اجرا کنید.
حالتهای خطا و بارگیری نقشه
کیت توسعه نرمافزار Maps 3D برای iOS بهطور خودکار بازخورد بصری داخلی را نمایش میدهد و درعینحال
وضعیت Map را مدیریت میکند:
- پوشش بار کردن: وقتی نمای نقشه برای اولینبار مقداردهی اولیه یا بار میشود، نشانگر پیشرفت در مرکز نمایش داده میشود.
- خطای همپوشانی: اگر نقشه بار نشود، خطای همپوشانی نمایش داده میشود.
اگر سبک نقشه مبتنی بر فضای ابری را بااستفاده از
style(mapID:error:)
در Map اعمال کنید،
میتوانید یک بسته شدن error را برای رسیدگی به خطاهای بارگیری سبک ارسال کنید.
گوش دادن به رویدادهای ضربه زدن روی نقشه
برای گوش دادن به رویدادهای ضربه زدن روی نقشه،
اصلاحکننده onTap(_:) را روی Map اعمال کنید.
When a user taps the map, the closure receives a
MapTapInfo
value that provides the
location
(LatLngAltitude)
and tapped
content
(MapTapInfo.Content.map
or
MapTapInfo.Content.place(id:)).
For more information on point of interest interactions, see
Interact with points of interest.
Map(mode: .hybrid)
.onTap { tapInfo in
print("Tapped at \(tapInfo.location), content: \(tapInfo.content)")
}
تبریک!
باموفقیت نقشه سهبعدی به برنامه اضافه کردید!
سپس میتوانید ویژگیهای پیشرفتهتر «کیت توسعه نرمافزار سهبعدی Maps برای iOS» را کاوش کنید، مانند پویانماییهای مسیر دوربین، نشانگرهای سهبعدی، یا چندضلعیها.