दिलचस्प पोस्ट
आप फेसबुक पेज पर दीवार पर कैसे पोस्ट करते हैं (प्रोफ़ाइल नहीं) इस उदाहरण में सी में तार्किक अभिव्यक्तियों का शॉर्ट सर्किट व्यवहार एएसपी.NET वेब एपीआई में कई जीईटी विधियों के साथ एकल नियंत्रक प्रोग्रामिंग आईफोन पर मेमोरी उपयोग को पुनर्प्राप्त करें क्या कारण है कि मैं जेनेरिक सरणी प्रकार जावा में नहीं बना सकता? एक्सेल दस्तावेज़ के लिए माइम प्रकार सेट करना नीला कनेक्शन स्ट्रिंग सर्वोत्तम अभ्यास मैं कोष्ठक (राउंड ब्रैकेट) के बीच का पाठ कैसे निकाल सकता हूं? मैं अनुक्रमणिका से std :: vector <> तत्व को कैसे मिटाऊं? कैसे jquery में पाठ बॉक्स मूल्य सेट करने के लिए एंड्रॉइड एसएमएस रिसीवर काम नहीं कर रहा है UIWebView का उपयोग किए बिना आईफोन ऐप में यूट्यूब वीडियो चलाएं? X86 (-64) पर हस्ताक्षर किए गए और हस्ताक्षर किए गए गुणा करने के लिए अलग-अलग निर्देश क्यों हैं? स्ट्रिंग में वर्णों की आवृत्ति की गणना कैसे करें? जैक्सन गतिशील रूप से JsonIngnore बदलें

आईओएस 8 मैप किट ओबीजे-सी उपयोगकर्ता स्थान नहीं ले सकता

मैं आईओएस 8 में नक्शा किट के साथ ओबजे-सी न SWIFT का उपयोग कर रहा हूं। मुझे उपकरण स्थान नहीं मिल सकता है यह 0.00, 0.00 निर्धारित किया गया है और मुझे त्रुटि मिल रही है:

Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first. 

मैंने लागू किया है: (मैंने एक समय में केवल एक ही प्रयास किया है और कोई भाग्य नहीं है)

 if(IS_OS_8_OR_LATER) { [self.locationManager requestWhenInUseAuthorization]; [self.locationManager requestAlwaysAuthorization]; } [self.locationManager startUpdatingLocation]; 

और info.plist में

 NSLocationWhenInUseUsageDescription : App would like to use your location. NSLocationAlwaysUsageDescription : App would like to use your location. 

मुझे ऐप को मेरे स्थान का उपयोग करने की इजाजत देने के लिए प्रेरित किया जाता है लेकिन मेरे द्वारा कुछ भी बदलाव नहीं होने पर मैं सहमत हूं। स्थान 0.00, 0.00 के रूप में दिखाया जा रहा है

उपयोगकर्ता स्थान प्रदर्शित करने के लिए कोड:

 //Get Location self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.distanceFilter = kCLDistanceFilterNone; self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; [self.locationManager startUpdatingLocation]; MKCoordinateRegion region = { { 0.0, 0.0 }, { 0.0, 0.0 } }; region.center.latitude = self.locationManager.location.coordinate.latitude; region.center.longitude = self.locationManager.location.coordinate.longitude; region.span.longitudeDelta = 0.005f; region.span.longitudeDelta = 0.005f; [mapView setRegion:region animated:YES]; 

माइक।

** संपादित करें: नीचे जवाब देखें

Solutions Collecting From Web of "आईओएस 8 मैप किट ओबीजे-सी उपयोगकर्ता स्थान नहीं ले सकता"

मुझे यह काम करना पड़ा मैंने अपने कोड को नीचे पोस्ट किया है ताकि किसी और के मुद्दों पर सहायता मिल सके।

आईओएस 8 में मैपकिट मानचित्र दृश्य काम करने के लिए यहां मेरा पूरा कोड है

अपने AppName -Info.plist में कुंजी नाम के साथ एक नई पंक्ति जोड़ें:

 NSLocationWhenInUseUsageDescription 

या

 NSLocationAlwaysUsageDescription 

उस मान की एक स्ट्रिंग मान जिसे आप प्रदर्शित करना चाहते हैं:

 YourAppName would like to use your location. 

आपकी हेडर फाइल में (मैं ऐप का नाम -फिफ़िक्स.pch का उपयोग करता हूं, लेकिन आपका वीआईयूआई कंट्रोलर एच भी काम करेगा)

 #define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 

YourViewController.h

 #import <MapKit/MapKit.h> #import <MapKit/MKAnnotation.h> @interface YourViewController : UIViewController <MKMapViewDelegate, CLLocationManagerDelegate> { } @property(nonatomic, retain) IBOutlet MKMapView *mapView; @property(nonatomic, retain) CLLocationManager *locationManager; 

YourViewController.m

 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. mapView.delegate = self; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; #ifdef __IPHONE_8_0 if(IS_OS_8_OR_LATER) { // Use one or the other, not both. Depending on what you put in info.plist [self.locationManager requestWhenInUseAuthorization]; [self.locationManager requestAlwaysAuthorization]; } #endif [self.locationManager startUpdatingLocation]; mapView.showsUserLocation = YES; [mapView setMapType:MKMapTypeStandard]; [mapView setZoomEnabled:YES]; [mapView setScrollEnabled:YES]; } -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:YES]; self.locationManager.distanceFilter = kCLDistanceFilterNone; self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; [self.locationManager startUpdatingLocation]; NSLog(@"%@", [self deviceLocation]); //View Area MKCoordinateRegion region = { { 0.0, 0.0 }, { 0.0, 0.0 } }; region.center.latitude = self.locationManager.location.coordinate.latitude; region.center.longitude = self.locationManager.location.coordinate.longitude; region.span.longitudeDelta = 0.005f; region.span.longitudeDelta = 0.005f; [mapView setRegion:region animated:YES]; } - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800); [self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES]; } - (NSString *)deviceLocation { return [NSString stringWithFormat:@"latitude: %f longitude: %f", self.locationManager.location.coordinate.latitude, self.locationManager.location.coordinate.longitude]; } - (NSString *)deviceLat { return [NSString stringWithFormat:@"%f", self.locationManager.location.coordinate.latitude]; } - (NSString *)deviceLon { return [NSString stringWithFormat:@"%f", self.locationManager.location.coordinate.longitude]; } - (NSString *)deviceAlt { return [NSString stringWithFormat:@"%f", self.locationManager.location.altitude]; } 

का आनंद लें!

–Mike

यह कहीं भी नहीं लिखा है, लेकिन अगर आपका ऐप मैपकिट से शुरू होता है, तो आपको अभी भी एमबर्टन के जवाब को कार्यान्वित करने के बाद भी "त्रुटि संदेश" स्थान प्राधिकरण के लिए संकेत दिए बिना मैपकिटक स्थान अपडेट शुरू करने की कोशिश करनी होगी। इससे बचने के लिए, आपको मैपकिट से पहले एक नया दृश्य नियंत्रक बनाना होगा, और वहां स्थान प्रबंधक के प्रतिनिधियों को लागू करना होगा। मैंने इसे प्राधिकरण नियंत्रक कहा।

इसलिए, प्राधिकरण नियंत्रक में:

 #import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface MCIAuthorizationController : UIViewController <CLLocationManagerDelegate> @property (strong, nonatomic) CLLocationManager *locationManager; @end 

और प्राधिकरण नियंत्रक में।

 - (void)viewDidLoad { [super viewDidLoad]; // Location manager self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; // Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7. if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { [self.locationManager requestWhenInUseAuthorization]; } } #pragma mark - Location Manager delegates - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { NSLog(@"didUpdateLocations: %@", [locations lastObject]); } - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog(@"Location manager error: %@", error.localizedDescription); } - (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { if (status == kCLAuthorizationStatusAuthorizedWhenInUse) { [self.locationManager startUpdatingLocation]; [self performSegueWithIdentifier:@"startSegue" sender:self]; } else if (status == kCLAuthorizationStatusDenied) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location services not authorized" message:@"This app needs you to authorize locations services to work." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } else NSLog(@"Wrong location status"); } 

इसको आजमाओ:

  (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { if (status == kCLAuthorizationStatusAuthorizedWhenInUse) { self.mapView.showsUserLocation = YES; } 

आपका कोड ठीक दिखता है, हालांकि आपको अनुरोध कॉल करने की आवश्यकता नहीं है जब भी उपयोग करेंअनुमति और अन्य अनुरोधआपका प्राधिकरण, आपको एक को चुनें।

स्थानों को प्रदर्शित करने के लिए कोड अभी तक स्थान प्रबंधक को आवंटित कर रहा है, स्थान डेटा को तुरंत प्राप्त करने की अपेक्षा न करें।

आपको प्रतिनिधि विधि से बुलाए जाने तक इंतजार करना पड़ता है: -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
, तब self.locationManager.location भी सेट हो जाएगा।

माइक के उत्तर के अलावा, मैंने पाया कि दोनों [self.locationManager requestWhenInUseAuthorization]; और [self.locationManager requestAlwaysAuthorization]; के रूप में अपने कोड में प्रदर्शन काम नहीं करता है आपको केवल एक का उपयोग करना चाहिए

मैं मानता हूं कि एपीआई के हालिया / स्थिर संस्करण के साथ कुछ और बदलाव किए गए थे।

मुझे एक ही समस्या थी लेकिन plist फ़ाइल में इन दोनों पंक्ति को जोड़ने से मेरी समस्याएं हल हुई

 NSLocationWhenInUseUsageDescription 

तथा

 NSLocationAlwaysUsageDescription 

नोट: इन दोनों मानों का स्ट्रिंग विवरण प्रदान करना आवश्यक है आप निम्न में से किसी भी अपनी नियंत्रक फ़ाइल में उपयोग कर सकते हैं

 self.locationManager= [[CLLocationManager alloc] init]; self.locationManager.delegate=self; [self.locationManager requestAlwaysAuthorization]; 

इस कार्यक्षमता का उपयोग करने के लिए आपको अपने नियंत्रक में CLLOcationManagerDelegate को लागू करना होगा

स्वीकार्य जवाब बढ़ाने के लिए और यदि आप उपर्युक्त कार्यक्षमता के साथ एक नमूना प्रोजेक्ट बनाते हैं, तो CoreLocation और Mapkit चौखटे के अलावा, आप को UIKit , Foundation और CoreGraphics फ्रेमवर्क मैन्युअल रूप से Xcode 6 में भी जोड़ना पड़ सकता है।

दरअसल, मैं सीएस 1 9 3 पी लेक्चर 16 का अध्ययन कर रहा हूं, जो स्थान और मानचित्र दृश्य के बारे में है, और मैं आईओएस 8 में स्थान प्रबंधक का काम नहीं कर सका, जो वीडियो में क्या हुआ था। आपके जवाब को देखकर, मैं इसे काम कर सकता था

जानकारी में वर्णित के रूप में Info.plist संशोधित किया गया था (मैं NSLocationWhenInUseUsageDescription का उपयोग करता हूं)।

AddPhotoViewController.hn में परिभाषित किया गया था:

 #define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 

AddPhotoViewController.m में, निम्न कोड ViewDidLoad में जोड़ा गया था (self.image के बाद):

 #ifdef __IPHONE_8_0 if(IS_OS_8_OR_LATER) { [self.locationManager requestWhenInUseAuthorization]; } #endif 

प्राधिकरण को केवल एक बार पूछा जाएगा, पहली बार जब आप एप्लिकेशन लॉन्च करेंगे

निम्नलिखित AddPhotoViewController.h में भी जोड़ा गया था क्योंकि यह व्याख्यान 16 में नहीं कहा गया था:

 @property (nonatomic) NSInteger locationErrorCode; 

shouldPerformSegueWithIdentifier अन्य को शामिल करने के लिए संशोधित किया गया था अगर (! self.location):

 else if (![self.titleTextField.text length]) { [self alert:@"Title required"]; return NO; } else if (!self.location) { switch (self.locationErrorCode) { case kCLErrorLocationUnknown: [self alert:@"Couldn't figure out where this photo was taken (yet)."]; break; case kCLErrorDenied: [self alert:@"Location Services disabled under Privacy in Settings application."]; break; case kCLErrorNetwork: [self alert:@"Can't figure out where this photo is being taken. Verify your connection to the network."]; break; default: [self alert:@"Cant figure out where this photo is being taken, sorry."]; break; } return NO; } else { // should check imageURL too to be sure we could write the file return YES; } 

didFailWithError जोड़ा गया था:

 - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { self.locationErrorCode = error.code; }