android在谷歌地图上查找两点之间的距离和持续时间
我跟着图坦卡蒙来到这里 一切似乎都在运行,只有2个错误,我得到和每个人谁遵循图坦卡蒙 地图活动第一android在谷歌地图上查找两点之间的距离和持续时间,android,google-maps,Android,Google Maps,我跟着图坦卡蒙来到这里 一切似乎都在运行,只有2个错误,我得到和每个人谁遵循图坦卡蒙 地图活动第一 private List<LatLng> getDirectionPolylines(List<RouteObject> routes){ List<LatLng> directionList = new ArrayList<LatLng>(); for(RouteObject route : routes){
private List<LatLng> getDirectionPolylines(List<RouteObject> routes){
List<LatLng> directionList = new ArrayList<LatLng>();
for(RouteObject route : routes){
List<LegsObject> legs = route.getLegs();
for(LegsObject leg : legs){
String routeDistance = leg.getDistance().getText(); HERE
String routeDuration = leg.getDuration().getText(); HERE
setRouteDistanceAndDuration(routeDistance, routeDuration); // here we will send the route Duration and distent
List<StepsObject> steps = leg.getSteps();
for(StepsObject step : steps){
PolylineObject polyline = step.getPolyline();
String points = polyline.getPoints();
List<LatLng> singlePolyline = decodePoly(points);
for (LatLng direction : singlePolyline){
directionList.add(direction);
}
}
}
}
return directionList;
}
第二个错误在LegsObject类中
import java.util.List;
public class LegsObject {
private List<StepsObject> steps;
private DistanceObject distance;
private DurationObject duration;
public LegsObject(DurationObject duration, DistanceObject distance, List<StepsObject> steps) {
this.duration = duration;
this.distance = distance;
this.steps = steps;
}
public List<StepsObject> getSteps() {
return steps;
}
public DistanceObject getDistance() {
return distance;
}
public DurationObject getDuration() {
return duration;
}
}
我相信如果LegsObject.class中的第二个错误被修复,那么第一个错误也将被修复没有实现: 1) 距离对象类
public class DistanceObject{
private Integer value;
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
}
2) DurationObject类
public class DistanceObject{
private Integer value;
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
}
课程持续时间相同
public class DurationObject {
private String text;
private Integer value;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
}
Integer duration=routeA.getLegs().get(0).getDuration().getValue();
获得距离
Integer disInMeters=routeA.getLegs().get(0).getDistance().getValue();
int kilometers = (int) (disInMeters * 0.001); //convert in KM
获取持续时间
public class DurationObject {
private String text;
private Integer value;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
}
Integer duration=routeA.getLegs().get(0).getDuration().getValue();
有关更多帮助,请参见,您可以为此使用第三方库。它简单高效: 梯度依赖性:
compile 'com.akexorcist:googledirectionlibrary:1.0.4' // Custom Google Direction API \\
代码:
下面的方法将获取目的地的latLng,同样在方法内部,您应该有包含原点的latLng对象。服务器密钥是您的api密钥,您还应该启用GoogleDirections api来实现这一点
/**
* Draw polyline on map, get distance and duration of the route
*
* @param latLngDestination LatLng of the destination
*/
private void getDestinationInfo(LatLng latLngDestination) {
progressDialog();
String serverKey = getResources().getString(R.string.google_direction_api_key); // Api Key For Google Direction API \\
final LatLng origin = new LatLng(latitude, longitude);
final LatLng destination = latLngDestination;
//-------------Using AK Exorcist Google Direction Library---------------\\
GoogleDirection.withServerKey(serverKey)
.from(origin)
.to(destination)
.transportMode(TransportMode.DRIVING)
.execute(new DirectionCallback() {
@Override
public void onDirectionSuccess(Direction direction, String rawBody) {
dismissDialog();
String status = direction.getStatus();
if (status.equals(RequestResult.OK)) {
Route route = direction.getRouteList().get(0);
Leg leg = route.getLegList().get(0);
Info distanceInfo = leg.getDistance();
Info durationInfo = leg.getDuration();
String distance = distanceInfo.getText();
String duration = durationInfo.getText();
//------------Displaying Distance and Time-----------------\\
showingDistanceTime(distance, duration); // Showing distance and time to the user in the UI \\
// String message = "Total Distance is " + distance + " and Estimated Time is " + duration;
// StaticMethods.customSnackBar(consumerHomeActivity.parentLayout, message,
// getResources().getColor(R.color.colorPrimary),
// getResources().getColor(R.color.colorWhite), 3000);
//--------------Drawing Path-----------------\\
ArrayList<LatLng> directionPositionList = leg.getDirectionPoint();
PolylineOptions polylineOptions = DirectionConverter.createPolyline(getActivity(),
directionPositionList, 5, getResources().getColor(R.color.colorPrimary));
googleMap.addPolyline(polylineOptions);
//--------------------------------------------\\
//-----------Zooming the map according to marker bounds-------------\\
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(origin);
builder.include(destination);
LatLngBounds bounds = builder.build();
int width = getResources().getDisplayMetrics().widthPixels;
int height = getResources().getDisplayMetrics().heightPixels;
int padding = (int) (width * 0.20); // offset from edges of the map 10% of screen
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);
googleMap.animateCamera(cu);
//------------------------------------------------------------------\\
} else if (status.equals(RequestResult.NOT_FOUND)) {
Toast.makeText(context, "No routes exist", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onDirectionFailure(Throwable t) {
// Do something here
}
});
//-------------------------------------------------------------------------------\\
}
/**
*在地图上绘制多段线,获取路线的距离和持续时间
*
*@param LatLng目的地的目的地LatLng
*/
私有void getDestinationInfo(LatLng latLngDestination){
progressDialog();
String serverKey=getResources().getString(R.String.google_direction_api_key);//google direction api的api键\\
最终车床原点=新车床(纬度、经度);
最终latLngDestination=latLngDestination;
//-------------使用AK驱魔谷歌方向库---------------\\
GoogleDirection.withServerKey(serverKey)
.来自(原产地)
.至(目的地)
.运输模式(运输模式.驾驶)
.execute(新建DirectionCallback(){
@凌驾
public void onDirectionSuccess(方向、字符串主体){
dismissDialog();
字符串状态=direction.getStatus();
if(status.equals(RequestResult.OK)){
路由=direction.getRouteList().get(0);
Leg Leg=route.getLegList().get(0);
Info distance Info=leg.getDistance();
Info-durationInfo=leg.getDuration();
字符串距离=distanceInfo.getText();
字符串持续时间=durationInfo.getText();
//------------显示距离和时间-----------------\\
showingDistanceTime(距离、持续时间);//在UI中向用户显示距离和时间\\
//String message=“总距离为“+距离+”,预计时间为“+持续时间;
//StaticMethods.customSnackBar(consumerHomeActivity.parentLayout,消息,
//getResources().getColor(R.color.colorPrimary),
//getResources().getColor(R.color.colorWhite),3000);
//--------------绘图路径-----------------\\
ArrayList directionPositionList=leg.getDirectionPoint();
PolylineOptions PolylineOptions=DirectionConverter.createPolyline(getActivity(),
directionPositionList,5,getResources().getColor(R.color.colorPrimary));
添加多段线(多段线选项);
//--------------------------------------------\\
//-----------根据标记边界缩放地图-------------\\
LatLngBounds.Builder=新的LatLngBounds.Builder();
建造商。包括(原产地);
建造商。包括(目的地);
LatLngBounds bounds=builder.build();
int width=getResources().getDisplayMetrics().widthPixels;
int height=getResources().getDisplayMetrics().heightPixels;
int padding=(int)(宽度*0.20);//从地图边缘偏移屏幕的10%
CameraUpdate cu=CameraUpdateFactory.newLatLngBounds(边界、宽度、高度、填充);
谷歌地图。动画美人鱼(cu);
//------------------------------------------------------------------\\
}else if(status.equals(RequestResult.NOT_FOUND)){
Toast.makeText(上下文,“不存在路由”,Toast.LENGTH_SHORT.show();
}
}
@凌驾
公共方向失效(可丢弃t){
//在这里做点什么
}
});
//-------------------------------------------------------------------------------\\
}
您的DistanceObject类丢失了它看起来非常感谢,您救了我一天请尝试并告诉我!毕竟我发现你的ans容易多了,而且工作很好谢谢兄弟。。如果你接受我的回答,那就太好了。。。它将帮助其他人。。。如果你喜欢的话也可以投票…当然可以,你能看看我的其他问题吗?也许你可以提前帮我谢谢