मेरे पास एक नक्शादृश्य है जहां मैं उपयोगकर्ता के वर्तमान स्थान को ट्रैक करना चाहता हूं। जीपीएस के साथ-साथ 'वायरलेस नेटवर्क का उपयोग' मेरे फोन सेटिंग्स में सक्रिय है। फिर भी, क्योंकि मैं इनडोर हूं, मुझे एक जीपीएस फिक्स नहीं मिलता है, इसलिए स्थान नेटवर्क के माध्यम से निर्धारित किया जाता है; वाईफाई स्पॉट उपलब्ध है।Google मानचित्र और मानचित्रदृश्य वाले ऐप्स के पास अलग-अलग स्थितियां हैं
मेरे पास Google मानचित्र ऐप चल रहा है साथ ही साथ मेरा एप्लिकेशन चल रहा है।
आश्चर्यजनक रूप से, वर्तमान स्थान Google मानचित्र और मेरे एप्लिकेशन के बीच भिन्न होता है, जहां मेरे ऐप में Google मानचित्र बहुत सटीक है, स्थान किसी भी तरह से 100 मीटर दूर है।
अपने आवेदन में मैं मूल रूप से करते हैं (अब डीबगिंग उद्देश्यों के लिए) के बाद:
1) शुरू में नक्शे पर एक मार्कर: geopoint locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
2 के माध्यम से लिया गया) शुरू में नक्शे पर किसी अन्य मार्कर : locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
के माध्यम से जियोपॉइंट पुनर्प्राप्त किया गया यह दोनों प्रदाताओं के अंतिम ज्ञात स्थानों को नक्शे पर (आखिर में आखिरी बार मेरे ऐप के बाहर से जाना जाता है) डाल देगा।
3) तो के लिए नियमित रूप से अपडेट (के बाद से मैं एक जीपीएस यहाँ वैसे भी घर के अंदर ठीक नहीं मिलता है), मुझे क्या करना:
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, baseLocationListener);
आप आवृत्ति और दूरी के लिए देख सकते हैं मैं में 0 परम पारित दोनों घटनायें।
ऐप्लिकेशन मेनिफेस्ट में, निम्न अनुमतियों प्रदान किए जाते हैं:
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION
असल में मेरी baseLocationListener कहा जाता हो जाता है, जो मैं लॉग में देखते हैं, लेकिन अपडेट किए गए स्थान को किसी भी तरह अंतिम ज्ञात वर्तमान स्थिति के समान ही है (LocationManager.NETWORK_PROVIDER का), वही lat/lng।
मैंने सोचा कि शायद मैंने कुछ अनदेखा किया है या पैरामीटर या सेटिंग को याद किया है, या मेरे कोड में एक बग है। इसलिए मैंने एंड्रॉइड मार्केट से कुछ अन्य (3 में कुल) एलबीएस ऐप इंस्टॉल किए जो वर्तमान उपयोगकर्ता के स्थान को भी दिखाते हैं। उन ऐप्स में प्रदर्शित वर्तमान स्थान मेरे आवेदन में से एक के बराबर हैं - और वे सभी 100 मीटर दूर हैं - लेकिन कम से कम सभी समान हैं। screenshot http://img33.imageshack.us/img33/8679/mapproblem.png
http://img33.imageshack.us/img33/8679/mapproblem.png
अब मैं सोच रहा हूँ:
1) के रूप में मैं समझता हूँ, getLastKnowLocation सिस्टम-वाइड और न एप्लिकेशन चौड़ा, क्यों हो रहा है
स्क्रीनशॉट यहाँ देखें Google मानचित्र और अन्य सभी ऐप्स में स्थान के बीच अंतर है?
2) क्या Google मानचित्र प्रदाता के अंतिम ज्ञात स्थान को अपडेट नहीं करता है?
3) गूगल मैप्स किसी भिन्न कस्टम स्थान प्रदाता (अर्थात लाइसेंस कारणों की वजह से) अन्य GPS_PROVIDER या NETWORK_PROVIDER से इस्तेमाल कर रहा है के रूप में वे SDK में कर रहे हैं?
4) Google मानचित्र जैसे नेटवर्क्स_PROVIDER के साथ सटीक परिणाम कैसे प्राप्त करें?
क्या यह संभव है कि Google मानचित्र सिर्फ जीपीएस से प्राप्त अंतिम स्थान का उपयोग कर रहा है, क्योंकि नेटवर्क के माध्यम से यह जानता है कि आप बहुत दूर नहीं गए हैं? दूसरे शब्दों में, Google मानचित्र ऐप जानता है कि आप अंदर गए थे (चूंकि जीपीएस चला गया था लेकिन नेटवर्क स्थान अभी भी उपलब्ध है), और इसलिए यह अंतिम ज्ञात जीपीएस पॉइंट स्टोर करता है और इसका उपयोग करता है? – Nate
मुझे ऐसा नहीं लगता है। मैंने एक ही समय में सभी अनुप्रयोगों को चलाया, इसलिए स्थिति एक ही समय में अलग नहीं होनी चाहिए। बस कुछ ही मिनट पहले मैंने इसे बाहर भी परीक्षण किया और लंबी दूरी के लिए बस पर भी चला गया। गूगल मैप्स एपीआई टाइल्स निश्चित रूप से गलत हैं, नीचे मेरा उत्तर देखें जो मूल रूप से इसे साबित करता है। इसके अलावा मैंने जीएसएम/वाईफ़ाई का उपयोग करके केवल जीपीएस के साथ परीक्षण किया, यह सब इसके परिणामस्वरूप। इसके अलावा, getLastKnowLocation सिस्टम-व्यापी है, ऐप-वाइड नहीं है। यदि Google मानचित्र इसका उपयोग करता है, तो मुझे अपने ऐप में भी वही स्थिति मिलनी चाहिए। –
असल में, मुझे संभवतः Google मानचित्र के रूप में GetLastKnowLocation से वही लैट/एलएनजी मिलता है, लेकिन यह अलग-अलग गलत नक्शा टाइल्स पर गलत तरीके से प्रदर्शित होता है (वेब एपीआई से उदाहरण के रूप में नीचे जवाब देखें)। –