2012-10-04 15 views
15

मैं अपने ऐप उपयोगकर्ता के स्थान का उपयोग करना चाहता हूं, विशेष रूप से अक्षांश और देशांतर मूल्य।आईओएस पर परिवर्तनीय में स्थान (अक्षांश और देशांतर मूल्य) कैसे प्राप्त करें?

मैं उन्हें, एक चर में उपयोग करने के लिए इतना है कि मैं उन्हें एक यूआरएल के साथ भेज सकते हैं की जरूरत है ...

मैं आईओएस और Xcode पर withe स्थानों पहले कभी नहीं काम किया है और इंटरनेट पर मेरी समस्या के लिए कुछ भी नहीं मिलान पाया। ..

तो मुझे आशा है कि किसी को एक कोड नमूना :)

Thx के साथ मेरे लिए यह समझाने यू जर्मनी

से मदद के लिए Laurenz

उत्तर

48

आप CoreLocation उपयोग कर सकते हैं देशांतर और अक्षांश प्राप्त करने के लिए कर सकते हैं।

नाविक में अपनी परियोजना के लिए क्लिक करें:

ढांचे को शामिल करें।

"पुस्तकालयों के साथ लिंक बाइनरी"

अपनी परियोजना के लिए CoreLocation जोड़े के तहत प्लस बटन पर क्लिक करें।

आयात हेडर फाइल:

#import <CoreLocation/CoreLocation.h> 

प्रचार CLLocationManager:

CLLocationManager *locationManager; 

प्रारंभ locationManager:

- (void)viewDidLoad 
{ 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; 
    [locationManager startUpdatingLocation]; 
} 

फिर, का उपयोग

float latitude = locationManager.location.coordinate.latitude; 
float longitude = locationManager.location.coordinate.longitude; 
+0

बिल्कुल सही, अपने तेज सहायता के लिए धन्यवाद :) –

16

कदम 1: अपनी परियोजना में CoreLocation ढांचे जोड़ें।

  1. करें लक्ष्य ->बिल्ड के चरण
  2. करें लिंक बाइनरी के साथ पुस्तकालय
  3. क्लिक पर प्लस (+) बटन। यह पॉप-अप ढांचे की सूची होगी।
  4. खोज कोरलोकेशन फ्रेमवर्क और जोड़ें।

Screenshot 1

Screenshot 2

कदम 2:,

#import <CoreLocation/CoreLocation.h> 

इसके अलावा इंटरफ़ेस में CLLocationManagerDelegate जोड़ें: दृश्य नियंत्रक के हेडर फाइल में नीचे दिए गए कोड लिखें जहां स्थान है प्राप्त किया जा करने के लिए। में, नीचे दिए गए कोड ViewDidLoad विधि लिखने:

अब, LocationManager

की वस्तु
CLLocationManager *locationManager; 

कदम 3 बनाने

locationManager = [[CLLocationManager alloc] init]; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; 
    [locationManager startUpdatingLocation]; 

    [locationManager requestAlwaysAuthorization]; //Note this one 

आप अब के रूप में kCLLocationAccuracyBest, kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyHundredMeters, kCLLocationAccuracyKilometer, kCLLocationAccuracyThreeKilometers

desiredAccuracy मूल्य निर्धारित कर सकते हैं, नीचे लिखने अक्षांश और देशांतर मान प्राप्त करने के लिए कोड

float Lat = locationManager.location.coordinate.latitude; 
    float Long = locationManager.location.coordinate.longitude; 
    NSLog(@"Lat : %f Long : %f",Lat,Long); 

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

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

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

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

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

    1. NSLocationWhenInUseUsageDescription
    2. NSLocationAlwaysUsageDescription

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

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

    1. [self.locationManager requestWhenInUseAuthorization]
    2. [स्व।locationManager requestAlwaysAuthorization]