My app needs to show Google Maps directions from A to B, but I don't want to put the Google Maps into my application - instead, I want to launch it using an Intent. Is this possible? If yes, how?
相关问题
- Delete Messages from a Topic in Apache Kafka
- Jackson Deserialization not calling deserialize on
- How can I create this custom Bottom Navigation on
- How to maintain order of key-value in DataFrame sa
- StackExchange API - Deserialize Date in JSON Respo
Google
DirectionsView
with source location as a current location and destination location as given as a stringIn the above
destinationCityName
is a string varaiable modified it as required.This is a little off-topic because you asked for "directions", but you can also use the Geo URI scheme described in the Android Documentation:
http://developer.android.com/guide/appendix/g-app-intents.html
The problem using "geo:latitude,longitude" is that Google Maps only centers at your point, without any pin or label.
That's quite confusing, especially if you need to point to a precise place or/and ask for directions.
If you use the query parameter "geo:lat,lon?q=name" in order to label your geopoint, it uses the query for search and dismiss the lat/lon parameters.
I found a way to center the map with lat/lon and display a pin with a custom label, very nice to display and useful when asking for directions or any other action:
NOTE (by @TheNail): Not working in Maps v.7 (latest version at the time of writing). Will ignore the coordinates and search for an object with the given name between the parentheses. See also Intent for Google Maps 7.0.0 with location
if you know point A, point B (and whatever features or tracks in between) you can use a KML file along with your intent.
for more info, see this SO answer
NOTE: this example uses a sample file that (as of mar13) is still online. if it has gone offline, find a kml file online and change your url
First you need to now that you can use the implicit intent, android documentation provide us with a very detailed common intents for implementing the map intent you need to create a new intent with two parameters
For action we can use
Intent.ACTION_VIEW
and for Uri we should Build it ,below i attached a sample code to create,build,start the activity.Although the current answers are great, none of them did quite what I was looking for, I wanted to open the maps app only, add a name for each of the source location and destination, using the geo URI scheme wouldn't work for me at all and the maps web link didn't have labels so I came up with this solution, which is essentially an amalgamation of the other solutions and comments made here, hopefully it's helpful to others viewing this question.
To use your current location as the starting point (unfortunately I haven't found a way to label the current location) then use the following
For completeness, if the user doesn't have the maps app installed then it's going to be a good idea to catch the ActivityNotFoundException, then we can start the activity again without the maps app restriction, we can be pretty sure that we will never get to the Toast at the end since an internet browser is a valid application to launch this url scheme too.
P.S. Any latitudes or longitudes used in my example are not representative of my location, any likeness to a true location is pure coincidence, aka I'm not from Africa :P
EDIT:
For directions, a navigation intent is now supported with google.navigation