เอกสาร / การตั้งค่า / iOS / Apple MapKit

การตั้งค่า Apple MapKit

ขั้นตอนการใช้ Apple MapKit จาก MapConductor ไม่ต้องการการพึ่งพาภายนอก คีย์ API หรือการเริ่มต้น SDK จึงเป็นผู้ให้บริการ iOS ที่ต้องการการเตรียมการน้อยที่สุด

PACKAGE
ios-for-mapkit
API KEY
ไม่จำเป็น
MIN iOS
15.1
VIEW
MapKitMapView
ผู้ให้บริการเดียวกัน แพลตฟอร์มอื่นReact

ก่อนเริ่ม

Xcode 15 ขึ้นไป
เป้าหมายการนำไปใช้ iOS 15.1 ขึ้นไป
STEP 01

เพิ่มด้วย Swift Package Manager

MapKit ถูกรวมอยู่ใน iOS ดังนั้นจึงไม่ต้องการบัญชี คีย์ หรือการเริ่มต้นเพิ่มเติม เพียงเพิ่มแพ็กเกจ

Package URLSwift Package Manager
https://github.com/MapConductor/ios-for-mapkit
Package.swiftSwift
dependencies: [
    .package(url: "https://github.com/MapConductor/ios-sdk-core", from: "1.3.1"),
    .package(url: "https://github.com/MapConductor/ios-for-mapkit", from: "1.0.0"),
],
targets: [
    .target(
        name: "YourApp",
        dependencies: [
            .product(name: "MapConductorCore", package: "ios-sdk-core"),
            .product(name: "MapConductorForMapKit", package: "ios-for-mapkit"),
        ]
    ),
]
STEP 02

เพิ่มสิทธิ์ตำแหน่ง (หากจำเป็น)

หากใช้ข้อมูลตำแหน่ง ให้ระบุวัตถุประสงค์ใน Info.plist และขออนุญาตจากแอป

Info.plistXML
<key>NSLocationWhenInUseUsageDescription</key>
<string>We need your location to display on the map</string>
LocationManager.swiftSwift
import CoreLocation

final class LocationManager: NSObject, ObservableObject, CLLocationManagerDelegate {
    private let manager = CLLocationManager()

    override init() {
        super.init()
        manager.delegate = self
    }

    func requestPermission() {
        manager.requestWhenInUseAuthorization()
    }
}

ตรวจสอบ

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

ถ้าแผนที่ปรากฏและฟังก์ชันซูมและเลื่อนทำงานได้ ก็เสร็จสิ้นแล้ว

ContentView.swiftSwiftUI
import SwiftUI
import MapConductorCore
import MapConductorForMapKit

struct ContentView: View {
    @StateObject var mapState = MapKitViewState(
        mapDesignType: MapKitMapDesign.Standard,
        cameraPosition: MapCameraPosition(
            position: GeoPoint(latitude: 35.6812, longitude: 139.7671),
            zoom: 12.0
        )
    )

    var body: some View {
        MapKitMapView(state: mapState)
            .ignoresSafeArea()
    }
}

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

MapKitMapDesign รองรับ MKMapType

MapKitMapDesign
Notes
Standard
แผนที่ถนนมาตรฐาน
Satellite
ภาพดาวเทียม
Hybrid
ภาพดาวเทียม + ถนนและป้ายกำกับ
MutedStandard
สไตล์สีอ่อนสำหรับพื้นฐานข้อมูล

การแก้ปัญหา

แผนที่ไม่ปรากฏ

  • ตรวจสอบว่าเป้าหมายการนำไปใช้เป็น iOS 15.1 ขึ้นไปหรือไม่
  • ตรวจสอบว่า MapConductorForMapKit ถูกเชื่อมโยงกับเป้าหมายหรือไม่

การบิลด์ล้มเหลว

  • ล้างโฟลเดอร์บิลด์ (Cmd+Shift+K)
  • ลบ ~/Library/Developer/Xcode/DerivedData แล้วบิลด์ใหม่
  • อัปเดตการพึ่งพาของ Swift Package Manager หลีกเลี่ยงการใช้ร่วมกับ CocoaPods

ถัดไป

หากมีเป้าหมายเฉพาะแพลตฟอร์ม Apple เนื่องจากไม่ต้องการ SDK หรือคีย์เพิ่มเติม ขนาดการกระจายจึงเล็กลง บนเว็บยังสามารถใช้ผู้ให้บริการ MapKit JS ได้