Намерение 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);