Swift Academy · पाठ

उपयोगकर्ता का स्थान प्राप्त करना

CLLocationManager से स्थान अपडेट प्राप्त कीजिए।

पाठ 2, कुल 4 में से13 चरण

उपयोगकर्ता का स्थान प्राप्त करना, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्थान अपडेट शुरू करना

अनुमति मिलने के बाद लगातार स्थान फ़िक्स प्राप्त करना शुरू करने के लिए startUpdatingLocation() कॉल करें। मैनेजर उन्हें डेलीगेट के ज़रिए उपलब्ध कराता है। जब उनकी आवश्यकता न रहे, तो बैटरी बचाने के लिए हमेशा stopUpdatingLocation() कॉल करें।

manager.startUpdatingLocation()
// ... later
manager.stopUpdatingLocation()

डेलीगेट में स्थान प्राप्त करना

नए फ़िक्स locationManager(_:didUpdateLocations:) में आते हैं। सरणी पुराने से नए क्रम में होती है, इसलिए अंतिम तत्व सबसे नया स्थान होता है।

func locationManager(_ m: CLLocationManager,
                     didUpdateLocations locations: [CLLocation]) {
    guard let latest = locations.last else { return }
    print(latest.coordinate.latitude, latest.coordinate.longitude)
}

CLLocation ऑब्जेक्ट

हर फ़िक्स एक CLLocation होता है, जिसमें केवल निर्देशांकों से कहीं अधिक जानकारी होती है: coordinate, altitude, speed, course, timestamp और सटीकता के मान। इनकी जाँच करके तय करें कि फ़िक्स पर्याप्त अच्छा है या नहीं।

func describe(_ loc: CLLocation) {
    print("lat:", loc.coordinate.latitude)
    print("lon:", loc.coordinate.longitude)
    print("alt:", loc.altitude)
    print("when:", loc.timestamp)
}

वांछित सटीकता

फ़िक्स कितने सटीक होने चाहिए, यह बताने के लिए desiredAccuracy सेट करें। अधिक सटीकता में अधिक ऊर्जा लगती है। उपलब्ध स्थिरांकों में kCLLocationAccuracyBest, kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyHundredMeters और kCLLocationAccuracyKilometer शामिल हैं।

manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters

दूरी फ़िल्टर

अपडेट को तब तक रोकने के लिए distanceFilter का उपयोग करें, जब तक डिवाइस कम-से-कम निर्धारित मीटर न चल ले। इससे शोर कम होता है और उन उपयोग-स्थितियों में ऊर्जा बचती है जहाँ हर छोटी-सी गतिविधि की आवश्यकता नहीं होती।

manager.distanceFilter = 50 // meters

फ़िक्स की गुणवत्ता आँकना

horizontalAccuracy गुण भरोसे के दायरे को मीटर में दर्शाता है। ऋणात्मक मान का अर्थ है कि फ़िक्स अमान्य है। पुराने फ़िक्स को भी अस्वीकार करें; इसके लिए जाँचें कि timestamp कितना पुराना है।

func isUsable(_ loc: CLLocation) -> Bool {
    guard loc.horizontalAccuracy >= 0 else { return false }
    let age = -loc.timestamp.timeIntervalSinceNow
    return age < 15 && loc.horizontalAccuracy < 100
}

एक बार का स्थान माँगना

यदि आपको लगातार प्रवाह के बजाय केवल एक फ़िक्स चाहिए, तो requestLocation() कॉल करें। मैनेजर डेलीगेट को एक स्थान देता है और फिर अपने-आप रुक जाता है। यह लगातार अपडेट शुरू करने की तुलना में बैटरी के लिए अधिक अनुकूल है।

manager.requestLocation()

स्थान संबंधी त्रुटियाँ सँभालना

विफलताएँ locationManager(_:didFailWithError:) में आती हैं। इनमें एक सामान्य त्रुटि CLError.locationUnknown है, जो अक्सर अस्थायी होती है — प्रतीक्षा करते रहें। CLError.denied का अर्थ है कि अनुमति वापस ले ली गई है, इसलिए आपको रुक जाना चाहिए।

func locationManager(_ m: CLLocationManager,
                     didFailWithError error: Error) {
    if let clErr = error as? CLError, clErr.code == .denied {
        m.stopUpdatingLocation()
    }
}

महत्वपूर्ण-परिवर्तन निगरानी

कम-ऊर्जा वाली, मोटे स्तर की ट्रैकिंग के लिए, जो आपके ऐप को background में सक्रिय कर सकती है, startMonitoringSignificantLocationChanges() का उपयोग करें। यह केवल डिवाइस के लगभग 500 मीटर चलने के बाद सक्रिय होती है और क्षेत्र-आधारित सुविधाओं के लिए आदर्श है।

manager.startMonitoringSignificantLocationChanges()

दिशा और यात्रा-पथ

कम्पास सुविधाओं के लिए startUpdatingHeading(), locationManager(_:didUpdateHeading:) के ज़रिए चुंबकीय या वास्तविक दिशा उपलब्ध कराता है। ध्यान दें कि CLLocation.course यात्रा की दिशा होती है, जो उपकरण के अभिविन्यास से अलग होती है।

func locationManager(_ m: CLLocationManager,
                     didUpdateHeading newHeading: CLHeading) {
    print("Heading:", newHeading.trueHeading)
}

बिंदुओं के बीच दूरी निकालना

CLLocation, distance(from:) की सहायता से किसी दूसरे स्थान तक सीधी रेखा की दूरी माप सकता है और परिणाम मीटर में देता है। किसी मानचित्र इंटरफ़ेस के बिना निकटता संबंधी तर्क के लिए यह उपयोगी है।

let a = CLLocation(latitude: 41.0, longitude: 28.9)
let b = CLLocation(latitude: 41.1, longitude: 29.0)
let meters = a.distance(from: b)
print("Distance:", meters)

त्वरित जाँच: स्थान प्राप्त करना

स्थान फ़िक्स प्राप्त करने की अपनी समझ जाँचें।

पुनरावलोकन: उपयोगकर्ता का स्थान प्राप्त करना

अब आप निर्देशांक प्राप्त करना जानते हैं:

  • प्रवाह के लिए startUpdatingLocation() और एक फ़िक्स के लिए requestLocation() का उपयोग करें।
  • डेलीगेट में locations.last से सबसे नया फ़िक्स पढ़ें।
  • ऊर्जा और सटीकता के बीच संतुलन के लिए desiredAccuracy और distanceFilter समायोजित करें।
  • फ़िक्स का उपयोग करने से पहले horizontalAccuracy और timestamp को मान्य करें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “उपयोगकर्ता का स्थान प्राप्त करना” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “उपयोगकर्ता का स्थान प्राप्त करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“उपयोगकर्ता का स्थान प्राप्त करना” में मैं क्या सीखूँगा?

CLLocationManager से स्थान अपडेट प्राप्त कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“उपयोगकर्ता का स्थान प्राप्त करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. स्थान की अनुमति माँगना
  2. उपयोगकर्ता का स्थान प्राप्त करना
  3. SwiftUI में मानचित्र प्रदर्शित करना
  4. जियोकोडिंग और क्षेत्र
← Swift Academy पर वापस जाएँ