2016-04-06 9 views
-1

İki Coğrafi konumlar ve bu Coğrafi konumlar arasındaki varış zamanını tahmin edebilir herhangi akıllı bir şekilde (vs algoritma, API,) var mı vardır?Android'de iki dinamik konum belirleme arasında tahmini varış zamanı nasıl alınır? Harita üzerinde birbirlerine ulaşmaya çalışıyorum iki kişi başka bir şey

+1

Olası yinelenen en vermek bir cevap - (https [Android başka bir yerden bir yere yolculuk süresini tahmin almak için nasıl?]: // stackoverflow. com/sorular/8410787/android-how-to-get-tahmini-drive-time-dan-bir-yerde-to-başka) – Murmel

cevap

2

Google Maps Directions Api Eğer iki nokta arasında bir yolculuk için tahmini seyahat süresini elde etmek için bir yol sağlar, böylece hem kullanıcıların konumlarını biliyorsanız bunu kullanmak olabilir. örneğin

Eğer yanıtın https://maps.googleapis.com/maps/api/directions/json?origin=NewYork&destination=LosAngeles&mode=walking parçası

duration: { 
     text: "37 days 23 hours", 
     value: 3278737 
    } 

Uygulama ayrıntıları nasıl uygulama işlerinde bağlıdır, ancak api kesinlikle bir başlangıç ​​noktası olabilir içerecektir gönderirseniz.

2

senin probleminin doğrudan bir çözüm yoktur.

Ancak google google direction api sağlar. Bu API Eğer yetenek başka için iki konum arasındaki mesafeyi hesaplamak için verir ve aynı zamanda tahmini zaman verir ama bunlar Kısıtlamalar

  1. ile bu dinamik statik değildir. Bu nedenle, iki konum sağlamanız gereken hareketli kişileri gerçekten hesaplayamazsınız ve bu, bu iki yerden uzaklık verecektir.
  2. Bu yoldan geçen mesafeyi verir. Böylece kendi yolunuzu gerçekten tanımlayamazsınız. Google yön api yolu, yolun gideceği mesafeyi verecektir.
  3. zaman, seyahat için ortalama süredir. Seyahat ettiğiniz hızı hesaba katmaz.

Yani kendiniz çok şey yapmak zorunda kalacaktır istediğinizi elde etmek için. hesaplamayı ana.

Gereksinim duyduğunuz api navigasyon api'dir. Ancak maalesef bu, google tarafından genel kullanıma sunulmuyor.

Bu cevabın size yardımcı olmasını umarım.

0

Daha önce described by RJ Aylward, tek bir yerden başka bir hesaba yön ve trafik alarak ulaşmak için gereken zamanı tahmin etmek için Google tarifi API kullanabilirsiniz. Ancak, web API'sini kullanmanız ve kendi sarıcınızı oluşturmanız gerekmez. Bunun yerine, Maven/gradle deposunda bulunan Google tarafından sağlanan Java implementation'u kullanın.

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

    dependencies { 
        compile 'com.google.maps:google-maps-services:0.2.5' 
    } 
    
  2. isteği yapar ve süresini ayıklamak:

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

Kolaylık olması açısından, bu kod istisnalar, hata durumlarda elde edememektedir (örn rota bulundu -> rotalar.length == 0), veya birden fazla route veyaile rahatsızlık duymuyor. Köken ve hedef doğrudan LatLng örnekleri olarak da ayarlanabilir (bkz. DirectionsApiRequest#origin(LatLng) ve DirectionsApiRequest#destination(LatLng).

fazla okuma: android.jlelse.eu - Google Maps Directions API

Bu benim zaten Android - How to get estimated drive time from one place to another?