मैं जिओ यूआरआई इंटेंट द्वारा लॉन्च किए गए मैप्स में मार्कर कैसे दिखा सकता हूं?


107

मेरे पास एक एप्लिकेशन है जहां मैं अपने विशिष्ट भू निर्देशांक के साथ Google मानचित्र लॉन्च करके विभिन्न स्थानों को दिखाना चाहता हूं (उस समय उपयोगकर्ता इनपुट द्वारा चुना गया)।

मैं वर्तमान में इसका उपयोग कर रहा हूं (वास्तविक अव्यक्त और लंबे समय के साथ। निश्चित रूप से।):

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?z=17"));
startActivity(intent);

यह बिल्कुल वही है जो मैं चाहता हूं, सिवाय इसके कि यह निर्दिष्ट बिंदु के लिए कोई संकेतक या मार्कर नहीं दिखाता है। यह केवल स्थान पर है।

क्या मानचित्र देखने के बिना मार्कर या कुछ और शामिल करने का कोई तरीका है?


लेबल ने हाल के मानचित्र अपडेट में दिखाना बंद कर दिया है .. क्या करें?
user2297550

जवाबों:


254

इसे इस्तेमाल करे:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
startActivity(intent);

यदि आप एक लेबल नहीं चाहते हैं, तो आप (लेबल + नाम) को छोड़ सकते हैं, और यह निकटतम सड़क या अन्य चीज़ों के आधार पर एक बेतरतीब ढंग से चुनेंगे, जो इसे प्रासंगिक मानते हैं।


इस URI को लागू करने के बाद मुझे ज़ूम सेट करने में समस्याएँ हैं। अब यह अप्रचलित प्रतीत हो रहा है
लकीमलाका

8
@mmm ...: आपको? z को & z में बदलना होगा। आपके पास केवल एक ही हो सकता है? एक उरी में। BAD: geo: N, M? Z = 10? Q = N, M (स्थान) GOOD: geo, N, z? 10 & q = N, M (स्थान)
Josh

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

3
ज़ूम को नजरअंदाज कर दिया जाता है क्योंकि यह एक भू-भाग के बजाय एक साधारण क्वेरी है। यहां जो होता है वह वास्तव में एक सामान्य क्वेरी है जो Google को भेजी जाती है, और फिर सर्वर इसके अनुरूप "खोज परिणाम" के साथ प्रतिक्रिया करता है। आप maps.google.com पर <lat>, <long> (लेबल + नाम) की खोज करने का प्रयास कर सकते हैं और उसी परिणाम को प्राप्त कर सकते हैं
रोबपावन

4
इसका उपयोग करना (या यहां कोई अन्य विधि जिसमें एक लेबल क्वेरी शामिल है) geo:भाग में जियोफोन को पूरी तरह से नजरअंदाज कर देता है, लिक रॉबपवन ने बताया। कुछ मामलों में क्वेरी अव्यक्त / लंबे समय तक उपयोग करने में विफल हो जाएगी, और फिर आपको बस वापस जाने के लिए "कोई परिणाम नहीं" प्राप्त होगा, जो कि जियोफ़ोन पर गिरने के बजाय होगा। जीआईएस ऐप के किसी भी प्रकार के लिए बहुत उपयोगी नहीं है।
जोबिट्स

45

स्वीकृत उत्तर सही है, जब आपके लेबल में एक एम्परसेंड (&) है, सिवाय इसके।

को देखते हुए भौगोलिक स्थानों के लिए एक यूनिफ़ॉर्म रिसोर्स पहचानकर्ता ( 'भू' URI) :

खंड 5.1 स्थिति:

यदि अंतिम URI में 'क्वेरी' घटक शामिल करना है, तो घटक सीमांकक जोड़ें "?" परिणाम के अंत में, एन्कोडेड क्वेरी स्ट्रिंग के बाद।

हमारे लिए दुर्भाग्य से, ऐसा करने से '=' भी बच जाएगा जो कि हम नहीं चाहते हैं।

हमें यह करना चाहिए:

String label = "Cinnamon & Toast";
String uriBegin = "geo:12,34";
String query = "12,34(" + label + ")";
String encodedQuery = Uri.encode(query);
String uriString = uriBegin + "?q=" + encodedQuery;
Uri uri = Uri.parse(uriString);
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
startActivity(intent);

2
यह कार्यक्षमता नए Google मैप्स 7.x में टूट गई थी, यह भी देखें
कोड .google.com

42

आशय का उपयोग करके Google मानचित्र लॉन्च करने के कई और विकल्प हैं ...

   Double myLatitude = 44.433106;
   Double myLongitude = 26.103687;
   String labelLocation = "Jorgesys @ Bucharest";

1)

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<" + myLatitude  + ">,<" + myLongitude + ">?q=<" + myLatitude  + ">,<" + myLongitude + ">(" + labelLocation + ")"));
    startActivity(intent);

2)

String urlAddress = "http://maps.google.com/maps?q="+ myLatitude  +"," + myLongitude +"("+ labelLocation + ")&iwloc=A&hl=es";
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress));
    startActivity(intent);

3)

   String urlAddress = "http://maps.googleapis.com/maps/api/streetview?size=500x500&location=" + myLatitude  + "," + myLongitude + "&fov=90&heading=235&pitch=10&sensor=false";
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress));
        startActivity(intent);

2 के लिए जैसा दिखता है) "& iwloc = A & hl = es" वास्तव में आवश्यक नहीं है
ओलिवियर डी जॉंज

"Ilococ" का अर्थ है विंडो की जानकारी और भाषा के लिए "hl", यदि आप यह मान सेट नहीं करते हैं, तो डिफ़ॉल्ट मान लागू होते हैं। =)
जोर्जेस

आप )दूसरे तरीके से याद करते हैं।
सेन

यूपीएस! दूसरा और तीसरा विकल्प! धन्यवाद मैंने दोनों को तय किया है! ᕦ B • ᴥ • `ᕦ @ बारास
जोर्जेस

5

यह स्ट्रिंग मेरे लिए अच्छा काम करती है:

String geoUriString="geo:"+lat+","+lon+"?q=("+head+")@"+lat+","+lon;
Uri geoUri = Uri.parse(geoUriString);
Log.e(TAG, "String: "+geoUriString);
Intent mapCall  = new Intent(Intent.ACTION_VIEW, geoUri);
startActivity(mapCall);

2

भू के लिए (LocationMarkerName) को जोड़ने का प्रयास करें: uri। उदाहरण के लिए, "जियो:; z = 17 (स्थानमकरनाम)"

एंड्रॉइड पर Google मैप्स में 23.0980,30.6797 (NamedMarker) की खोज में, यह मानचित्र को केंद्र में रखता है और उस स्थिति में NamedMarker नाम के साथ एक मार्कर को प्रदर्शित करता है।


1

मैंने अभी @ स्नेंटन मूल्य से निम्नलिखित स्निपेट की पुष्टि की है जो अभी भी एंड्रॉइड 4.4 (किटकैट) पर काम करता है:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
startActivity(intent);

0

मैंने केवल मानचित्र के ऊपर मार्कर को आरेखित करने के लिए MapView के साथ ओवरले का उपयोग किया है। यदि आपका दृश्य आपके नक्शे को दिखा रहा है, तो स्क्रीन के केंद्र में अपने मार्कर को बस खींचना संभव हो सकता है, ठीक उसी तरह जैसे आप किसी दृश्य पर कोई चित्र खींचते हैं।

हालाँकि, मार्कर वास्तविक मानचित्र निर्देशांक से जुड़ा नहीं होगा, लेकिन यदि यह सिर्फ एक स्थिर दृश्य है, तो यह हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.