8

वर्तमान स्थान अक्षांश और देशांतर प्राप्त करने के लिए वर्तमान स्थान अक्षांश और देशांतर कैसे प्राप्त करें।आईओएस एसडीके 8.0

मैंने इसे आजमाया है। एक्सकोड 6.01 और आईओएस एसडीके 8.0

-(CLLocationCoordinate2D) getLocation{ 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    [locationManager startUpdatingLocation]; 
    CLLocation *location = [locationManager location]; 
    CLLocationCoordinate2D coordinate = [location coordinate]; 
    return coordinate; 
} 

- (void)getCurrentLocation{  
    CLLocationCoordinate2D coordinate = [self getLocation]; 
    NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; 
    NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude]; 
    NSLog(@"Latitude = %@", latitude); 
    NSLog(@"Longitude = %@", longitude); 
} 


- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    [self getCurrentLocation]; 

} 

यहां मैं सिम्युलेटर स्थान परिनियोजन 8.0 आईफोन सिम्युलेटर 4 एस को सक्षम करता हूं। डिवाइस पर भी यह काम नहीं कर रहा है।

@ALL कृपया मुझे बताएं, मैंने यहां क्या गलत किया है।

उत्तर

0

हां, सिम्युलेटर स्थान सेवाओं की एक अधिक सरलीकृत प्रस्तुति प्रदान करता है। वास्तव में CLLocationManager व्यवहार का परीक्षण करने का एकमात्र तरीका एक भौतिक उपकरण है।

समस्या यह है कि जब आप startUpdatingLocation पर कॉल करते हैं, तो इसका मतलब यह नहीं है कि आप तुरंत location पुनर्प्राप्त कर सकते हैं। (मुझे लगता है कि आप इसे किसी nil है या एक नकारात्मक horizontalAccuracy, जो स्थान अभी निर्धारित नहीं किया गया है इसका मतलब है मिल जाएगा।)

आप CLLocationManagerDelegate के अनुरूप होना चाहिए, और locationManager:didUpdateLocations:, जो अतुल्यकालिक रूप से कहा जाता है को लागू। इसलिए, आपको स्थान जानकारी का उपयोग करने से पहले इस विधि को कॉल करने के लिए इंतजार करना होगा। और, एक वास्तविक डिवाइस पर, आपको संभावित रूप से इस विधि को कई बार बुलाया जाएगा क्योंकि डिवाइस डिवाइस स्थान की जानकारी को परिष्कृत सटीकता के साथ परिशोधित करता है (उदाहरण के लिए आप horizontalAccuracy नंबर को एक स्थान अपडेट से दूसरे स्थान पर छोड़ सकते हैं)।


जाहिर है, आप शायद locationManager:didFailWithError: भी लागू करने के लिए है, तो समस्या का पता चला जा सकता है चाहता हूँ। startUpdatingLocation पर कॉल करने से पहले आपको शायद authorizationStatus, locationServicesEnabled, और requestWhenInUseAuthorization पर कॉल करना चाहिए।

0

ऐसा प्रतीत होता है कि हमें ios8 में स्थान सेवाओं को लागू करने के लिए कुछ और कार्य करने की आवश्यकता है। follow this discussion

+0

दोनों प्रतिनिधि विधि didFailWithError और didUpdateToLocation जोड़ा है, लेकिन यह तरीकों ट्रिगर नहीं कर रहे सभी – KkMIW

+0

पर कृपया अपनी .h फ़ाइल में CLLocationManagerDelegate को इस @interface DemoViewController की तरह जोड़ें: UIViewController Samin

+0

मैंने CLLocationManagerDel जोड़ा उदाहरण के लिए, अभी भी मुझे समस्या है। एसडीके आईओएस 7 को आईओएस 8 में अपग्रेड करने के बाद कुछ गड़बड़ है 8. – KkMIW

5

मैं इसे आईओएस 8.0 में यह पता लगाने मुद्दा

NSLocationAlwaysUsageDescription मैन्युअल आवेदन plist फ़ाइल में इस जोड़ने के लिए, स्ट्रिंग मान खाली छोड़ दें। यह प्रतिनिधि प्रतिनिधियों को कॉल करेगा। NSLocationAlwaysUsageDescription जोड़ने के बारे में कभी भी न भूलें जब तक कि आप इस प्रतिनिधि विधि को नहीं जोड़ते हैं, काम नहीं करेंगे। शेष कोड एक ही है। नियंत्रक वर्ग के लिए प्रतिनिधि तरीकों को जोड़ने के साथ।

स्थान में कोड की इस पंक्ति को जोड़ें प्रबंधक घोषणा कोड। आईओएस 8.0 के लिए [स्थान प्रबंधक अनुरोध हमेशा प्राधिकरण];

3

आईओएस 8 में, यह कोड चुपचाप विफल रहता है यानी आपको कोई त्रुटि या चेतावनी नहीं मिलेगी। यह पूछ शुरू करने के लिए स्थान प्रबंधक से अपने Info.plist

  • अनुरोध प्राधिकरण को

    1. एक महत्वपूर्ण जोड़ें:

      आप दो अतिरिक्त चीजें स्थान काम कर पाने के लिए क्या करने की जरूरत।

    Info.plist फ़ाइल में निम्न में से किसी एक या दोनों को जोड़ने की आवश्यकता है।

    1. NSLocationWhenInUseUsageDescription
    2. NSLocationAlwaysUsageDescription

    ये स्ट्रिंग प्रकार और मूल्य के हैं किसी भी संदेश वर्णन या खाली हो सकता है।

    अब आपको संबंधित स्थान विधि के लिए प्राधिकरण का अनुरोध करने की आवश्यकता है। का प्रयोग करें नीचे से किसी एक कॉल:

    1. [self.locationManager requestWhenInUseAuthorization]
    2. [self.locationManager requestAlwaysAuthorization]
  • +0

    अच्छा है .... !! बहुत समय बचाया –

    संबंधित मुद्दे