2012-09-20 15 views
5

हैलो दोस्त मैं जीपीएस के साथ सटीकता समस्या लेकिन इसकी हर समयIphone जीपीएस सटीक अक्षांश और देशांतर

-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 

    NSString *latstr = [NSString stringWithFormat:@"%f", newLocation.coordinate.latitude]; 
    NSString *longstring=[NSStringstringWithFormat:@"%f",newLocation.coordinate.longitude]; 

    if (abs(howRecent)>5.0) 
    { 
     [self.locationManager startUpdatingLocation]; 
     return; 
     } 
    if(abs(newLocation.horizontalAccuracy)<0.0f) 
    { 
     [self.locationManager startUpdatingLocation]; 
     return; 
    } 
    if(newLocation.horizontalAccuracy>65.0f) 
    { 
     [self.locationManager startUpdatingLocation]; 
     return; 
    } 
    self.latstring = [latstr copy]; 
    self.longstr = [longstring copy]; 

    if((updateLocationFirst||loadFirstView)) 
    {  
     [[NSUserDefaults standardUserDefaults]setObject:latstring forKey:@"Latitude"]; 
     [[NSUserDefaults standardUserDefaults]setObject:longstr forKey:@"Longitude"]; 
     [self displayParticularDaySpecial]; 
     loadFirstView=FALSE; 
     updateLocationFirst=FALSE; 
     [self.locationManager stopUpdatingLocation]; 
    } 
} 

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

+1

जिस तरह से 'abs (newLocation.horizontalAccuracy) <0.0f' कभी सच नहीं होगा, है ना? किसी संख्या का बिल्कुल मूल्य शून्य से कम कैसे हो सकता है? – Rob

उत्तर

1

क्या आपने अपने CLLocationManager में वांछित स्थानापरीक्षा सेट की है? डिफ़ॉल्ट रूप से सीमा कुछ हद तक चौड़ी है।

इसमें बहुत सटीक मूल्य प्राप्त करने में कुछ समय लगेगा।

2

आपको Location Awareness Programming Guide का संदर्भ लेना चाहिए जो आपके स्थान का निर्धारण करने के लिए उत्कृष्ट प्रोग्रामिंग उदाहरण प्रदान करता है।

जैसा कि आप उस दस्तावेज़ में डेमो में देखेंगे, जब आप start the standard location manager, तो आप आम तौर पर यह बताते हैं कि आपको किस सटीकता की आवश्यकता है। और एक बार जब आप स्थान प्रबंधक शुरू करते हैं, तो आपको इसे फिर से शुरू करने की आवश्यकता नहीं होती है (जैसा कि आप अपने कोड नमूने में कर रहे हैं)। didUpdateLocations विधि को बार-बार कहा जाएगा, बढ़ती सटीकता के साथ, सब कुछ स्वयं ही। आपको स्थान प्रबंधक को फिर से शुरू करने की आवश्यकता नहीं है ... जब तक आप इसे बंद नहीं करते हैं तब तक यह जारी रहता है। परिभाषा के अनुसार, यदि आप didUpdateLocations में हैं, तो इसका मतलब है कि यह पहले से ही चालू है।

मुझे यह भी पता है कि आप पुराने didUpdateToLocation का उपयोग कर रहे हैं। यदि आप आईओएस 6 के लिए प्रोग्रामिंग कर रहे हैं, तो आप वास्तव में didUpdateLocations का उपयोग करना चाहते हैं, जो कि CLLocationManagerDelegate विधि का वर्तमान संस्करण है।

अंत में, आप उल्लेख करते हैं कि आपका स्थान प्राप्त करने में काफी समय लगता है। यह बहुत संभव है। वास्तव में, कुछ क्षेत्रों में, आप कभी भी बहुत करीब नहीं होंगे (या किसी भी स्थान पर)। आपके ऐप को यह मानना ​​चाहिए कि सटीक स्थानों में कुछ समय लगेगा, और यदि आपको वास्तव में सटीक स्थान कभी नहीं मिलता है, तो आपको शानदार तरीके से संभालना चाहिए, जो बहुत संभव है।

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