Намерение Google навигации для маршрута с несколькими путевыми точками

Я хочу знать, можно ли поместить несколько "контрольных точек" в "Google Navigation" (Google Maps Navigation) с запросом, который следует за следующим синтаксисом : "google.navigation:q=44.871709,-0.505704...."

если это возможно, каков синтаксис для разделения двух точек ?

для одного пункта он работает, пример:"google.navigation:q=44.871709,-0.505704"

но я бы поставил несколько контрольных точек, например:

 LatLng point1 = new LatLng(44.871709,-0.505704);
 LatLng point2 = new LatLng(43.572665,3.871447);                    
 Intent(android.content.Intent.ACTION_VIEW,Uri.parse("google.navigation:q="+
 point1.latitude+","+point1.longitude+";"+ point2.latitude+","+point2.longitude));  

Я читал другие вопросы, они говорят, чтобы использовать этот синтаксис :

"http://maps.google.com/maps?saddr="+"44.871709,-0.505704"+"&daddr="+"43.572665,3.871447"

С над решением " Google Navigation "не запускается автоматически, мы должны выбрать одно приложение" Google Maps "и далее, чтобы нажать на маршрут (в верхней части экрана), чтобы начать"Google Navigation". Я бы хотел избежать этого, если возможно.

4 ответов


вот способ подавить диалог и перейти к картам напрямую.

String uri = "http://maps.google.com/maps?saddr="+"44.871709,-0.505704"+"&daddr="+"43.572665,3.871447";
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);

Дайте мне знать, если у вас все еще есть проблемы.

обновление

по состоянию на май 2017 года, есть лучший подход, Google Maps URLs API

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

используя этот API, вы можете создать URL-адрес с исходным, целевым и путевыми точками и передать его intent

String uri = "https://www.google.com/maps/dir/?api=1&origin=Madrid,Spain&destination=Barcelona,Spain&waypoints=Zaragoza,Spain%7CHuesca,Spain&travelmode=driving&dir_action=navigate";
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent); 

проверить эти 2 метода, оба из них работают правильно для меня.

метод 1:

    String packageName = "com.google.android.apps.maps";
    String query = "google.navigation:q=49.4839509,8.4903999";

    Intent intent = this.getPackageManager().getLaunchIntentForPackage(packageName);
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(Uri.parse(query));
    startActivity(intent);

Метод 2:

    String packageName = "com.google.android.apps.maps";
    String query = "google.navigation:q=49.4839509,8.4903999";

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(query));
    intent.setPackage(packageName);
    startActivity(intent);

потому что point1.долгота двойная, вы должны использовать это

String.valueOf(point1.latitude);

Intent(android.content.Intent.ACTION_VIEW,Uri.parse("google.navigation:q="+String.valueOf(point1.latitude)+","+String.valueOf(point1.longitude)+";"+String.valueOf( point2.latitude)+","+String.valueOf(point2.longitude)));  

или вы можете использовать это,но это так же.

point1.toString().replace("lat/lng: (", "").replace(")", "")

point1.toString () результат "lat/lng: (44.871709,-0.505704)", удалите "lat/lng: ("и")". тогда вы сможете получить желаемый результат.

Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr="+point1.toString().replace("lat/lng: (", "").replace(")", "")+"&daddr="+point2.toString().replace("lat/lng: (", "").replace(")", ""))); 

или вы можете попробовать этот

Uri uri = Uri.parse("http://maps.google.com/mapssaddr="+point1.toString().replace("lat/lng: (", "").replace(")", "")+"&daddr="+point2.toString().replace("lat/lng: (", "").replace(")", ""));
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

надеюсь, это поможет вам.


вы должны просто пройти место назначения. Приложение Google Maps автоматически примет ваше текущее местоположение для навигации.

Intent intent = new Intent(android.content.Intent.ACTION_VIEW,  Uri.parse("google.navigation:q=" + String.valueOf(destination latitude)
                        + "," + String.valueOf(destination longitude)));

startActivity(intent);