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

การตั้งค่า ArcGIS

ขั้นตอนการใช้ ArcGIS Maps SDK for Swift จาก MapConductor คุณสามารถเลือกแผนที่พื้นฐานของ ArcGIS ใน ArcGISDesign และมีทั้งมุมมอง 3D และ 2D ให้ใช้งาน

PACKAGE
ios-for-arcgis
API KEY
จำเป็น
MIN iOS
17.0
VIEW
ArcGISMapView / 2D
ผู้ให้บริการเดียวกัน แพลตฟอร์มอื่นAndroidReact

ก่อนเริ่ม

Xcode 15 ขึ้นไป
บัญชีนักพัฒนา ArcGIS
คีย์ API ของ ArcGIS
เป้าหมายการนำไปใช้งาน iOS 17.0 ขึ้นไป
STEP 01

รับคีย์ API

  1. เข้าถึง ArcGIS Location Platform หรือ ArcGIS Developers
  2. สร้างคีย์ API สำหรับโปรเจกต์
  3. เปิดใช้งานบริการ ArcGIS ที่จำเป็น (แผนที่พื้นฐาน การระบุพิกัดภูมิศาสตร์ การเส้นทาง ฯลฯ)
  4. จำกัดคีย์ตามวัตถุประสงค์ของแอป
STEP 02

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

ป้อน URL ของแพ็กเกจที่ File > Add Package Dependencies ใน Xcode ArcGIS Maps SDK for Swift จะถูกเพิ่มเป็นการพึ่งพาโดยอัตโนมัติ

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

เริ่มต้น SDK

เรียก `arcGISApiKeyInitialize(apiKey:)` เพียงครั้งเดียวก่อนสร้างมุมมองแผนที่

MyApp.swiftSwift
import SwiftUI
import MapConductorForArcGIS

@main
struct MyApp: App {
    init() {
        _ = arcGISApiKeyInitialize(apiKey: "YOUR_ARCGIS_API_KEY")
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
ContentView.swiftSwift
// Alternative: call it from the view's sdkInitialize closure
ArcGISMapView(state: mapState, sdkInitialize: {
    _ = arcGISApiKeyInitialize(apiKey: "YOUR_ARCGIS_API_KEY")
})
STEP 04

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

หากใช้ตำแหน่ง ให้ระบุวัตถุประสงค์ใน 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()
    }
}

ตรวจสอบ

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

แสดงแผนที่ในมุมมอง 3D หากส่งออบเจกต์สถานะเดียวกันไปที่ `ArcGISMapView2D` จะแสดงเป็นมุมมอง 2D หากซูม เลื่อน และ (ใน 3D) ทำงานได้ ถือว่าเสร็จสิ้น

ContentView.swiftSwiftUI
import SwiftUI
import MapConductorCore
import MapConductorForArcGIS

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

    var body: some View {
        // 3D scene view; ArcGISMapView2D takes the very same state
        ArcGISMapView(state: mapState)
            .ignoresSafeArea()
    }
}

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

ArcGISDesign รองรับแผนที่พื้นฐานของ Esri จาก ID ที่รู้จักสามารถสร้างด้วย `ArcGISDesign.Create(id:)`

ArcGISDesign
Notes
Streets
แผนที่ถนนมาตรฐาน
Imagery
ภาพดาวเทียม
Topographic
แผนที่ภูมิประเทศ
OsmStandard
สไตล์มาตรฐาน OpenStreetMap
NavigationNight
การนำทางกลางคืน
DarkGray
สำหรับพื้นหลังข้อมูล

การแก้ปัญหา

แผนที่ยังคงขาวว่างเปล่า

  • ตรวจสอบว่ามีการเรียก `arcGISApiKeyInitialize(apiKey:)` ก่อนมุมมองแผนที่หรือไม่
  • ตรวจสอบว่าได้เปิดใช้งานบริการ ArcGIS ที่จำเป็นในคีย์แล้วหรือยัง
  • ตรวจสอบว่าเป้าหมายการนำไปใช้งานเป็น iOS 17.0 ขึ้นไปหรือไม่

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

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

ถัดไป

ArcGISMapView คือ 3D, ArcGISMapView2D คือ 2D ทั้งสองแชร์ออบเจกต์สถานะเดียวกัน