How to draw a dynamic line (route) with Google Maps Android API v2

后端 未结 2 537
野趣味
野趣味 2021-02-10 01:07

I\'m wondering what the best practice is to draw a dynamic route on a map with the Google Maps API v2. I want to have a map that\'s able to prolong the route while the user is m

相关标签:
2条回答
  • 2021-02-10 01:21

    In the mainActivity class, define a private static LatLng variable named prev and initialize it to (0,0) first. Also make a flag variable and assign 0 to it. In the Listener's OnLocationChanged method, create a local variable LatLng named current and get current co-ordinates here... check the value of flag first, if it is 0 then assign current to prev. Then add a polyline.

    Assign current to prev again (this will happen every time as after the first time, the flag will be 1)

    For example:

    public void onLocationChanged(Location location) 
    {
    
        LatLng current = new LatLng(location.getLatitude(), location.getLongitude());
    
        if(flag==0)  //when the first update comes, we have no previous points,hence this 
        {
            prev=current;
            flag=1;
        }
        CameraUpdate update = CameraUpdateFactory.newLatLngZoom(current, 16);
        map.animateCamera(update);
        map.addPolyline((new PolylineOptions())
            .add(prev, current).width(6).color(Color.BLUE)
            .visible(true));
        prev=current;
        current = null;                    
    }
    

    Something like this. Of course performance improvements can be made, this is just an example code. But it should work. Every time the polyline will add only the previous and current point, thereby extending it point by point.

    0 讨论(0)
  • 2021-02-10 01:33

    Looking at the documentation, it appears that polylineOptions.add(LatLng) and googleMap.addPolyline(polylineOptions) methods return the polylineOptions object. The first method will also return polylineOptions WITH the point added to the end.

    I think you'll have to add the polylineOptions to googleMap.addPolyline(polylineOptions) again or use googleMap.clear() before adding it a second time. Somehting like this:

    polylineOptions = googleMap.addPolyline(polylineOptions);
    // googleMap.clear();
    googleMap.addPolyline(polylineOptions.add(point));
    
    0 讨论(0)
提交回复
热议问题