我知道可以使用Google的方向网络服务获取坐标之间的方向。但是有没有其他方法可以获得同样准确的路线?
我发现很少有人使用http://maps.google.com/
来获取方向。但随后在其他问题上也找不到答案,这些问题表明它已不再受支持。
我很困惑,因为这是我第一次使用Google地图进行安卓。
是否有内置的Android sdk方法来获取方向?
答案 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可能会更改网址结构。