2013-05-23 16 views
6

Tôi muốn biết, nếu nó có thể đưa một số "trạm kiểm soát" trong "Google Navigation" (Google Maps Navigation) Với một truy vấn mà theo cú pháp sau: "google.navigation:q=44.871709,-0.505704...."Ý định đến Google Navigation cho hành trình với một số waypoints

Nếu có thể, cú pháp cho hai điểm riêng biệt là gì?

Đối với một thời điểm nó hoạt động, ví dụ: "google.navigation:q=44.871709,-0.505704"

Nhưng tôi sẽ đặt một vài điểm kiểm tra ví dụ:

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

Tôi đọc các vấn đề khác, họ nói để sử dụng cú pháp sau:

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

Với giải pháp trên, "Điều hướng của Google" không được khởi động tự động, chúng ta phải chọn một ứng dụng "Google Maps" và tiếp theo, để nhấp vào Hành trình (ở trên cùng của scree n) để bắt đầu "Điều hướng của Google". Tôi muốn tránh nó nếu có thể.

Trả lời

10

Đây là cách để chặn hộp thoại và chuyển trực tiếp đến bản đồ.

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

Hãy cho tôi biết nếu bạn vẫn gặp sự cố.

CẬP NHẬT

Tính đến tháng 5 năm 2017, có một cách tiếp cận tốt hơn, Google Maps API URL

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

Sử dụng API này bạn có thể xây dựng một URL với nguồn gốc, địa điểm và waypoints và chuyển cho mục đích

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

Tôi nghĩ rằng tôi sẽ từ bỏ ý tưởng của tôi và giữ cho giải pháp của bạn cảm ơn bạn ;-) – bzhWarrior

+0

vui vì tôi đã có thể giúp đỡ. – kushyar

+0

Có cách nào để thêm các tính năng như "Tránh Đường cao tốc" trong URL này không? – CopsOnRoad

0

Vì point1.longitude là Double Layer, bạn nên sử dụng này

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

Hoặc bạn có thể sử dụng điều này, nhưng nó chỉ là như nhau.

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

point1.toString() kết quả là "lat/lng: (44,871709, -0,505704)", loại bỏ các "lng lat /: (" và ")". sau đó bạn có thể nhận được kết quả mà bạn muốn.

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

Hoặc bạn có thể thử này

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

Tôi hy vọng điều này có thể giúp bạn.

+0

tôi cố gắng này, nhưng GoogleNav. vẫn không hiểu hành trình này. Cảm ơn bạn anyway cho sự giúp đỡ của bạn ;-) – bzhWarrior

-1

Bạn phải chỉ cần chuyển đến đích ation. Ứng dụng Google Maps sẽ tự động lấy vị trí hiện tại của bạn để điều hướng.

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

câu hỏi là về việc chỉ định vị trí _multiple_, không phải là một. –

3

Kiểm tra 2 phương pháp này, cả hai đều hoạt động đúng với tôi.

PHƯƠNG PHÁP 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); 

PHƯƠNG PHÁP 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

cảm ơn câu trả lời của bạn, hoạt động hoàn hảo. –

Các vấn đề liên quan