2011-12-07 6 views

risposta

10

sì, si ottiene il tempo e il valore della distanza nonché molti dettagli di direzione simili nella modalità di guida, camminata ecc. tutto ciò che hai dal servizio Google direzione api

controllare il nostro presente collega

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

+0

Per info esatto + 1 –

+0

grazie per la risposta, ma questo è per javascript ho bisogno per l'applicazione del telefono android .. –

+1

è possibile utilizzare questo servizio in Android anche solo è necessario chiamare il servizio utilizzando il pacchetto 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; 

Si veda anche questo, se sopra non lavori per tu:

Calculate distance between two points in google maps V3

+0

penso che questo restituirà km non tempo –

+0

Questo restituirà la distanza in metri e questo è il motivo per cui ho scritto "Ora hai la distanzaInMeters così puoi calcolare il tempo di guida stimato. " –

+0

puoi dirmi come posso avere tempo? –

-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

Questo non tiene conto delle strade. Ad esempio, mi direbbe che potrei guidare dalla California alle Hawaii. – Feathercrown

0

Come già described by Praktik, puoi utilizzare l'API delle indicazioni stradali di Google per stimare il tempo necessario per passare da un luogo all'altro tenendo conto delle indicazioni stradali e del traffico. Tuttavia, non è necessario utilizzare l'API Web e creare il proprio wrapper, ma utilizzare lo Java implementation fornito da Google stesso, disponibile tramite il repository 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. eseguire la richiesta ed estrarre la durata:

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

Per semplicità, questo codice non gestisce le eccezioni, i casi di errore (ad esempio non percorso trovato -> routes.length == 0), né si preoccupa di più di uno route o leg. Origine e destinazione possono essere impostate anche direttamente come LatLng istanze (vedi DirectionsApiRequest#origin(LatLng) e DirectionsApiRequest#destination(LatLng)

Ulteriori approfondimenti:.? android.jlelse.eu - Google Maps Directions API