Search code examples
androidgoogle-mapsandroid-maps-v2

How to zoom camera to cover the path in android googlemap?


I have covered multiple locations in Google map using LatLng.Builder and it's working. Is there any way I could cover the whole path between two location in Google map?

My Curent Code to include multiple locations

builder = new LatLngBounds.Builder();
builder.include(LatLng1);
builder.include(LatLng2);
googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 17));

Any suggestion please?
Thanks


Solution

  • The solution was simple

    This might help someone in the future if looking for this sort of feature.

    This method is called after the google direction API returns the route from location A to B. directionPoints is the list of Points in the route.

    public void handleResult(ArrayList<LatLng> directionPoints)
        {
            PolylineOptions rectLine = new PolylineOptions().width(3).color(Color.RED);
            for(int i = 0 ; i < directionPoints.size() ; i++)
            {
                rectLine.add(directionPoints.get(i));
            }
    
            //this polyline is stored so that it can be removed by calling drawnRoutePath.remove() if needed
            drawnRoutePath = googleMap.addPolyline(rectLine);
            prepareBuilder(directionPoints);
            googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 17));
        }
    

    UPDATE

    The json response from the Google Direction API

    "routes" : [
          {
             "bounds" : {
                "northeast" : {
                   "lat" : 27.7136953,
                   "lng" : 85.32216629999999
                },
                "southwest" : {
                   "lat" : 27.7103725,
                   "lng" : 85.3214952
                }
             },
    .... etc
    

    So I used this bound's lat and lng as parameter to LatLngBounds.Builder.

    JSONObject jsonBound = ((JSONObject)jRoutes.get(i)).getJSONObject("bounds");
    JSONObject jsonSouthWest = jsonBound.getJSONObject("southwest");
    JSONObject jsonNorthEast = jsonBound.getJSONObject("northeast");
    LatLng boundSouthWest = new LatLng(jsonSouthWest.getDouble("lat"),jsonSouthWest.getDouble("lng"));
    LatLng boundNorthEast = new LatLng(jsonNorthEast.getDouble("lat"),jsonNorthEast.getDouble("lng"));
    ArrayList<LatLng> bounds = new ArrayList<LatLng>();
    bounds.add(boundNorthEast);
    bounds.add(boundSouthWest);
    

    and included these points in LatLngBounds.Builder