如何为未知目的地实施 Google 路线 API?
How to implement Google Directions API for unknown destination?
我是 android 工作室的初学者,目前正在为我的期末项目创建自行车应用程序。在这些应用程序中,我需要实现地图和方向 API。我搜索教程,但他们都设定了目的地。在我的应用程序中,目的地是未知的。
如果我显示当前位置(自动)并在用户骑行时在地图中画一条线,则可以,请提供教程吗?如果我为这个项目使用一个免费的 API 密钥是可能的吗?
谢谢...
首先,这个方向API不是免费的。
第二,您需要为方向 API 路线提供起点和终点。
您可以使用当前位置作为起点,如果您没有目的地,那么您想在哪里画一条线?表示从您当前位置到哪里?
或者如果您想从起始位置到当前位置绘制一条跟踪线,那么您不需要方向 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);
}
// 此代码将从 Google 方向 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)));
}
// 使用此方法在您的地图上绘制 polyline/routes
private void addPolyline(DirectionsResult results, GoogleMap mMap) {
List<LatLng> decodedPath = PolyUtil.decode(results.routes[0].overviewPolyline.getEncodedPath());
mMap.addPolyline(new PolylineOptions().addAll(decodedPath));
}
我是 android 工作室的初学者,目前正在为我的期末项目创建自行车应用程序。在这些应用程序中,我需要实现地图和方向 API。我搜索教程,但他们都设定了目的地。在我的应用程序中,目的地是未知的。
如果我显示当前位置(自动)并在用户骑行时在地图中画一条线,则可以,请提供教程吗?如果我为这个项目使用一个免费的 API 密钥是可能的吗?
谢谢...
首先,这个方向API不是免费的。 第二,您需要为方向 API 路线提供起点和终点。 您可以使用当前位置作为起点,如果您没有目的地,那么您想在哪里画一条线?表示从您当前位置到哪里?
或者如果您想从起始位置到当前位置绘制一条跟踪线,那么您不需要方向 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);
}
// 此代码将从 Google 方向 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)));
}
// 使用此方法在您的地图上绘制 polyline/routes
private void addPolyline(DirectionsResult results, GoogleMap mMap) {
List<LatLng> decodedPath = PolyUtil.decode(results.routes[0].overviewPolyline.getEncodedPath());
mMap.addPolyline(new PolylineOptions().addAll(decodedPath));
}