如何为未知目的地实施 Google Directions API?
Posted
技术标签:
【中文标题】如何为未知目的地实施 Google Directions API?【英文标题】:How to implement Google Directions API for unknown destination? 【发布时间】:2020-03-13 02:42:11 【问题描述】:我是 android studio 的初学者,目前正在为我的最终项目创建骑行应用程序。在这些应用程序中,我需要实现地图和方向 API。我搜索教程,但它们都设置了目的地。在我的应用程序中,目的地是未知的。
如果我在用户骑行时显示当前位置(自动)并在地图中画一条线是可能的,请给一个教程?如果我为此项目使用免费 API 密钥,是否有可能?
谢谢...
【问题讨论】:
目的地未知是什么意思?用户需要设置吗? 请查看[doc] (developers.google.com/maps/documentation/android-sdk/start) 用户不设置目的地,取决于他要去哪里。因此,这些应用程序将跟踪用户从他开始的地方到他去的任何地方。对不起我的英语不好。 【参考方案1】:首先,这个方向的API不是免费的。 第二,您需要为方向 API 路由提供起点和终点。 您可以使用当前位置作为起点,如果您没有目的地,那么您想在哪里画一条线?是指从您当前的位置到哪里?
或者如果您想从起始位置到当前位置绘制一条跟踪线,那么您不需要 Direction API,您只需要实时位置跟踪,并且可以使用当前位置在地图上绘制折线。以下是您的帮助代码。
要将这个库添加到我们的应用程序中,我们需要将以下内容添加到我们的 build.gradle 文件中。
implement 'com.google.maps:google-maps-services:0.1.20'
// 首先初始化地理上下文
private GeoApiContext getGeoContext()
GeoApiContext geoApiContext = new GeoApiContext();
return geoApiContext.setQueryRateLimit(3)
.setApiKey(getString(R.string.directionsApiKey))
.setConnectTimeout(1, TimeUnit.SECONDS)
.setReadTimeout(1, TimeUnit.SECONDS)
.setWriteTimeout(1, TimeUnit.SECONDS);
// 此代码将从谷歌方向 api 获取从起点到终点的结果
DateTime now = new DateTime();
DirectionsResult result = DirectionsApi.newRequest(getGeoContext()).mode(TravelMode.DRIVING).origin(origin)
.destination(destination)
.departureTime(now).await();
//您可以使用此方法在地图上添加标记
private void addMarkersToMap(DirectionsResult results, GoogleMap mMap)
mMap.addMarker(new MarkerOptions().position(new LatLng(results.routes[0].legs[0].startLocation.lat, results.routes[0].legs[0].startLocation.lng)).title(results.routes[0].legs[0].startAddress));
mMap.addMarker(new MarkerOptions().position(new LatLng(results.routes[0].legs[0].endLocation.lat, results.routes[0].legs[0].endLocation.lng)).title(results.routes[0].legs[0].startAddress).snippet(getEndLocationTitle(results)));
// 使用此方法在地图上绘制折线/路线
private void addPolyline(DirectionsResult results, GoogleMap mMap)
List<LatLng> decodedPath = PolyUtil.decode(results.routes[0].overviewPolyline.getEncodedPath());
mMap.addPolyline(new PolylineOptions().addAll(decodedPath));
【讨论】:
感谢您的评论,它有很大帮助,我对我的最终项目感到困惑,因为截止日期和搜索错误的关键字。现在我知道我需要的是使用折线进行实时位置跟踪 您好,升级 api 级别 30 后折线在我的情况下没有绘制有什么解决方案吗?它将方向结果返回为 null以上是关于如何为未知目的地实施 Google Directions API?的主要内容,如果未能解决你的问题,请参考以下文章