दस्तावेज़ / सेटअप / iOS / Mapbox

Mapbox का सेटअप

MapConductor से iOS के लिए Mapbox Maps SDK का उपयोग करने का तरीका। पहले से ही Mapbox पर निर्भर ऐप्स या Mapbox स्टाइल URL की आवश्यकता वाले मामलों में इसे चुना जाता है।

PACKAGE
ios-for-mapbox
API KEY
एक्सेस टोकन
MIN iOS
17.0
VIEW
MapboxMapView
वही प्रोवाइडर, दूसरे प्लेटफ़ॉर्मAndroidReact

शुरू करने से पहले

Xcode 15 या इससे ऊपर
Mapbox खाता (मुफ्त या भुगतान किया गया)
सार्वजनिक एक्सेस टोकन (maps:read स्कोप)
डिप्लॉय टारगेट iOS 17.0 या इससे ऊपर
STEP 01

एक्सेस टोकन प्राप्त करें

  1. Mapbox खाता बनाएं या लॉग इन करें।
  2. "टोकन" से डिफ़ॉल्ट सार्वजनिक टोकन कॉपी करें।
  3. यदि आवश्यक हो, तो maps:read स्कोप वाला टोकन नया बनाएं।
सावधानी
सीक्रेट टोकन को ऐप में एम्बेड न करें। ऐप में उपयोग किया जाने वाला टोकन सार्वजनिक टोकन है।
STEP 02

Swift Package Manager का उपयोग करके जोड़ें

Xcode के File > Add Package Dependencies से पैकेज URL दर्ज करें। Mapbox Maps SDK स्वचालित रूप से निर्भरता के रूप में जुड़ जाएगा।

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

SDK को इनिशियलाइज़ करें

नक़्शा दृश्य बनने से पहले initializeMapbox(accessToken:) को एक बार कॉल करें।

MyApp.swiftSwift
import SwiftUI
import MapConductorForMapbox

@main
struct MyApp: App {
    init() {
        initializeMapbox(accessToken: "YOUR_MAPBOX_PUBLIC_TOKEN")
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
ContentView.swiftSwift
// Alternative: call it from the view's sdkInitialize closure
MapboxMapView(state: mapState, sdkInitialize: {
    initializeMapbox(accessToken: "YOUR_MAPBOX_PUBLIC_TOKEN")
})
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()
    }
}

जाँच

आपको क्या दिखना चाहिए

Mapbox स्टाइल में नक़्शा प्रकट होता है और ज़ूम व पैन काम करता है, तो पूर्ण है।

ContentView.swiftSwiftUI
import SwiftUI
import MapConductorCore
import MapConductorForMapbox

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

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

मैप डिज़ाइन

MapboxMapDesign Mapbox के मानक स्टाइल का समर्थन करता है। कस्टम स्टाइल MapboxMapDesign.custom(styleURI:) से निर्दिष्ट किया जाता है।

MapboxMapDesign
Notes
Standard
डिफ़ॉल्ट स्टैण्डर्ड स्टाइल
Streets
स्ट्रीट स्टाइल
SatelliteStreets
उपग्रह चित्रण + सड़कें व लेबल
Dark
डार्क स्टाइल

समस्या निवारण

नक़्शा पूरी तरह सफेद दिखाई दे रहा है

  • जांचें कि initializeMapbox(accessToken:) नक़्शा दृश्य से पहले कॉल किया गया है या नहीं।
  • जांचें कि टोकन में maps:read स्कोप है या नहीं।
  • जांचें कि डिप्लॉय टारगेट iOS 17.0 या इससे ऊपर है या नहीं।

"अमान्य एक्सेस टोकन" प्रकट होता है

  • टोकन का मान जांचें और पुष्टि करें कि यह समाप्त नहीं हुआ है।
  • जांचें कि आप सीक्रेट टोकन के बजाय सार्वजनिक टोकन का उपयोग कर रहे हैं या नहीं।

बिल्ड विफल हो रहा है

  • बिल्ड फ़ोल्डर साफ़ करें (Cmd+Shift+K)।
  • ~/Library/Developer/Xcode/DerivedData को हटाएं और पुनर्निर्माण करें।
  • Swift Package Manager निर्भरताएं अपडेट करें। CocoaPods के साथ एक साथ उपयोग से बचें।

आगे

MapboxMapView प्रकट होने पर, अन्य प्रदाताओं की तरह समान API का उपयोग करके ओवरले ओवरलैप किए जा सकते हैं।