การตั้งค่า Google Maps
นี่คือขั้นตอนการใช้งาน Google Maps SDK for Android จาก MapConductor ครอบคลุมตั้งแต่การรับคีย์ API การแทรกคีย์ด้วย Secrets Gradle Plugin ไปจนถึงการแสดง GoogleMapView
ก่อนเริ่ม
รับคีย์ API
- เข้าถึง Google Cloud Console
- สร้างโปรเจกต์ใหม่หรือเลือกโปรเจกต์ที่มีอยู่
- เปิดใช้งาน Maps SDK for Android
- สร้างคีย์ API จาก "ข้อมูลเข้าสู่ระบบ"
- จำกัดคีย์ด้วยชื่อแพ็กเกจของแอปและลายนิ้วมือ SHA-1 ของใบรับรอง
ติดตั้ง Secrets Gradle Plugin
นี่คือกลไกเพื่อหลีกเลี่ยงการนำคีย์ไปวางในการจัดการซอร์สโค้ด ปลั๊กอินจะอ่าน secrets.properties และแทรกค่าลงในตัวยึดตำแหน่งใน AndroidManifest.xml ขณะบิลด์
plugins {
id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false
}เพิ่ม Dependencies
เพิ่ม Google Maps SDK และโมดูล MapConductor ลงในแอป และใช้ Secrets Gradle Plugin รุ่นของ MapConductor จะถูกกำหนดรวมโดย BOM
plugins {
// ... other plugins
id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}
dependencies {
// Google Maps SDK
implementation("com.google.android.gms:play-services-maps:20.0.0")
// MapConductor BOM pins every module below
implementation(platform("com.mapconductor:mapconductor-bom:1.3.1"))
implementation("com.mapconductor:core")
implementation("com.mapconductor:for-googlemaps")
// Optional: compose / icons / heatmap / marker-clustering / geojson / kml
}ตั้งค่า Manifest และคีย์
เขียนเฉพาะตัวยึดตำแหน่งในไฟล์ Manifest และวางค่าจริงไว้ใน secrets.properties ปลั๊กอินจะทำการแทนที่ขณะบิลด์
<manifest>
<!-- Add location permissions -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application>
<!-- Google Maps API Key -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${GOOGLE_MAPS_API_KEY}" />
</application>
</manifest>GOOGLE_MAPS_API_KEY=your_actual_api_key
ตั้งค่า ProGuard / R8 (หากเกี่ยวข้อง)
หากคุณเปิดใช้การทำให้โค้ดสับสน ให้เก็บคลาสของ Play Services Maps ไว้
# Google Play Services
-keep class com.google.android.gms.maps.** { *; }
-keep interface com.google.android.gms.maps.** { *; }
-dontwarn com.google.android.gms.**ตรวจสอบ
สิ่งที่ควรเห็น
บิลด์และเรียกใช้หน้าจอนี้ หากแผนที่ปรากฏและซูมและเลื่อนแผนที่ได้ แสดงว่าการตั้งค่าเสร็จสมบูรณ์
@Composable
fun TestGoogleMaps(modifier: Modifier = Modifier) {
val mapState = rememberGoogleMapViewState(
cameraPosition = MapCameraPosition(
position = GeoPoint(35.6762, 139.6503),
zoom = 12.0,
),
)
// If the map appears, the setup is correct.
GoogleMapView(modifier = modifier, state = mapState)
}ดีไซน์แผนที่
GoogleMapDesign คือการคัดลอกประเภทแผนที่ของ Google ตามที่เป็นอยู่
การแก้ปัญหา
แผนที่ไม่แสดง (หน้าจอสีเทา)
- ตรวจสอบว่าคีย์ API ใน secrets.properties ถูกต้องหรือไม่
- ตรวจสอบว่าเปิดใช้งาน Maps SDK for Android ใน Google Cloud Console หรือไม่
- ตรวจสอบว่าข้อจำกัดของคีย์ตรงกับชื่อแพ็กเกจและ SHA-1 จริงหรือไม่
ในบันทึกมีข้อผิดพลาดของคีย์ API
- ตรวจสอบค่าและวันหมดอายุของคีย์
- ตรวจสอบการตั้งค่าข้อจำกัดฝั่งคอนโซล
บิลด์ไม่ผ่าน
- ตรวจสอบว่าพิกัดและเวอร์ชันของแผนที่ SDK ตรงกับที่ระบุใน version catalog หรือไม่
- ตรวจสอบว่ามีคำจำกัดความของที่เก็บใน settings.gradle.kts หรือไม่ (หาก repositoriesMode เป็น FAIL_ON_PROJECT_REPOS ระบบจะละเว้น repositories ฝั่งโมดูล)
- หากมีแผนที่ SDK หลายตัวในเวลาเดียวกัน ให้ตรวจสอบว่ามีความขัดแย้งของการพึ่งพาหรือไม่โดยใช้ ./gradlew :app:dependencies
ถัดไป
เมื่อ GoogleMapView ปรากฏขึ้น คุณสามารถเขียนโอเวอร์เลย์ เช่น Marker, Polyline, Circle ด้วย API ทั่วไปได้ แม้จะเปลี่ยนผู้ให้บริการ โค้ดส่วนนั้นจะไม่เปลี่ยนแปลง