इलाके के ऐंकर

इलाके का ऐंकर एक तरह का जियोस्पेशल ऐंकर होता है. यह आपको अक्षांश और देशांतर की जानकारी का इस्तेमाल करके, एआर ऑब्जेक्ट दिखाने की सुविधा देता है. इसके लिए, Google Maps से मिलने वाली जानकारी का इस्तेमाल किया जाता है, ताकि ज़मीन की ऊंचाई की सटीक जानकारी हासिल की जा सके.

ज़रूरी शर्तें

आगे बढ़ने से पहले जियोस्पेशल एपीआई चालू करें.

हवाई जहाज़ खोजने का मोड सेट करें

चुने गए विमान की पहचान करने वाला मोड, नियंत्रित भू-भाग के ऐंकर की स्थिरता को नियंत्रित करता है. ARWorldTrackingConfiguration.PlaneDetection का इस्तेमाल करके, चुनें कि आपके ऐप्लिकेशन में हवाई जहाज़ों का पता कैसे लगाया जाए.

मोड व्यवहार इस्तेमाल का उदाहरण
horizontal | vertical ARKit, फ़र्श और दीवारों जैसे हॉरिज़ॉन्टल और वर्टिकल प्लैटफ़ॉर्म का पता लगाता है. ऐसा इसलिए, क्योंकि हवाई जहाज़ उन पर रखे गए एआर ऑब्जेक्ट को सही तरीके से रेंडर करते हैं. आपके ऐप्लिकेशन को हॉरिज़ॉन्टल और वर्टिकल, दोनों तरह की सतहों को पहचानना होगा.
horizontal ARKit सिर्फ़ हॉरिज़ॉन्टल प्लैटफ़ॉर्म का पता लगाता है. आपके ऐप्लिकेशन को सिर्फ़ हॉरिज़ॉन्टल प्लैटफ़ॉर्म को पहचाननी होगी. इसका इस्तेमाल करके, कंप्यूटेशनल पावर सेव करें.
vertical ARKit सिर्फ़ वर्टिकल प्लैटफ़ॉर्म का पता लगाता है. आपके ऐप्लिकेशन को सिर्फ़ वर्टिकल प्लैटफ़ॉर्म की पहचान करनी होगी. इसका इस्तेमाल करके, कंप्यूटेशनल पावर सेव करें.
[] (खाली सेट लिटरल) हवाई जहाज़ का पता लगाने की सुविधा बंद है. हो सकता है कि इलाके के ऐंकर की पोज़िशनिंग कम सटीक हो. आपके ऐप्लिकेशन को सटीक हवाई जहाज़ का पता लगाने की ज़रूरत नहीं है.

इलाके का ऐंकर बनाना

इलाके का ऐंकर बनाने और रखने के लिए, GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:error: को कॉल करें.

if (garFrame.earth.trackingState == GARTrackingStateTracking) {
  NSError *error = nil;
  GARAnchor *anchor = [garSession createAnchorWithCoordinate:coordinate
                                        altitudeAboveTerrain:0
                                          eastUpSouthQAnchor:eastUpSouthQAnchor
                                                       error:&error];
}

उत्तरी या दक्षिणी ध्रुवों के 0.1 डिग्री (90 डिग्री या -90 डिग्री) में ऐंकर बनाने की सुविधा उपलब्ध नहीं है. अगर ऐसा ऐंकर मौजूद होता है, तो createAnchorWithCoordinate:altitude:eastUpSouthQAnchor:error: GARSessionErrorCodeInvalidArgument दिखाएगा और ऐंकर नहीं बनेगा.

इलाके की ऐंकर स्थिति देखें

इसके बनने के बाद, किसी टेरेन ऐंकर के साथ एक स्टेट अटैच हो जाएगा.

स्थिति जानकारी
GARTerrainAnchorStateTaskInProgress इलाका ऐंकर हाल ही में बनाया गया है. साथ ही, ARCore, Google Cloud पर ARCore एपीआई का इस्तेमाल करके ऐंकर की पोज़ (स्थिति) पता करने में मदद करता है.
GARTerrainAnchorStateSuccess इलाका ऐंकर सफलतापूर्वक होस्ट किया गया और अब उसे ट्रैक किया जा सकता है. अब अपने एआर अनुभव में कॉन्टेंट अटैच करने के लिए इसका इस्तेमाल किया जा सकता है.
गड़बड़ी की स्थिति समाधान करने की प्रक्रिया के दौरान कोई गड़बड़ी हुई है.

इलाके के ऐंकर की मौजूदा स्थिति देखने के लिए, GARAnchor.terrainState देखें:

switch (terrainAnchor.terrainState) {
case GARTerrainAnchorStateSuccess:
    // Terrain anchor finished resolving.
    break;
case GARTerrainAnchorStateTaskInProgress:
    // ARCore is contacting the ARCore API to resolve the Terrain anchor's pose.
    // Display some waiting UI.
    break;
case GARTerrainAnchorStateErrorUnsupportedLocation:
    // The requested anchor is in a location that isn't supported by the Geospatial API.
    break;
case GARTerrainAnchorStateErrorNotAuthorized:
    // An error occurred while authorizing your app with the ARCore API. See
    // https://developers.google.com/ar/reference/java/com/google/ar/core/Anchor.TerrainAnchorState#error_not_authorized
    // for troubleshooting steps.
    break;
case GARTerrainAnchorStateErrorInternal:
    // The Terrain anchor could not be resolved due to an internal error.
    break;
case GARTerrainAnchorStateNone:
    // This Anchor isn't a Terrain anchor or it became invalid because the Geospatial Mode was
    // disabled.
    break;
}

आगे क्या