अक्षांश और देशांतर मानों के साथ Android में एक स्थान ऑब्जेक्ट बनाना


138

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

मैं इन निर्देशांक, और मेरे वर्तमान स्थान के बीच की दूरी प्राप्त करना चाहता हूं।

स्थान वर्ग में दो स्थान वस्तुओं के बीच की दूरी को खोजने के लिए एक सरल विधि है, इसलिए मुझे लगा कि मैं निर्देशांक के साथ एक स्थान ऑब्जेक्ट बनाऊंगा, फिर विधि को कॉल करूंगा।

क्या इसे करने का कोई आसान तरीका है? इसके अलावा, अगर एक और विश्वसनीय, काफी सरल समीकरण है जो चीजों को बहुत ज्यादा अव्यवस्थित नहीं करेगा, तो यह भी काम करेगा। धन्यवाद।

(Android.location.Location)


देखो stackoverflow.com/questions/8049612/... के लिए और अधिक
पॉल थॉम्पसन

जवाबों:


309

यह मानते हुए कि आपके पास पहले से ही वर्तमान स्थान के साथ एक स्थान ऑब्जेक्ट है।

Location targetLocation = new Location("");//provider name is unnecessary
targetLocation.setLatitude(0.0d);//your coords of course
targetLocation.setLongitude(0.0d);

float distanceInMeters =  targetLocation.distanceTo(myLocation);

1
+1 इस उत्तर में टिप्पणियों के रूप में, हालांकि संक्षिप्त और सरल, वास्तविक रूप से अत्यंत उपयोगी थे। शुक्रिया @Exception अल
Subby

2
Android के लिए दस्तावेज़ीकरण का वास्तव में बुरा उदाहरण, इस पर काफी समय बर्बाद किया। मेरा दूसरा सवाल यह है कि मैं एक वैध प्रदाता प्रदान करता हूं जैसे कि जीपीएस, क्या यह मुझे वर्तमान स्थान देगा? दूसरे शब्दों में, प्रदाता का महत्व क्या है
उत्सव गुप्त

यदि आपको किसी स्थान ऑब्जेक्ट के लिए डिफ़ॉल्ट मान की आवश्यकता है और चूँकि आप इसे लेट / लोन के साथ प्रारंभ नहीं कर सकते हैं, तो मैं उन्हें एक स्थिर इनिशियलाइज़र में सेट करने का सुझाव देता हूं, जैसेstatic { location.setLatitude(0.0d); location.setLongitude(0.0d); }
जेसन हार्टले

हां, मैं 'डी' लिखने से चूक गया था और मैं स्थान ऑब्जेक्ट बनाने में सक्षम नहीं था। मूर्खतापूर्ण छोटी गलती
zulkarnain shah

1
जब मैं लेट और लोन को लोकेशन ऑब्जेक्ट पर सेट करता हूं तो यूनिट टेस्ट में इसका कोई प्रभाव नहीं पड़ता है। स्थान ऑब्जेक्ट किसी तरह अशक्त है?!?
इवोक्स

30

आप उनके निर्माता का उपयोग करके स्थान बना सकते हैं , फिर अक्षांश और देशांतर मान सेट कर सकते हैं।

final Location location = new Location("yourprovidername");
location.setLatitude(1.2345d);
location.setLongitude(1.2345d);

1

@ प्रतिबंध-जियोइंजीनियरिंग खाली छोड़ दें "" आवश्यक नहीं है।
अल्प अल्तुनेल

13

मैं फिर से इसका जवाब दे रहा हूं, क्योंकि मेरे जैसे बहुत से लोग नहीं जानते कि "providername"वास्तव में क्या है। नीचे दिए गए कोड का जवाब सवाल:

Location location = new Location(LocationManager.GPS_PROVIDER);
location.setLatitude(23.5678);
location.setLongitude(34.456);

यहां मैं LocationManager.GPS_PROVIDERप्रदाता नाम के रूप में उपयोग कर रहा हूं ।


क्यों LocationManager.GPS_PROVIDERऔर क्या कोई विकल्प है जिस पर हम विचार कर सकते हैं?
प्रतिबंध-जियोइंजीनियरिंग

1
2 और हैं, जो PASSIVE और NETWORK_PROVIDER है। यहाँ क्यों और क्या उपयोग के लिए अच्छा विवरण है। stackoverflow.com/questions/6775257/…
विजय E

1
यदि locationऑब्जेक्ट मैन्युअल रूप से बनाया जा रहा है, हालांकि, इसके बजाय खाली स्ट्रिंग का उपयोग करना अधिक उपयुक्त होगा LocationManager.GPS_PROVIDER, LocationManager.PASSIVEया LocationManager.NETWORK_PROVIDER?
प्रतिबंध-जियोइंजीनियरिंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.