2011-12-07 35 views
8

Tôi cần phải tìm thời gian lái xe ước tính từ nơi này đến địa điểm khác. Tôi có những vĩ độ và kinh độ cho cả hai nơi nhưng tôi không biết làm thế nào để làm điều đó. Có API nào cho điều đó không. trợ giúp cảm ơn.Android - Cách nhận thời gian lái xe ước tính từ địa điểm này đến địa điểm khác?

+0

tại sao không sử dụng bản đồ google – Jeff

+0

Tôi chỉ cần thời gian dự kiến ​​không hướng ... –

Trả lời

10

có bạn nhận được giá trị thời gian và khoảng cách cũng như nhiều chi tiết về hướng lái xe, chế độ đi bộ, v.v. tất cả các bạn nhận được từ các dịch vụ google hướng api

kiểm tra của chúng tôi này liên kết

http://code.google.com/apis/maps/documentation/directions/

+0

Đối với thông tin chính xác + 1 –

+0

cảm ơn trả lời của bạn, nhưng đó là cho javascript tôi cần cho ứng dụng điện thoại android .. –

+1

bạn có thể sử dụng dịch vụ này trong android cũng chỉ cần bạn gọi dịch vụ bằng cách sử dụng gói http – Pratik

10
Location location1 = new Location(""); 
    location1.setLatitude(lat); 
    location1.setLongitude(long); 

    Location location2 = new Location(""); 
    location2.setLatitude(lat); 
    location2.setLongitude(long); 

    float distanceInMeters = location1.distanceTo(location2); 

EDIT:

//For example spead is 10 meters per minute. 
    int speedIs10MetersPerMinute = 10; 
    float estimatedDriveTimeInMinutes = distanceInMeters/speedIs10MetersPerMinute; 

Xin cũng thấy điều này, nếu ở trên không hoạt động cho bạn:

Calculate distance between two points in google maps V3

+0

tôi nghĩ rằng điều này sẽ trở lại km không thời gian –

+0

Điều này sẽ trả về khoảng cách tính theo mét & thats lý do tại sao tôi đã viết "Bây giờ bạn có distanceInMeters bạn có thể tính toán thời gian lái xe ước tính. " –

+0

bạn có thể cho tôi biết làm thế nào tôi có thể có được thời gian? –

1

Bạn cũng có thể sử dụng http://maps.google.com/maps?saddr= {START_ADDRESS} & daddr = {destination_address}

nó sẽ cung cấp một cách chi tiết hướng cùng với khoảng cách và thời gian ở giữa hai địa điểm

http://maps.google.com/maps?saddr=79.7189,72.3414&daddr=66.45,74.6333&ie=UTF8&0&om=0&output=kml

+0

cảm ơn câu trả lời của bạn nhưng tôi không cần url để điều hướng giữa hai địa điểm. Tôi cần thời gian di chuyển ước tính theo biến địa phương ... –

-2
Calculate Distance:- 
    float distance; 
      Location locationA=new Location("A"); 
      locationA.setLatitude(lat); 
      locationA.setLongitude(lng); 

      Location locationB = new Location("B"); 
      locationB.setLatitude(lat); 
      locationB.setLongitude(lng); 

      distance = locationA.distanceTo(locationB)/1000; 

      LatLng From = new LatLng(lat,lng); 
      LatLng To = new LatLng(lat,lng); 

      Calculate Time:- 
      int speedIs1KmMinute = 100; 
      float estimatedDriveTimeInMinutes = distance/speedIs1KmMinute; 
       Toast.makeText(this,String.valueOf(distance+ 
"Km"),Toast.LENGTH_SHORT).show(); 
      Toast.makeText(this,String.valueOf(estimatedDriveTimeInMinutes+" Time"),Toast.LENGTH_SHORT).show(); 
+0

Điều này không tính đến đường. Ví dụ, nó sẽ cho tôi biết tôi có thể lái xe từ California đến Hawaii. – Feathercrown

0

Như đã là described by Praktik, bạn có thể sử dụng API chỉ đường của Google để ước tính thời gian cần thiết để nhận được từ nơi này đến nơi khác để chỉ đường và lưu lượng truy cập vào tài khoản. Nhưng bạn không phải sử dụng API web và tạo trình bao bọc của riêng mình, thay vào đó hãy sử dụng Java implementation do chính Google cung cấp, có sẵn thông qua kho lưu trữ Maven/gradle.

  1. Add the google-maps-services to your app's build.gradle:

    dependencies { 
        compile 'com.google.maps:google-maps-services:0.2.5' 
    } 
    
  2. Thực hiện các yêu cầu và giải nén trong suốt thời gian:

    // - 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; 
    } 
    

Để đơn giản, mã này không xử lý ngoại lệ, các trường hợp lỗi (ví dụ như không tuyến đường tìm thấy -> routes.length == 0), cũng không làm phiền với nhiều hơn route hoặc leg. Nguồn gốc và đích đến cũng có thể được đặt trực tiếp như LatLng trường hợp (xem DirectionsApiRequest#origin(LatLng)DirectionsApiRequest#destination(LatLng)

Đọc thêm:.? android.jlelse.eu - Google Maps Directions API

Các vấn đề liên quan