Запуск Google Maps Directions через намерение на Android - PullRequest
371 голосов
/ 18 апреля 2010

Мое приложение должно показывать направления Google Maps от А до В, но я не хочу помещать Google Maps в свое приложение - вместо этого я хочу запустить его с помощью Intent. Это возможно? Если да, то как?

Ответы [ 13 ]

2 голосов
/ 16 декабря 2014

попробуйте

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);
1 голос
/ 21 марта 2013

если вы знаете точку 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

0 голосов
/ 21 января 2017

Сначала вам нужно теперь, чтобы вы могли использовать неявное намерение, документация Android предоставляет нам очень подробные общие намерения для реализации намерения карты вам нужно создать новое намерение с двумя параметрами

  • Действие
  • Uri

Для действий мы можем использовать 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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...