2013-05-09 70 views
1

如果您将Google地图方向发送至您的Android手机,则可以在Maps应用程序中将其打开,这似乎非常合乎逻辑,背后的代码也是如此。Android导航意图

现在,一旦进入地图应用程序,您就可以在导航应用程序中打开这些方向,并确定这些方向。

这是如何工作的?它不能是很难做到这一点,我知道有

"google.navigation:q=..." 

意图,但在某些设备上,只用坐标或地址......没有地图的方向这只作品?

任何人都可以帮我解决这个问题吗?

编辑:

这就是URL的样子:

https://maps.google.com/maps?saddr=Durbanville,+Cape+Town,+Western+Cape,+South+Africa&daddr=Parow+North,+Cape+Town,+South+Africa+to:Somerset+West,+Cape+Town,+South+Africa+to:Milnerton,+Cape+Town,+South+Africa&hl=en&ll=-33.955037,18.657532&spn=0.25032,0.528374&sll=-33.911454,18.601913&sspn=0.250448,0.528374&geocode=FczB-_0dzIkcASlBKWkzGlfMHTFTuxOUSmpCAw%3BFQTi-v0d5oMbASld0qgMSFrMHTG2XqWY145Ttw%3BFfUG-P0dPHEfASk398T7ZbXNHTG5a6EH84n4Qg%3BFVU8-_0doEkaASnrz9UPVVnMHTFz2N4nnkA7XQ&oq=parow&mra=ls&t=m&z=12

回答

10

如果您创建的格式

http://maps.google.com/maps?saddr=[lat 1],[lon 1]&daddr=[lat 2],[lon 2] 

其中[LAT 1]的Web URL和[lon 1]是开始点的纬度和经度吨,并且同样[LAT 2][LON 2]是结束点,并将其设置为一个String,然后可以发送该一个intent

Intent navIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(navigationUrl)); 
activity.startActivity(navIntent); 

这将给用户打开网络浏览器的选项,谷歌地图导航

编辑:

对于多个目的地添加以下到URL的末尾(对于每个额外的地方)

+to:[lat 3],[lon 3] 
根据需要

因此,对于4个目的地,你将有:

http://maps.google.com/maps?saddr=[lat 1],[lon 1]&daddr=[lat 2], 
    [lon 2]+to:[lat 3],[lon 3]+to:[lat 4],[lon 4] 
+0

我意识到这是可能的,但我有一个具有至少4个目的地的路线的地图网址 – Schaemelhout 2013-05-09 10:39:23

+0

那么你没有在你的原始问题中指定...回答更新 – 2013-05-09 10:52:38

+0

谢谢,看我编辑的问题 – Schaemelhout 2013-05-09 10:56:37

0

上述以下的答案后,我发现自己在一个国家谷歌导航服务不可用。但导航意图仍然可以与谷歌地图通过此来完成:

Uri routeUri = Uri.parse("http://maps.google.com/maps?&saddr=" + 
           MyApplication.Lat + "," + 
           MyApplication.Lon + "&daddr=" + merchantAddr.getText()); 

Intent i = new Intent(Intent.ACTION_VIEW, routeUri); 
startActivity(i); 

看来,我们可以开始点中的地理位置与经/纬度,和终点设置为一个地址,反之亦然。地理位置似乎转换为Google地图中的地址或道路名称。