เอกสาร / การตั้งค่า / 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
ก่อนเริ่ม
Xcode 15 ขึ้นไป
บัญชีนักพัฒนา ArcGIS
คีย์ API ของ ArcGIS
เป้าหมายการนำไปใช้งาน iOS 17.0 ขึ้นไป
STEP 01
รับคีย์ API
- เข้าถึง ArcGIS Location Platform หรือ ArcGIS Developers
- สร้างคีย์ API สำหรับโปรเจกต์
- เปิดใช้งานบริการ ArcGIS ที่จำเป็น (แผนที่พื้นฐาน การระบุพิกัดภูมิศาสตร์ การเส้นทาง ฯลฯ)
- จำกัดคีย์ตามวัตถุประสงค์ของแอป
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 ทั้งสองแชร์ออบเจกต์สถานะเดียวกัน