การตั้งค่า HERE
ขั้นตอนการใช้ HERE SDK ผ่าน MapConductor มีการเริ่มต้นด้วย Access Key ID และ Secret สองรายการ
ก่อนเริ่ม
รับข้อมูลรับรอง
- เข้าถึง HERE Platform
- สร้างโปรเจกต์หรือเลือกโปรเจกต์ที่มีอยู่
- สร้าง Access Key สำหรับ HERE SDK
- คัดลอก Access Key ID และ Secret
เพิ่มด้วย Swift Package Manager
ป้อน URL ของแพ็กเกจจาก File > Add Package Dependencies ใน Xcode SDK เนทีฟจะถูกเพิ่มเป็นการพึ่งพาโดยอัตโนมัติ ไม่จำเป็นต้องเพิ่มแยกต่างหาก
https://github.com/MapConductor/ios-for-here
dependencies: [
.package(url: "https://github.com/MapConductor/ios-sdk-core", from: "1.3.1"),
.package(url: "https://github.com/MapConductor/ios-for-here", from: "1.0.0"),
],
targets: [
.target(
name: "YourApp",
dependencies: [
.product(name: "MapConductorCore", package: "ios-sdk-core"),
.product(name: "MapConductorForHERE", package: "ios-for-here"),
]
),
]เริ่มต้น SDK
เรียก initializeHERE(accessKeyId:accessKeySecret:) เพียงครั้งเดียวก่อนที่จะสร้างมุมมองแผนที่ ฟังก์ชันนี้สามารถโยนข้อผิดพลาดได้ โปรดอย่าละเลยข้อผิดพลาด
import SwiftUI
import MapConductorForHERE
@main
struct MyApp: App {
init() {
do {
try initializeHERE(
accessKeyId: "YOUR_HERE_ACCESS_KEY_ID",
accessKeySecret: "YOUR_HERE_ACCESS_KEY_SECRET"
)
} catch {
assertionFailure("Failed to initialize HERE SDK: \(error)")
}
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}// Alternative: call it from the view's sdkInitialize closure
HereMapView(state: mapState, sdkInitialize: {
try? initializeHERE(
accessKeyId: "YOUR_HERE_ACCESS_KEY_ID",
accessKeySecret: "YOUR_HERE_ACCESS_KEY_SECRET"
)
})เพิ่มสิทธิ์ตำแหน่ง (หากจำเป็น)
หากใช้บริการตำแหน่งใน HERE SDK ให้ระบุวัตถุประสงค์ใน Info.plist
<key>NSLocationWhenInUseUsageDescription</key> <string>We need your location to display on the map</string>
import CoreLocation
final class LocationManager: NSObject, ObservableObject, CLLocationManagerDelegate {
private let manager = CLLocationManager()
override init() {
super.init()
manager.delegate = self
}
func requestPermission() {
manager.requestWhenInUseAuthorization()
}
}ตรวจสอบ
สิ่งที่ควรเห็น
เมื่อแผนที่ HERE ปรากฏและสามารถซูมและเลื่อนได้ ถือว่าเสร็จสิ้น
import SwiftUI
import MapConductorCore
import MapConductorForHERE
struct ContentView: View {
@StateObject var mapState = HereMapViewState(
mapDesignType: HereMapDesign.NormalDay,
cameraPosition: MapCameraPosition(
position: GeoPoint(latitude: 35.6812, longitude: 139.7671),
zoom: 12.0
)
)
var body: some View {
HereMapView(state: mapState)
.ignoresSafeArea()
}
}ดีไซน์แผนที่
HereMapDesign รองรับรูปแบบแผนที่ของ HERE
การแก้ปัญหา
แผนที่ยังคงสีขาวทั้งหมด
- ตรวจสอบว่า Access Key ID และ Secret ถูกต้อง
- ตรวจสอบว่ามีการเรียก initializeHERE ก่อนมุมมองแผนที่หรือไม่
- จับข้อผิดพลาดจากการเริ่มต้นและบันทึกเนื้อหาข้อผิดพลาดลงในบันทึก
การบิลด์ล้มเหลว
- ล้างโฟลเดอร์บิลด์ (Cmd+Shift+K)
- ลบ ~/Library/Developer/Xcode/DerivedData และสร้างใหม่
- อัปเดตการพึ่งพาของ Swift Package Manager หลีกเลี่ยงการใช้ร่วมกับ CocoaPods
ถัดไป
มาร์กเกอร์ เส้นโพลิไลน์ โพลีกอน วงกลม ภาพพื้นดิน เลเยอร์แรสเตอร์ และ InfoBubble สามารถใช้งานได้ผ่าน API ทั่วไป ส่วนรูทรูในโพลีกอนนั้น HERE ไม่รองรับโดยพื้นฐาน จึงมีการสร้างและวาดมาสก์ไทล์ โค้ดผู้เรียกเหมือนกับผู้ให้บริการรายอื่น