2009-02-24 12 views
6

मैं अपने आईफोन ऐप में जीपीएस कार्यक्षमता जोड़ने के साथ प्रयोग कर रहा हूं। यह एक कसरत ऐप है जिसका उपयोग चलने या चलाने के दौरान किया जाएगा। तो मैं जीपीएस का उपयोग करना चाहता हूं यह गति दिखाने के लिए कि व्यक्ति एमएफ और मिनट/मील में चल रहा है।आईफोन कोरलोकेशन: सबसे सटीक गति कैसे प्राप्त करें

मुझे CLLocationManager को कैसे कॉन्फ़िगर करना चाहिए ताकि मुझे सर्वोत्तम संभव परिणाम मिल सकें? मुझे वांछित सटीकता और दूरी क्या तय करना चाहिए?

distanceFilter = 10 और desiredAccuracy = kCLLocationAccuracyNearestTenMeters

और पढ़ने

CLLocation.speed संपत्ति

परीक्षण करते हुए अपनी कार में आसपास ड्राइविंग सटीकता अच्छा लगता है:

मैं के साथ की कोशिश की है कार स्पीडोमीटर की तुलना में हालांकि इसे अद्यतन करने में कुछ समय लगता है। मुझे एहसास है कि अद्यतन देरी बहुत अच्छी तरह से हो सकती है कि जीपीएस स्थान पूछने में कितना समय लगेगा, लेकिन मुझे यकीन नहीं है कि उपर्युक्त दो पैरामीटर बदलने से बेहतर परिणाम मिलेंगे।

क्या मुझे केसीएलएलोकेशन अकाउंटरीबेस्ट और दूरी के लिए कुछ अन्य मूल्य का उपयोग करना चाहिए?

मुझे गति प्राप्त करने के लिए कोरलोकेशन का उपयोग करके दूसरों से सुनने में दिलचस्पी है। अधिक सटीक परिणाम प्राप्त करने के लिए आप क्या कर रहे हैं?

उत्तर

3

अस्वीकरण: मैंने केवल कोरलोकेशन के साथ खेला है, मैंने सटीकता का परीक्षण बहुत बारीकी से नहीं किया है।

मुझे उम्मीद है कि आप दूरी के लिए डिफ़ॉल्ट का उपयोग करके सबसे सटीक परिणाम प्राप्त करेंगे फ़िल्टर और वांछित सटीकता। कम-से-कम अपडेट केवल आपको काम करने के लिए कम डेटा देने जा रहे हैं।

एक समस्या जो आप चलाने की संभावना रखते हैं वह तब होता है जब स्थान फ़िक्स थोड़ी देर के लिए खो जाता है, फिर वापस आता है। यात्रा की दूरी तय करने के लिए निष्पक्ष, कनेक्ट-द-डॉट दृष्टिकोण धावक की वास्तविक गति के अनुमान लगाने के लिए जा रहा है। CLLocation.speed का उपयोग करने के बजाय, आपको वास्तव में चलने वाले लाइन के कुछ ह्युरिस्टिक अनुमान के आधार पर गति की गणना करने के बेहतर परिणाम मिल सकते हैं।

5

सर्वोत्तम परिणामों के लिए, आपको केसीएलएलोकेशनएक्करसीबेस्ट का उपयोग करना चाहिए। जो आपने अपने दूरी के फ़िल्टर में डाल दिया है, उस पर निर्भर करता है कि आप किस गलतियों को रखना चाहते हैं। असल में, आपको सटीकता बनाम उपलब्धता के आधार पर निर्णय लेना होगा। यही वह समय है जब एक सर्वोत्तम सटीकता उत्तर उपलब्ध नहीं है, तो आप क्या प्रदर्शित करेंगे?

एक दृष्टिकोण यह है कि फ़ोन को कम-सटीक उत्तर देने दें और आखिरी बार आपके पास सटीक सटीकता की जानकारी के प्रक्षेपण का उपयोग करके, देखें कि क्या आपको समझ में आता है।

ऐसा लगता है कि मैं उत्तर में 6 मील प्रति घंटे जॉगिंग कर रहा हूं। आप मुझे प्वाइंट-ए, प्वाइंट-बी, पॉइंट-सी के साथ प्लॉट करते हैं ... फिर आपको कम सटीकता का उत्तर मिलता है (शायद केसीएल लोकेशनएक्वायरिएरिएस्ट 100 मीटर।) उस स्थान को देखो जहां यह कहता है कि मैं हूं और समझता हूं "क्या मैं इसे प्राप्त कर सकता था बिंदु-सी से स्पॉट अगर मैं अपने वर्तमान पथ के साथ जारी रखूंगा, तो गति में संभावित परिवर्तनों के लिए उचित समायोजन कर रहा हूं? " यदि ऐसा है, तो नया बिंदु संभावना के दायरे में है। (यदि नहीं, तो इसे टॉस आउट करें।) फिर पॉइंट-सी से मेरी आखिरी ज्ञात गति पर प्रोजेक्ट करें और पता लगाएं कि आप कहां सोचते हैं कि मैं शायद गेंदबाजी कर रहा हूं। इसे बैलिस्टिक-पॉइंट-डी के रूप में सहेजें।

बेशक, आप एक्सेलेरोमीटर का उपयोग कर रहे हैं ताकि मैं किस प्रकार की जड़ें महसूस कर सकूं, ठीक है?तो, आप दिशा नहीं जान सकते (आपको नहीं पता कि फोन किस तरह से इंगित कर रहा है), लेकिन आप दूरी पर उचित स्टैब बना सकते हैं।

इस सारी जानकारी का उपयोग करके, सबसे संभावित स्थान प्लॉट करें जहां आपको लगता है कि मैं शायद हूं।

नोट: परीक्षण करते समय, केवल सेल-सेल कवरेज क्षेत्रों में ड्राइव न करें। देखें कि आपका ऐप सेल फोन से दूर पहाड़ियों में कैसे प्रदर्शन करता है। बहुत से लोग बाइक & उन क्षेत्रों को जॉग करना पसंद करते हैं!