android get and parse Google Directions

后端 未结 4 1475
没有蜡笔的小新
没有蜡笔的小新 2020-12-14 22:16

google Directions API

I read this guide now I can build a correct request to receive the xml file containg the directions from address A to address B. What I need is

相关标签:
4条回答
  • 2020-12-14 22:50

    you might want to have a quick view of the route that will be created by the waypoint_polyline and the coordinate list directly. For this google have release decoding api "Interactive Polyline Encoder Utility"

    You can paste the waypoint_polyline value to Encoded Polyline text field at address Interactive Polyline Encoder Utility

    0 讨论(0)
  • 2020-12-14 22:53

    I've tweaked urobo's answer above (very slightly) to give you LatLngs which you'll want for Google Maps for Android V2:

    private List<LatLng> decodePoly(String encoded) {
    
        List<LatLng> poly = new ArrayList<LatLng>();
        int index = 0, len = encoded.length();
        int lat = 0, lng = 0;
    
        while (index < len) {
            int b, shift = 0, result = 0;
            do {
                b = encoded.charAt(index++) - 63;
                result |= (b & 0x1f) << shift;
                shift += 5;
            } while (b >= 0x20);
            int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
            lat += dlat;
    
            shift = 0;
            result = 0;
            do {
                b = encoded.charAt(index++) - 63;
                result |= (b & 0x1f) << shift;
                shift += 5;
            } while (b >= 0x20);
            int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
            lng += dlng;
    
            LatLng p = new LatLng((double) lat / 1E5, (double) lng / 1E5);
            poly.add(p);
        }
        return poly;
    }
    
    0 讨论(0)
  • 2020-12-14 22:55

    I was also trying to use the Direction Api of Google in Android. So I made an open source project to help doing that. You can find it here:https://github.com/MathiasSeguy-Android2EE/GDirectionsApiUtils

    How it works, definitly simply:

    public class MainActivity extends ActionBarActivity implements DCACallBack{
    /**
     * Get the Google Direction between mDevice location and the touched location using the     Walk
     * @param point
     */
    private void getDirections(LatLng point) {
         GDirectionsApiUtils.getDirection(this, startPoint, endPoint, GDirectionsApiUtils.MODE_WALKING);
    }
    
    /*
     * The callback
     * When the directions is built from the google server and parsed, this method is called and give you the expected direction
     */
    @Override
    public void onDirectionLoaded(List<GDirection> directions) {        
        // Display the direction or use the DirectionsApiUtils
        for(GDirection direction:directions) {
            Log.e("MainActivity", "onDirectionLoaded : Draw GDirections Called with path " + directions);
            GDirectionsApiUtils.drawGDirection(direction, mMap);
        }
    }
    
    0 讨论(0)
  • 2020-12-14 22:59

    I found this example on the web I'll try to use it. polyline decoding example

    private List<GeoPoint> decodePoly(String encoded) {
    
      List<GeoPoint> poly = new ArrayList<GeoPoint>();
      int index = 0, len = encoded.length();
      int lat = 0, lng = 0;
    
      while (index < len) {
          int b, shift = 0, result = 0;
          do {
              b = encoded.charAt(index++) - 63;
              result |= (b & 0x1f) << shift;
              shift += 5;
          } while (b >= 0x20);
          int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
          lat += dlat;
    
          shift = 0;
          result = 0;
          do {
              b = encoded.charAt(index++) - 63;
              result |= (b & 0x1f) << shift;
              shift += 5;
          } while (b >= 0x20);
          int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
          lng += dlng;
    
          GeoPoint p = new GeoPoint((int) (((double) lat / 1E5) * 1E6),
               (int) (((double) lng / 1E5) * 1E6));
          poly.add(p);
      }
    
      return poly;
    }
    
    0 讨论(0)
提交回复
热议问题