How to Add Snap to Roads Google Map in Android Studio

后端 未结 1 1001
南笙
南笙 2020-12-20 07:00

Hello I would like to ask how to add Snap to Road when I have the route given by google map API. I have a bunch of Lat lang from point A line to point B line and draw a line

相关标签:
1条回答
  • 2020-12-20 07:22
    1. Get overview_polyline by Json and Gson (should use https://maps.googleapis.com/maps/api/directions/json?origin=...&destination=place_id:...&mode=DRIVING&key=...)
    2. Decode it to List by function

      public List<LatLng> decodePoly(String encoded) {
      // encoded is overview_polyline.points; 
      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;
      }
      

      3.Add to map:

      PolylineOptions polylineOptions= new PolylineOptions();
      polylineOptions.addAll(decodePoly(overview_polyline.points));
      mGoogleMap.addPolyline(polylineOptions.width(5).color(Color.BLUE).geodesic(false));
      
    0 讨论(0)
提交回复
热议问题