जवाबों:
आप कुछ इस तरह का उपयोग कर सकते हैं:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345"));
startActivity(intent);
वर्तमान स्थान से नेविगेशन शुरू करने के लिए, saddr
पैरामीटर और मान निकालें ।
आप अक्षांश और देशांतर के बजाय एक वास्तविक सड़क पते का उपयोग कर सकते हैं। हालाँकि यह उपयोगकर्ता को ब्राउज़र या Google मानचित्र के माध्यम से इसे खोलने के बीच चयन करने के लिए एक संवाद देगा।
यह सीधे नेविगेशन मोड में Google मानचित्र को आग देगा:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("google.navigation:q=an+address+city"));
अपडेट करें
मई 2017 में, Google ने सार्वभौमिक, क्रॉस-प्लेटफ़ॉर्म Google मानचित्र URL के लिए नया API लॉन्च किया:
https://developers.google.com/maps/documentation/urls/guide
आप नए API के साथ Intents का भी उपयोग कर सकते हैं।
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
यह थोड़ा ऑफ-टॉपिक है क्योंकि आपने "निर्देश" मांगा था, लेकिन आप Android दस्तावेज़ों में वर्णित जियो यूआरआई योजना का भी उपयोग कर सकते हैं:
http://developer.android.com/guide/appendix/g-app-intents.html
"जियो: अक्षांश, देशांतर" का उपयोग करने में समस्या यह है कि Google मैप्स केवल किसी बिंदु पर, बिना किसी पिन या लेबल के केंद्र में हैं।
यह काफी भ्रामक है, खासकर अगर आपको किसी सटीक जगह की ओर इशारा करने की जरूरत है और / या दिशा-निर्देश मांगना है।
यदि आप क्वेरी पैरामीटर "जियो: लाट, लोन; क्यू = नेम" का उपयोग करते हैं, तो अपने भूगोल को लेबल करने के लिए, यह खोज और लाट / लोन मापदंडों को खारिज करने के लिए क्वेरी का उपयोग करता है।
मैंने लेट / लोन के साथ मानचित्र को केंद्र में रखने का एक तरीका पाया और कस्टम लेबल के साथ एक पिन प्रदर्शित किया, जो दिशाओं या किसी अन्य कार्रवाई के लिए पूछते समय प्रदर्शित करने और उपयोगी होने के लिए बहुत अच्छा था:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=37.423156,-122.084917 (" + name + ")"));
startActivity(intent);
नोट (@ TheNail द्वारा): मैप्स v.7 में काम नहीं कर रहा है (लेखन के समय नवीनतम संस्करण)। निर्देशांक की उपेक्षा करेंगे और कोष्ठक के बीच दिए गए नाम के साथ एक वस्तु की खोज करेंगे। स्थान के साथ Google मैप्स 7.0.0 के लिए इरादा भी देखें
geo:37.423156,-122.084917?q=37.423156,-122.084917 ...
?
यद्यपि वर्तमान उत्तर महान हैं, उनमें से कोई भी काफी नहीं था जो मैं देख रहा था, मैं केवल मैप्स ऐप खोलना चाहता था, प्रत्येक स्रोत स्थान और गंतव्य के लिए एक नाम जोड़ें, भू यूआरआई योजना का उपयोग करना मेरे लिए काम नहीं करेगा। सभी और मैप्स वेब लिंक में लेबल नहीं थे, इसलिए मैं इस समाधान के साथ आया, जो अनिवार्य रूप से यहां किए गए अन्य समाधानों और टिप्पणियों का एक समामेलन है, उम्मीद है कि यह इस सवाल को देखने वाले अन्य लोगों के लिए उपयोगी है।
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f(%s)&daddr=%f,%f (%s)", sourceLatitude, sourceLongitude, "Home Sweet Home", destinationLatitude, destinationLongitude, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
startActivity(intent);
अपने वर्तमान स्थान को शुरुआती बिंदु के रूप में उपयोग करने के लिए (दुर्भाग्य से मुझे वर्तमान स्थान को लेबल करने का कोई तरीका नहीं मिला है) तो निम्न का उपयोग करें
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?daddr=%f,%f (%s)", destinationLatitude, destinationLongitude, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
startActivity(intent);
पूर्णता के लिए, यदि उपयोगकर्ता के पास मैप्स ऐप इंस्टॉल नहीं है, तो एक्टिविटीनॉटफ़ाउंड एक्सेप्शन को पकड़ने के लिए यह एक अच्छा विचार है, तो हम मैप्स ऐप प्रतिबंध के बिना फिर से गतिविधि शुरू कर सकते हैं, हमें पूरा यकीन है कि हम कभी नहीं मिलेंगे अंत में टोस्ट के बाद से एक इंटरनेट ब्राउज़र इस url योजना को भी लॉन्च करने के लिए एक वैध अनुप्रयोग है।
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?daddr=%f,%f (%s)", 12f, 2f, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
try
{
startActivity(intent);
}
catch(ActivityNotFoundException ex)
{
try
{
Intent unrestrictedIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(unrestrictedIntent);
}
catch(ActivityNotFoundException innerEx)
{
Toast.makeText(this, "Please install a maps application", Toast.LENGTH_LONG).show();
}
}
पीएस मेरे उदाहरण में उपयोग किए गए कोई भी अक्षांश या देशांतर मेरे स्थान के प्रतिनिधि नहीं हैं, किसी भी स्थान की सत्यता की तुलना शुद्ध संयोग है, उर्फ मैं अफ्रीका से नहीं हूं: पी
संपादित करें:
निर्देशों के लिए, अब एक नेविगेशन आशय google.navigation के साथ समर्थित है
Uri navigationIntentUri = Uri.parse("google.navigation:q=" + 12f +"," + 2f);//creating intent with latlng
Intent mapIntent = new Intent(Intent.ACTION_VIEW, navigationIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
नवीनतम क्रॉस-प्लेटफ़ॉर्म Google मैप्स URL का उपयोग करना : भले ही Google मैप्स ऐप गायब हो, यह ब्राउज़र में खुलेगा
उदाहरण https://www.google.com/maps/dir/?api=1&origin=81.23444,67.0000&destination=80.252059,13.060604
Uri.Builder builder = new Uri.Builder();
builder.scheme("https")
.authority("www.google.com")
.appendPath("maps")
.appendPath("dir")
.appendPath("")
.appendQueryParameter("api", "1")
.appendQueryParameter("destination", 80.00023 + "," + 13.0783);
String url = builder.build().toString();
Log.d("Directions", url);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
अलग-अलग मोड के साथ इरादे का उपयोग करके Google मानचित्र खोलें:
हम आशय का उपयोग करके Google मैप्स ऐप खोल सकते हैं:
val gmmIntentUri = Uri.parse("google.navigation:q="+destintationLatitude+","+destintationLongitude + "&mode=b")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
यहां, "मोड = बी" साइकिल के लिए है।
हम उपयोग करके ड्राइविंग, चलना और साइकिल चलाना मोड सेट कर सकते हैं:
आप यहाँ Google मानचित्र के साथ आशय के बारे में अधिक जानकारी प्राप्त कर सकते हैं ।
नोट: यदि साइकिल / कार / चलने के लिए कोई मार्ग नहीं है, तो यह आपको दिखाएगा "वहाँ रास्ता नहीं खोज सकता"
वैसे आप बिल्ट-इन एप्लिकेशन एंड्रॉइड मैप्स को Intent.setClassName
विधि का उपयोग करके खोलने का प्रयास कर सकते हैं ।
Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse("geo:37.827500,-122.481670"));
i.setClassName("com.google.android.apps.maps",
"com.google.android.maps.MapsActivity");
startActivity(i);
कई तरह के बिंदुओं के लिए, निम्नलिखित का उपयोग किया जा सकता है।
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("https://www.google.com/maps/dir/48.8276261,2.3350114/48.8476794,2.340595/48.8550395,2.300022/48.8417122,2.3028844"));
startActivity(intent);
निर्देशांक का पहला सेट आपका प्रारंभिक स्थान है। अगले सभी मार्ग बिंदु हैं, प्लॉट किए गए मार्ग से होकर जाते हैं।
बस अंत में "/ अक्षांश, देशांतर" को जोड़कर रास्ते के बिंदुओं को जोड़ते रहें। जाहिरा तौर पर Google डॉक्स के अनुसार 23 तरह के बिंदुओं की सीमा है । यकीन नहीं होता कि Android पर भी लागू होता है।
यदि आप वर्तमान दिशा से अक्षांश और देशांतर दिखाने में रुचि रखते हैं, तो आप इसका उपयोग कर सकते हैं:
दिशा हमेशा उपयोगकर्ताओं से दी जाती है वर्तमान स्थान।
निम्नलिखित क्वेरी आपको ऐसा करने में मदद करेगी। आप यहाँ गंतव्य अक्षांश और देशांतर पास कर सकते हैं:
google.navigation:q=latitude,longitude
ऊपर का उपयोग करें:
Uri gmmIntentUri = Uri.parse("google.navigation:q=latitude,longitude");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
या यदि आप स्थान के माध्यम से दिखाना चाहते हैं, तो उपयोग करें:
google.navigation:q=a+street+address
यहाँ अधिक जानकारी: Android के लिए Google मैप्स इरादे
mapIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
DirectionsView
एक स्ट्रिंग के रूप में दिए गए वर्तमान स्थान और गंतव्य स्थान के रूप में स्रोत स्थान के साथ Google
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?f=d&daddr="+destinationCityName));
intent.setComponent(new ComponentName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
उपरोक्त destinationCityName
में एक स्ट्रिंग वैरिएबल है इसे आवश्यकतानुसार संशोधित किया गया है।
इसे इस्तेमाल करे
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr="+src_lat+","+src_ltg+"&daddr="+des_lat+","+des_ltg));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
यदि आप बिंदु A, बिंदु B (और बीच में जो भी सुविधाएँ या ट्रैक हैं) जानते हैं, तो आप अपने इरादे के साथ KML फ़ाइल का उपयोग कर सकते हैं।
String kmlWebAddress = "http://www.afischer-online.de/sos/AFTrack/tracks/e1/01.24.Soltau2Wietzendorf.kml";
String uri = String.format(Locale.ENGLISH, "geo:0,0?q=%s",kmlWebAddress);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);
अधिक जानकारी के लिए, यह SO उत्तर देखें
नोट: यह उदाहरण एक नमूना फ़ाइल का उपयोग करता है जो (मार्च 13 के अनुसार) अभी भी ऑनलाइन है। अगर यह ऑफ़लाइन हो गया है, तो ऑनलाइन एक kml फ़ाइल ढूंढें और अपना url बदलें
पहले आपको यह बताने की आवश्यकता है कि आप निहित इरादे का उपयोग कर सकते हैं, एंड्रॉइड प्रलेखन हमें मैप के कार्यान्वयन के लिए एक बहुत विस्तृत सामान्य इरादों के साथ प्रदान करता है आपको दो मापदंडों के साथ एक नया इरादा बनाने की आवश्यकता है
कार्रवाई के लिए हम उपयोग कर सकते हैं Intent.ACTION_VIEW
और उरी के लिए हमें इसका निर्माण करना चाहिए, नीचे मैंने गतिविधि बनाने, बनाने, शुरू करने के लिए एक नमूना कोड संलग्न किया है।
String addressString = "1600 Amphitheatre Parkway, CA";
/*
Build the uri
*/
Uri.Builder builder = new Uri.Builder();
builder.scheme("geo")
.path("0,0")
.query(addressString);
Uri addressUri = builder.build();
/*
Intent to open the map
*/
Intent intent = new Intent(Intent.ACTION_VIEW, addressUri);
/*
verify if the devise can launch the map intent
*/
if (intent.resolveActivity(getPackageManager()) != null) {
/*
launch the intent
*/
startActivity(intent);
}
<scheme>://<authority><absolute path>?<query>#<fragment>
, अपारदर्शी URI नहीं <scheme>:<opaque part>#<fragment>
। उपरोक्त कोड निम्न URI देता है: geo:/0%2C0?Eiffel%20Tower
जिसके कारण Google मैप्स ऐप क्रैश हो जाता है। यहां तक कि आधिकारिक दस्तावेज इस कारण से कच्चे / अपारदर्शी यूआरआई का उपयोग करता है। फिर सही कोड होगा:Uri.parse("geo:0,0?q=" + Uri.encode("Eiffel Tower"))
एक अच्छा कोटलिन समाधान, नवीनतम क्रॉस-प्लेटफ़ॉर्म उत्तर का उपयोग करके लक्ष्मण साई द्वारा ...
कोई अनावश्यक Uri.toString और Uri.parse हालांकि, यह उत्तर साफ और न्यूनतम है:
val intentUri = Uri.Builder().apply {
scheme("https")
authority("www.google.com")
appendPath("maps")
appendPath("dir")
appendPath("")
appendQueryParameter("api", "1")
appendQueryParameter("destination", "${yourLocation.latitude},${yourLocation.longitude}")
}.build()
startActivity(Intent(Intent.ACTION_VIEW).apply {
data = intentUri
})
आप इस तरह से एंड्रॉइड पर एक इरादे के माध्यम से Google मैप्स दिशाओं को लॉन्च कर सकते हैं
btn_search_route.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String source = et_source.getText().toString();
String destination = et_destination.getText().toString();
if (TextUtils.isEmpty(source)) {
et_source.setError("Enter Soruce point");
} else if (TextUtils.isEmpty(destination)) {
et_destination.setError("Enter Destination Point");
} else {
String sendstring="http://maps.google.com/maps?saddr=" +
source +
"&daddr=" +
destination;
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse(sendstring));
startActivity(intent);
}
}
});