无需使用Google方向网络服务即可在坐标之间获取方向

时间:2013-07-29 17:12:16

标签: android google-maps google-maps-android-api-2 driving-directions google-direction

我知道可以使用Google的方向网络服务获取坐标之间的方向。但是有没有其他方法可以获得同样准确的路线?

我发现很少有人使用http://maps.google.com/来获取方向。但随后在其他问题上也找不到答案,这些问题表明它已不再受支持。

我很困惑,因为这是我第一次使用Google地图进行安卓。

是否有内置的Android sdk方法来获取方向?

2 个答案:

答案 0 :(得分:2)

你可以向谷歌地图应用发送一个意图,并让应用程序为你做所有的工作,但没有记录,可能永远不会。

要做到这一点,你可以给它像这样的格子/经度

Intent NavIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=" +latitude +","+longitude));
startActivity(NavIntent);

或使用相同的意图但使用地址并查看地图是否可以解析地址。 (我没有地址的例子。)

除了使用谷歌路线API或其他第三方方向网络服务之外,没有其他方法可以在您的应用中获取路线,除非您查看Open Street Maps您自己使用路径点计算路线,但这是相当的参与

答案 1 :(得分:0)

我在我的应用程序中选择使用谷歌地图应用程序的意图,这里的理念是Android应用程序应该利用并互补功能

Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse(getDirectionUrl(srcLat, srcLng, dstLat, dstLng)));
if (isGoogleMapsInstalled(this)) {
    i.setComponent(new ComponentName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"));
}
startActivity(i);

构建路线网址的方法:

public static String getDirectionUrl (double srcLat, double srcLng, double dstLat, double dstLng) {
    //return google map url with directions 
    StringBuilder urlString = new StringBuilder();
    urlString.append("http://maps.google.com/maps?f=d&saddr=")
    .append(srcLat)
    .append(",")
    .append(srcLng)
    .append("&daddr=")
    .append(dstLat)
    .append(",")
    .append(dstLng);
    return urlString.toString();          
}

测试是否安装了地图的方法:

public static boolean isGoogleMapsInstalled(Context c)  {
        try
        {
            @SuppressWarnings("unused")
            ApplicationInfo info = c.getPackageManager().getApplicationInfo("com.google.android.apps.maps", 0 );
            return true;
        } 
        catch(PackageManager.NameNotFoundException e)
        {
            return false;
        }
    }

缺点是Google可能会更改网址结构。