Launching Google Maps Directions via an intent on Android

后端 未结 15 1425
小鲜肉
小鲜肉 2020-11-22 03:46

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

相关标签:
15条回答
  • 2020-11-22 04:11

    For multiple way points, following can be used as well.

    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);
    

    First set of coordinates are your starting location. All of the next are way points, plotted route goes through.

    Just keep adding way points by concating "/latitude,longitude" at the end. There is apparently a limit of 23 way points according to google docs. Not sure if that applies to Android too.

    0 讨论(0)
  • 2020-11-22 04:13

    Well you can try to open the built-in application Android Maps by using the Intent.setClassName method.

    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);
    
    0 讨论(0)
  • 2020-11-22 04:17

    try this

    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);
    
    0 讨论(0)
  • 2020-11-22 04:21

    You could use something like this:

    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);
    

    To start the navigation from the current location, remove the saddr parameter and value.

    You can use an actual street address instead of latitude and longitude. However this will give the user a dialog to choose between opening it via browser or Google Maps.

    This will fire up Google Maps in navigation mode directly:

    Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
        Uri.parse("google.navigation:q=an+address+city"));
    

    UPDATE

    In May 2017 Google launched the new API for universal, cross-platform Google Maps URLs:

    https://developers.google.com/maps/documentation/urls/guide

    You can use Intents with the new API as well.

    0 讨论(0)
  • 2020-11-22 04:22

    if you know point A, point B (and whatever features or tracks in between) you can use a KML file along with your intent.

    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);
    

    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

    0 讨论(0)
  • 2020-11-22 04:25

    Google DirectionsView with source location as a current location and destination location as given as a string

    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);
    }
    

    In the above destinationCityName is a string varaiable modified it as required.

    0 讨论(0)
提交回复
热议问题