有没有聪明的方法(算法,API等),我可以估计两个地理位置之间的到达时间,这些地理位置只是两个人试图在地图上相互接触?
答案 0 :(得分:2)
Google Maps Directions Api提供了一种方法,可以让您获得两点之间旅行的估计行程时间,因此,如果您知道两个用户位置,则可以使用该位置。
例如,如果您发送https://maps.googleapis.com/maps/api/directions/json?origin=NewYork&destination=LosAngeles&mode=walking部分回复将包括
duration: {
text: "37 days 23 hours",
value: 3278737
}
实施细节取决于您的应用程序的工作方式,但api肯定是一个起点。
答案 1 :(得分:2)
您的问题无法直接解决。
然而谷歌提供google direction api。这个api给出了 你能够计算从一个地方到另一个地方的距离 并且还给出了估计的时间,但有这些限制 -
因此,为了达到你想要的目标,你必须自己做很多事情。主要是计算。
你需要的api是导航api。但不幸的是谷歌没有提供这个供公众使用。
希望这个答案可以帮到你。
答案 2 :(得分:1)
已经described by RJ Aylward,您可以使用Google的路线API来估算从一个地方到另一个地方所需的时间,并考虑路线和流量。但是,您不必使用Web API并构建自己的包装器,而是使用Google自身提供的Java implementation,可以通过Maven/gradle存储库获取。
Add the google-maps-services to your app's build.gradle:
dependencies {
compile 'com.google.maps:google-maps-services:0.2.5'
}
执行请求并提取持续时间:
// - Put your api key (https://developers.google.com/maps/documentation/directions/get-api-key) here:
private static final String API_KEY = "AZ.."
/**
Use Google's directions api to calculate the estimated time needed to
drive from origin to destination by car.
@param origin The address/coordinates of the origin (see {@link DirectionsApiRequest#origin(String)} for more information on how to format the input)
@param destination The address/coordinates of the destination (see {@link DirectionsApiRequest#destination(String)} for more information on how to format the input)
@return The estimated time needed to travel human-friendly formatted
*/
public String getDurationForRoute(String origin, String destination)
// - We need a context to access the API
GeoApiContext geoApiContext = new GeoApiContext.Builder()
.apiKey(apiKey)
.build();
// - Perform the actual request
DirectionsResult directionsResult = DirectionsApi.newRequest(geoApiContext)
.mode(TravelMode.DRIVING)
.origin(origin)
.destination(destination)
.await();
// - Parse the result
DirectionsRoute route = directionsResult.routes[0];
DirectionsLeg leg = route.legs[0];
Duration duration = leg.duration;
return duration.humanReadable;
}
为简单起见,此代码不处理异常,错误情况(例如找不到路由 - > gt; routes.length == 0),也不会处理多个route或leg 。原点和目的地也可以直接设置为LatLng
个实例(请参阅DirectionsApiRequest#origin(LatLng)
和DirectionsApiRequest#destination(LatLng)
。
进一步阅读:android.jlelse.eu - Google Maps Directions API
这是我在Android - How to get estimated drive time from one place to another?
给出的答案