2013-05-23 4 views
6

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

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

С одной точки она работает, например: "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» не запускается автоматически, мы должны выбрать одно приложение «Карты Google», а затем нажать «Маршрут» (в верхней части экрана n) запустить «Google Navigation». Я хотел бы избежать этого, если это возможно.

ответ

10

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

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

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

UPDATE

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

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

С помощью этого API можно построить URL с происхождением, назначением и путевыми точками и передать его на намерение

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

Я думаю, что я откажусь от своей идеи и буду благодарен вам за решение ;-) – bzhWarrior

+0

рад, что я смог помочь. – kushyar

+0

Есть ли способ добавить такие функции, как «Избегайте шоссе» в этом URL-адресе? – CopsOnRoad

0

Поскольку point1.longitude является двойной, вы должны использовать этот

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

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

+0

Я стараюсь это, но GoogleNav. все еще не понимает этот маршрут. Спасибо вам за помощь ;-) – bzhWarrior

-1

Вы должны просто пройти пункт назначения ция. Приложение 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); 
+0

Вопрос в том, чтобы указать _multiple_ местоположения, а не один. –

3

Проверьте эти 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); 
+0

Спасибо за ваш ответ, отлично работает. –

Смежные вопросы