我正在开发一款Android应用,我正在使用谷歌地图。它运作良好。但
在用户点击“获取路线”后加载地图后,Google地图会显示方向线,但是无法轮流书写路线。如果您只是打开Google地图和获取路线,则可以在地图和路线列表之间来回切换。
是否有任何API可用于获取Android设备默认Google地图中提供的所有功能?
答案 0 :(得分:40)
获取方向和路线的最佳方式是,您可以使用Google地图的网络服务。它将为您提供一切。我在我的申请中使用了这个。
以下是saddr =源地址& daddr =目的地地址(即纬度和经度)。您也可以将字符串作为地址而不是lat / lng传递。
final Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://maps.google.com/maps?" + "saddr="+ latitude + "," + longitude + "&daddr=" + latitude + "," + longitude));
intent.setClassName("com.google.android.apps.maps","com.google.android.maps.MapsActivity");
startActivity(intent);
希望这会对你有所帮助。
答案 1 :(得分:8)
添加到Scorpion的代码(效果很好),您可能想要获取当前位置
Location currentLocation = googleMap.getMyLocation();
double latitudeCurr = currentLocation.getLatitude();
double longitudeCurr = currentLocation.getLongitude();
saddr
正在起始地址
daddr
是目的地地址
final Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("+http://maps.google.com/maps?" "saddr="
+ latitudeCurr + "," + longitudeCurr + "&daddr="
+ latitude + "," + longitude));
intent.setClassName("com.google.android.apps.maps",
"com.google.android.maps.MapsActivity");
startActivity(intent);
这是我在我的应用程序中使用的
答案 2 :(得分:4)
这应该是帮助Routing / Driving directions on Android by mobile.synyx.de
阅读 - >从谷歌地图获取地理位置
答案 3 :(得分:0)
这是一个解决方案。
下面的“意图”将要求您从当前的GPS位置逐步导航到澳大利亚悉尼的塔龙加动物园
Uri gmmIntentUri = Uri.parse("google.navigation:q=-33.846346,151.239518");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
您可以提供纬度和经度而不是位置名称。
{{1}}
检查here了解更多信息。
答案 4 :(得分:0)
截至2018年,Google已发布Google Maps Navigation SDK。您可以在I / O'18上看到以下Google Maps Platform演示,其中Google Maps Product Managers提到了SDK:
https://youtu.be/XVjyIA3f_Ic?t=20m31s
很遗憾,此SDK目前无法公开使用。您必须联系销售团队才能购买此SDK的许可证。如我所见,目前只有Uber或Lyft等大型乘车共享公司在其应用程序中使用此SDK。
或者,您可以使用Google Maps URLs以导航模式打开Google Maps应用。 Google Maps URL构建了一个通用的跨平台URL来启动Google Maps,因此您可以将它们与意图一起使用。
例如
String url = "https://www.google.com/maps/dir/?api=1&destination=Madrid,Spain&origin=Barcelona,Spain&travelmode=driving&dir_action=navigate";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
答案 5 :(得分:0)
为了获得(当前)导航逐向书面指示,目前唯一的方法是解析通知。
为了解决这个问题,我编写了一个开源库,可以在此过程中为您提供帮助(但需要通知访问权限):GMapsParser
您可以通过以下服务获取状态:
class NavigationListenerEmitter : NavigationListener() {
override fun onNavigationNotificationAdded(navNotification: NavigationNotification) {
Log.d("notificationListener", "Got initial notification $navNotification")
}
override fun onNavigationNotificationUpdated(navNotification : NavigationNotification) {
Log.d("notificationListener", "Got notification update $navNotification")
}
override fun onNavigationNotificationRemoved(navNotification : NavigationNotification) {
Log.d("notificationListener", "Removed notification $navNotification")
}
}
它还提供了一个实用程序类来将此类事件公开为可以轻松传递给活动的包裹。