So I created a set of LatLng objects and passed them to the PolylineOptions object in an Android Google Map and saw the resulting shape as a circle.

But the problem was the edges are not smooth. When I zoom in to the map, the circular shaped PolyLine looks good. However, when I zoom out, the smallest circle I had looked like an octagon.

So how to we go about creating a smooth circular PolyLine shape in Android Maps v2?

The only way to accomplish this is to make use of Android Map Utils CircleOptions. Just pass in a center LatLng object and the radius and voila! A smooth circle Polyline shape.

To get the center point of a set of LatLng objects, you need to pass all of them to a LatLngBounds object.

Once you have the LatLngBounds object, you can easily get the center point by calling getCenter(). The LatLngBounds class also has a variable called northeast that returns a LatLng object representing the north east point of the bounds.

What you need to do then is to get the distance between these 2 points which we will use as the radius of the circle.

We can accomplish this by placing the 2 LatLng points inside a Location object and calling the Location class’ distanceTo() method.

That’s it! Add the LatLng center object to the CircleOptions class and set the distance as the radius of the circle.

Now you have a smooth well shaped circle no matter what zoom level your Google map is in.

If you have used the Apache HttpClient library, you may have encountered this error. Annoying as it is, there is a way to disable it and it must be set at the client level.

Check the sample code below.

Related Posts Plugin for WordPress, Blogger...