首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现未知目的地的Google Directions API?

如何实现未知目的地的Google Directions API?
EN

Stack Overflow用户
提问于 2019-11-18 00:19:33
回答 1查看 883关注 0票数 1

我是android工作室的初学者,目前正在为我的期末项目创建自行车应用程序。在这些应用程序中,我需要实现地图和方向API。我搜索教程,但它们都设置了目的地。在我的应用程序中,目的地是未知的。

如果我显示当前位置(自动),并在用户骑车时在地图上画一条线,请也给我一个教程?如果我为这个项目使用一个免费的API密钥是可能的吗?

谢谢..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-18 00:41:55

首先,这个方向的API不是免费的。其次,您需要为方向API路由提供起点和终点。您可以使用当前位置作为您的起点,如果您没有目的地,那么您想要在哪里绘制一条线?意思是从你现在的位置到哪里?

或者,如果您想绘制一条从起始位置到当前位置的跟踪线,那么您不需要Direction API,您只需要实时位置跟踪,并可以使用当前位置在地图上绘制折线。以下是用于帮助的代码。

要将该库添加到我们的应用程序中,我们需要将以下内容添加到build.gradle文件中。

代码语言:javascript
复制
implement 'com.google.maps:google-maps-services:0.1.20'

//先初始化地理上下文

代码语言:javascript
复制
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);
}

//此代码将从Google direction api获取从源到目的地的结果

代码语言:javascript
复制
    DateTime now = new DateTime();
    DirectionsResult result = DirectionsApi.newRequest(getGeoContext()).mode(TravelMode.DRIVING).origin(origin)
.destination(destination)
.departureTime(now).await();

//您可以使用此方法在地图上添加标记

代码语言:javascript
复制
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)));
}

//使用此方法在地图上绘制折线/路线

代码语言:javascript
复制
private void addPolyline(DirectionsResult results, GoogleMap mMap) {
    List<LatLng> decodedPath = PolyUtil.decode(results.routes[0].overviewPolyline.getEncodedPath());
    mMap.addPolyline(new PolylineOptions().addAll(decodedPath));
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58902534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档