เอกสาร / การตั้งค่า / Android / HERE

การตั้งค่า HERE

ขั้นตอนการใช้งาน HERE SDK (คาดว่าเป็น Explore Edition) จาก MapConductor เนื่องจาก HERE SDK ถูกจำหน่ายในรูปแบบ AAR ไม่ใช่ผ่าน Maven จึงมีขั้นตอนในการวางไฟล์ลงในโปรเจกต์

MODULE
com.mapconductor:for-here
API KEY
Key ID + Secret
VIEW
HereMapView
TIME
25 นาที
ผู้ให้บริการเดียวกัน แพลตฟอร์มอื่นiOSReact

ก่อนเริ่ม

สภาพแวดล้อมการพัฒนา Android (Android Studio)
บัญชีนักพัฒนา HERE
Access Key ID และ Access Key Secret
ไฟล์ AAR ของ HERE SDK Explore Android (ซีรีส์ 4.26)
STEP 01

เตรียมข้อมูลรับรองและ AAR

  1. สร้างบัญชี HERE Developer
  2. สร้างโปรเจกต์ใน HERE Developer Portal
  3. สร้าง Access Key ID และ Secret
  4. ดาวน์โหลด AAR ของ HERE SDK Explore Android หากเป็นซีรีส์ 4.26 จะสามารถทำงานได้
STEP 02

วาง AAR ลงในโปรเจกต์

วาง AAR ไว้ที่ libs/ ของโปรเจกต์ ชื่อไฟล์ต้องตรงกับชื่อที่ Gradle อ้างอิงโดยสมบูรณ์

project layouttext
<project root>/
└── libs/
    └── heresdk-explore-android-4.27.2.0.309975.aar
หมายเลขบิลด์ที่รวมอยู่ในชื่อไฟล์เป็นค่าอ้างอิง การพัฒนาและตรวจสอบ MapConductor ดำเนินการโดยใช้เวอร์ชันนี้ แต่ไม่จำเป็นต้องแก้ไขที่นี่ MapConductor ถูกออกแบบมาเพื่อไม่พึ่งพาฟีเจอร์เฉพาะของ SDK แผนที่แต่ละตัวให้มากนัก จึงยังสามารถทำงานได้แม้เวอร์ชันจะแตกต่างกันเล็กน้อย โปรดอ่านชื่อไฟล์จาก AAR ที่ดาวน์โหลดจริงให้ถูกต้อง
ข้อควรระวัง
การจำหน่ายซ้ำ AAR ของ HERE SDK ถูกจำกัด โปรดอย่า commit ไปยัง repository สาธารณะ (เพิ่ม libs/heresdk-*.aar ใน .gitignore)
STEP 03

เพิ่ม Secrets Gradle Plugin

กลไกเพื่อหลีกเลี่ยงการวางคีย์ไว้ในการจัดการซอร์สโค้ด ปลั๊กอินจะอ่าน secrets.properties และแทรกค่าลงในตัวยึดตำแหน่งใน AndroidManifest.xml ขณะสร้าง

(root)/build.gradle.ktsKotlin
plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false
}
STEP 04

เพิ่มการพึ่งพา

AAR จะถูกอ้างอิงเป็นไฟล์ในเครื่อง โปรดปรับชื่อไฟล์ให้ตรงกับไฟล์ที่วางไว้จริง

app/build.gradle.ktsKotlin
plugins {
    // ... other plugins
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}

dependencies {
    // HERE SDK (local AAR).
    // This build number is only the one MapConductor is developed against —
    // use the file name of the AAR you downloaded.
    implementation(
        files("${rootProject.projectDir}/libs/heresdk-explore-android-4.27.2.0.309975.aar")
    )

    // MapConductor BOM pins every module below
    implementation(platform("com.mapconductor:mapconductor-bom:1.3.1"))

    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-here")
}
STEP 05

ตั้งค่าไฟล์ Manifest และข้อมูลรับรอง

HERE ใช้ทั้ง ID และ Secret โดยส่งผ่านทั้งคู่ผ่านตัวยึดตำแหน่ง

AndroidManifest.xmlXML
<manifest>
    <!-- Add internet and location permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application>
        <!-- HERE Access Key ID -->
        <meta-data
            android:name="HERE_ACCESS_KEY_ID"
            android:value="${HERE_ACCESS_KEY_ID}" />

        <!-- HERE Access Key Secret -->
        <meta-data
            android:name="HERE_ACCESS_KEY_SECRET"
            android:value="${HERE_ACCESS_KEY_SECRET}" />
    </application>
</manifest>
secrets.propertiesProperties
HERE_ACCESS_KEY_ID=your_actual_here_access_key_id
HERE_ACCESS_KEY_SECRET=your_actual_here_access_key_secret
ข้อควรระวัง
อย่า commit secrets.properties ลงในการควบคุมเวอร์ชัน การเพิ่มลงใน .gitignore จะช่วยป้องกันข้อผิดพลาด ใน CI จะส่งผ่านทางอื่นที่ปลอดภัย เช่น ตัวแปรสภาพแวดล้อม

ตรวจสอบ

สิ่งที่ควรเห็น

หากแผนที่ของ HERE ปรากฏขึ้น ถือว่าเสร็จสิ้น

TestHere.ktJetpack Compose
@Composable
fun TestHere(modifier: Modifier = Modifier) {
    val mapState = rememberHereMapViewState(
        cameraPosition = MapCameraPosition(
            position = GeoPoint(35.6762, 139.6503),
            zoom = 12.0,
        ),
    )

    // If the map appears, the setup is correct.
    HereMapView(modifier = modifier, state = mapState)
}

ดีไซน์แผนที่

HereMapDesign รองรับรูปแบบแผนที่ของ HERE มีสไตล์สำหรับวัตถุประสงค์ต่างๆ เช่น กลางวัน/กลางคืน หรือสำหรับลอจิสติกส์

HereMapDesign
Notes
NormalDay / NormalNight
สไตล์มาตรฐาน กลางวัน/กลางคืน
Satellite
ภาพดาวเทียม
HybridDay / HybridNight
ภาพดาวเทียมพร้อมถนนและป้ายกำกับ
LiteDay / LiteNight
สไตล์เบาที่ลดรายละเอียดข้อมูล
LogisticsDay
สำหรับโลจิสติกส์
RoadNetworkDay
เน้นเครือข่ายถนน

การแก้ปัญหา

แผนที่ไม่โหลด

  • ตรวจสอบว่า Access Key ID และ Secret ใน `secrets.properties` ถูกต้องหรือไม่
  • ตรวจสอบว่าคีย์ถูกต้อง (ไม่ถูกปิดใช้งาน) หรือไม่

รายงานว่าไม่พบ AAR

  • ตรวจสอบว่า AAR อยู่ใน `libs/` หรือไม่
  • ตรวจสอบว่าชื่อไฟล์ตรงกับที่ระบุใน `build.gradle.kts` อย่างสมบูรณ์ (รวมถึงหมายเลขเวอร์ชัน) หรือไม่

บิลด์ไม่ผ่าน

  • ตรวจสอบว่าพิกัดและเวอร์ชันของ Map SDK ตรงกับที่ระบุในคาตาล็อกเวอร์ชันหรือไม่
  • ตรวจสอบว่ามีคำจำกัดความของที่เก็บใน `settings.gradle.kts` หรือไม่ (หาก `repositoriesMode` คือ `FAIL_ON_PROJECT_REPOS` รายการ `repositories` ฝั่งโมดูลจะถูกละเว้น)
  • หากมีการติดตั้ง Map SDK หลายตัวพร้อมกัน ให้ตรวจสอบความขัดแย้งของการพึ่งพาด้วย `./gradlew :app:dependencies`

ถัดไป

เมื่อ `HereMapView` ปรากฏขึ้น คุณสามารถวางซ้อนโอเวอร์เลย์ด้วย API ทั่วไปเดียวกันกับผู้ให้บริการรายอื่นได้