2013-05-23 13 views
6

Chcę wiedzieć, czy jest możliwe, aby umieścić kilka „punktów kontrolnych” w ramach „Google Nawigacja” (Google Maps Navigation) z zapytaniem, który następuje następnego składnię: "google.navigation:q=44.871709,-0.505704...."Intent Google Nawigacja na trasie z wieloma punktami pośrednimi

Jeśli to możliwe, jaka jest składnia dwóch oddzielnych punktów?

Na jednym punkcie to działa, na przykład: "google.navigation:q=44.871709,-0.505704"

Ale chciałbym umieścić kilka punktów kontrolnych, na przykład:

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

czytałem pozostały problemy, mówią, aby skorzystać z tej składni:

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

W powyższym rozwiązaniu "Nawigacja Google" nie uruchamia się automatycznie, musimy wybrać jedną aplikację "Mapy Google", a następnie kliknąć Plan podróży (w górnej części ekranu) n), aby uruchomić "Nawigację Google". Chciałbym tego uniknąć, jeśli to możliwe.

Odpowiedz

10

Oto sposób na zablokowanie okna i bezpośrednie przejście do map.

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

Daj mi znać, jeśli nadal masz problemy.

UPDATE

W maju 2017 roku, nie ma lepszego podejścia, Mapy Google URL API

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

Używając tego interfejsu API można skonstruować URL z pochodzenia, przeznaczenia i waypointów i przekazać go do zamiaru

+0

Myślę, że zrezygnuję z mojego pomysłu i zachowam twoje rozwiązanie ;-) – bzhWarrior

+0

cieszę się, że mogłem pomóc. – kushyar

+0

Czy jest jakiś sposób dodania funkcji takich jak "Unikaj autostrad" w tym adresie URL? – CopsOnRoad

0

Ponieważ point1.longitude jest podwójny, należy użyć tego

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

Albo można to wykorzystać, ale jest tak samo.

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

point1.toString(), wynik jest "ac/ng (44,871709, -0,505704)" usunąć "Szerokość/LNG (" i ")". następnie można uzyskać pożądany wynik.

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(")", ""))); 

Albo możesz spróbować tej

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

Mam nadzieję, że to może pomóc.

+0

próbuję to ale GoogleNav. nadal nie rozumie tej trasy. Dziękuję za pomoc ;-) – bzhWarrior

-1

Musisz po prostu przekazać lokalizację docelową acji. Aplikacja Mapy Google automatycznie pobierze Twoją bieżącą lokalizację w celu nawigacji.

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

pytanie dotyczy określania _wielkich_ miejsc, a nie jednego. –

3

Sprawdź te dwie metody, obie z nich działają poprawnie dla mnie.

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

METODA 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

dziękuję za odpowiedź, działa idealnie. –

Powiązane problemy